Oracle SQL & PL/SQL – 3. Menampilkan Data Tertentu

Pada pembahasan sebelumnya, kita telah mempelajari bagaimana cara menampilkan seluruh data dari suatu tabel. Kali ini kita akan mempelajari bagaimana menampilkan data tertentu sesuai dengan kriteria yang diinginkan.

3.1. Membatasi Hasil Query

Kita dapat membatasi hasil query dengan menggunakan klausa WHERE, yang mengandung kondisi yang kita inginkan, dan secara langsung mengikuti klausa FROM.

SELECT [DISTINCT] {*, column [alias], . . .}
FROM table
[WHERE condition(s)];

WHERE: menentukan kondisi yang akan digunakan untuk membatasi hasil query
condition(s): terdiri dari nama-nama kolom, ekspresi, konstanta, dan operator-operator pembanding

3.2. Operator-operator Pembanding

Operator-operator pembanding terbagi ke dalam dua kategori: logical dan SQL, dan digunakan dalam klausa WHERE untuk membandingkan suatu ekspresi dengan lainnya menggunakan format berikut:

. . . WHERE expr operator value

Contoh:

Menampilkan data karyawan yang bekerja pada departemen berkode 42.

SELECT last_name
FROM employee
WHERE dept_id = 42;

3.2.1. Operator-operator Pembanding Logical

= : sama dengan
> : lebih besar dari
>= : lebih besar atau sama dengan
< : lebih kecil dari
<= : lebih kecil atau sama dengan

3.2.2. Operator-operator SQL

BETWEEN . . . AND . . . : diantara dua nilai
IN (list) : sesuai dengan salah satu dari kumpulan nilai
LIKE : sesuai dengan susunan karakter
IS NULL : adalah bernilai null

3.2.3. Operator-operator Logical

AND : jika kedua komponen bernilai TRUE, hasilnya TRUE
OR : jika salah satu komponen bernilai TRUE, hasilnya TRUE
NOT : mengembalikan nilai sebaliknya

3.2.4. Negasi Operator-operator Logical

!= : tidak sama dengan (VAX, UNIX, PC)
^= : tidak sama dengan (IBM)
<> : tidak sama dengan (seluruh sistem operasi)
NOT colname = : tidak sama dengan
NOT colname > : tidak lebih besar dari

3.2.5. Negasi Operator-operator SQL

NOT BETWEEN . . . AND . . . : tidak diantara dua nilai
NOT IN (list) : tidak dalam kumpulan nilai yang ditentukan
NOT LIKE : tidak sesuai dengan string pembanding
NOT IS NULL: bukan merupakan nilai null

Jika kita ingin membandingkan nilai yang diketahui dengan nilai null, dapat menggunakan operator pembanding IS NULL atau IS NOT NULL. Jika kita membandingkan nilai null menggunakan operator-operator lain, hasilkan akan selalu FALSE.

Sebagai contoh, kondisi commission_pct <> NULL akan selalu FALSE karena nilai null tidak boleh sama atau tidak sama dengan nilai lain, bahkan dengan nilai null lainnya.’

3.3. Kumpulan Karakter dan Tanggal

Kumpulan karakter dan tanggal dalam klausa WHERE harus ditutup dengan tanda petik tunggal (’ ‘).

Contoh:

Menampilkan data karyawan yang memiliki nama belakang “Ngao”.

SELECT last_name, title
FROM employee
WHERE last_name = ‘NGAO’;

Seluruh kumpulan karakter adalah case sensitive, sehingga query diatas tidak menemukan hasil. Oleh karena itu, query diatas harus diubah sedemikian sehingga sesuai dengan data yang terdapat dalam tabel Karyawan.

SELECT last_name, title
FROM employee
WHERE last_name = ‘Ngao’;

3.4. Operator BETWEEN

Kita dapat menampilkan data berdasarkan jangkauan nilai tertentu menggunakan operator BETWEEN. Jangkauan yang kita tentukan adalah jangkauan rendah dan tinggi.

Contoh:

Menampilkan data karyawan yang mulai bekerja antara tanggal 9 Mei 1991 dan 17 Juni 1991.

SELECT last_name, hire_date
FROM employee
WHERE hire_date BETWEEN ‘09-MAY-91′ AND ‘17-JUN-91′;

3.5. Operator IN

Operator IN dapat digunakan untuk mengecek suatu nilai dalam daftar tertentu.

Contoh:

Menampilkan data departemen yang memiliki kode 1 dan 3.

SELECT id, name
FROM department
WHERE id IN(1,3);

Penggunaan karakter atau tanggal dalam daftar harus ditutup dengan tanda petik tunggal (’ ‘).

3.6. Operator LIKE

Kita mungkin tidak selalu mengetahui nilai tertentu secara pasti dalam proses pencarian. Kita dapat menampilkan baris data yang sesuai dengan susunan karakter tertentu menggunakan operator LIKE. Dua jenis simbol dapat digunakan untuk membangun string pencarian.

% : Menunjukkan beberapa urutan nilai karakter 0 atau lebih
– : Menunjukkan beberapa karakter tunggal

Contoh:

Menampilkan data karyawan yang memiliki nama berawalan huruf “M”.

SELECT last_name
FROM employee
WHERE last_name LIKE ‘M%’;Menampilkan data karyawan yang memiliki nama tidak mengandung huruf “a”.SELECT last_name
FROM employee
WHERE last_name NOT LIKE ‘%a%’;

Operator LIKE dapat digunakan sebagai jalan pintas bagi beberapa perbandingan menggunakan BETWEEN.

Contoh:

Menampilkan data karyawan yang mulai bekerja pada tahun 1991.

SELECT last_name, hire_date
FROM employee
WHERE hire_date LIKE ‘%91′;

3.7. Menggabungkan Karakter WILDCARD

Simbol % dan _ dapat digunakan dalam beberapa kombinasi dengan karakter biasa.

Contoh

Menampilkan data karyawan yang memiliki nama berawalan ‘_a’.

SELECT last_name
FROM employee
WHERE last_name LIKE ‘_a%’;

3.7.1. OPSI ESCAPE

Ketika kita memerlukan hasil yang benar-benar tepat bagi karakter-karakter aktual “%” dan “_” , kita dapat menggunakan opsi ESCAPE. Opsi ini menentukan apa karakter ESCAPE-nya.

Contoh:

Menampilkan data departemen dengan nama mengandung ‘X_Y’.

SELECT name
FROM department
WHERE name LIKE ‘%X\_Y%’ ESCAPE ‘\’;

3.8. Operator IS NULL

Operator IS NULL mengetes nilai yang null. Nilai null berarti nilai tersebut tidak tersedia, tidak diberikan, tidak diketahui, atau tidak dapat digunakan. Oleh karena itu, kita tidak dapat menggunakan “=” karena nilai null tidak dapat sama atau tidak sama dengan suatu nilai.

Contoh:

Menampilkan data karyawan yang tidak memiliki atasan.

SELECT id, last_name, manager_id
FROM employee
WHERE manager_id = NULL;

SELECT id, last_name, manager_id
FROM employee
WHERE manager_id = ‘ ‘;

Menampilkan data karyawan yang memiliki prosentase komisi.

SELECT last_name, title, commission_pct
FROM employee
WHERE commission_pct IS NOT NULL

3.9. Menampilkan Data Berdasarkan Beberapa Kondisi

Kita mungkin perlu menentukan kriteria kompleks dengan mengkombinasikan beberapa kondisi pencarian. Operator AND dan OR dapat digunakan. Operator AND menghasilkan nilai TRUE jika kedua kondisi bernilai TRUE, sedangkan operator OR menghasilkan nilai TRUE jika salah satu kondisi bernilai TRUE. Dalam dua contoh berikut , kondisinya sama, namun operator yang digunakan berbeda. Perhatikan bagaimana hasilnya berubah.

Contoh:

Menampilkan data karyawan yang memiliki jabatan ‘Stock Clerk’ dan bekerja pada departemen 41.

SELECT last_name, salary, dept_id, title
FROM employee
WHERE dept_id = 41 AND title = ‘Stock Clerk’;

Menampilkan data karyawan yang memiliki jabatan ‘Stock Clerk’ atau yang bekerja pada departemen 41.

SELECT last_name, salary, dept_id, title
FROM employee
WHERE dept_id = 41 OR title = ‘Stock Clerk’;

3.9.1. Aturan Evaluasi Operator

Kita mungkin mengkombinasikan operator-operator AND dan OR pada ekspresi logika yang sama. Hasil dari seluruh kondisi dikombinasikan dalam urutan yang ditentukan oleh evaluasi dari operator-operator yang terhubung. Operator yang memiliki urutan evaluasi yang sama digunakan selanjutnya satu sama lain, dicek dari kiri ke kanan.

1 : Seluruh operator pembanding (=,<>,>,>=,<,<=,IN, LIKE, IS NULL, BETWEEN)
2 : AND
3 : OR

Catatan: Ketika menggunakan ekspresi negasi, operator-operator pembanding tetap dievaluasi pertama.

Anda dapat mengabaikan evaluasi operator dengan menggunakan tanda kurung, Oracle akan mengevaluasi terlebih dahulu ekspresi-ekspresi dalam kurung.

Jika Anda ragu operasi mana diantara dua operasi yang dicek terlebih dahulu saat ekspresi dievaluasi, gunakan tanda kurung untuk memperjelas.

3.10. Latihan

Tampilkan nama belakang pegawai, kode departemen tempat pegawai tersebut bekerja, dan tanggal pegawai tersebut mulai bekerja, urut berdasarkan nama belakang pegawai secara ascending.

SELECT last_name, dept_id, start_date
FROM employee
ORDER BY last_name;

Tampilkan kembali soal diatas dengan ketentuan tampilkan urut berdasarkan nama belakang pegawai secara descending.

SELECT last_name, dept_id, start_date
FROM employee
ORDER BY last_name DESC;

Tampilkan nama belakang dan gaji tahunan pegawai urut berdasarkan gaji tahunan pegawai berdasarkan posisinya.

SELECT last_name, salary*12
FROM employee
ORDER BY 2;

Tampilkan nama belakang pegawai, kode departemen tempat pegawai tersebut bekerja, dan gaji bulanan pegawai, urut berdasarkan kode departemen dan gaji bulanan secara descending.

SELECT last_name, dept_id, salary
FROM employee
ORDER BY dept_id, salary;

Tampilkan kembali soal diatas tanpa urut, dengan ketentuan hanya pegawai yang bekerja pada departemen dengan kode 42 saja yang ditampilkan.

SELECT last_name, dept_id, salary
FROM employee
WHERE dept_id = 42;

Tampilkan nama depan, nama belakang, dan jabatan dari pegawai yang memiliki nama belakang Magee.

SELECT first_name, last_name, title
FROM employee
WHERE last_name = ‘Magee’;

Tampilkan nama depan, nama belakang pegawai, dan tanggal pegawai tersebut mulai bekerja, dimana hanya pegawai yang mulai bekerja antara 9 May 1991 dan 17 June 1991.

SELECT first_name, last_name, start_date
FROM employee
WHERE start_date BETWEEN ‘09-MAY-91′ AND ‘12-JUN-91′;

Tampilkan kode departemen, nama departemen, dan kode daerah tempat departemen tersebut berada, khusus untuk departemen pada kode daerah 1 dan 3.

SELECT id, name, region_id
FROM department
WHERE region_id IN (1,3);

Tampilkan nama belakang pegawai yang diawali dengan huruf M.

SELECT last_name
FROM employee
WHERE last_name LIKE ‘M%’;

Tampilkan nama produk khusus untuk nama produk yang diawali dengan Pro.

SELECT name
FROM product
WHERE name LIKE ‘Pro%’;

Tampilkan nama belakang pegawai yang tidak mengandung huruf a.

SELECT last_name
FROM employee
WHERE last_name NOT LIKE ‘%a%’;

Tampilkan nama belakang pegawai dan tanggal pegawai tersebut mulai bekerja, khusus pegawai yang mulai bekerja pada tahun 1991.

SELECT last_name, start_date
FROM employee
WHERE start_date LIKE ‘%91′;

Tampilkan nama belakang pegawai yang memiliki huruf kedua dari depan a.

SELECT last_name
FROM employee
WHERE last_name LIKE ‘_a%’;

Tampilkan kembali soal diatas khusus untuk nama produk yang mengandung kata Bicycle.

SELECT name
FROM product
WHERE name LIKE ‘%Bicycle%’;

Tampilkan nama belakang pegawai yang memiliki huruf kedua dari belakang a.

SELECT last_name
FROM employee
WHERE last_name LIKE ‘%a_’;

Tampilkan kode dan nama pelanggan yang tidak memiliki sales representative.

SELECT id, name
FROM customer
WHERE sales_rep_id IS NULL;

Tampilkan nama belakang, jabatan dan prosentase komisi pegawai khusus untuk pegawai yang mendapatkan komisi.

SELECT last_name, title, commission_pct
FROM employee
WHERE commission_pct IS NOT NULL;

Tampilkan nama belakang, gaji bulanan, jabatan pegawai, dan kode departemen tempat pegawai tersebut bekerja khusus untuk pegawai yang bekerja pada departemen dengan kode 41 dan memiliki jabatan Stock Clerk.

SELECT last_name, salary, title, dept_id
FROM employee
WHERE dept_id = 41 AND title = ‘Stock Clerk’;

Tampilkan kembali soal diatas, dengan ketentuan khusus untuk pegawai yang bekerja pada departemen dengan kode 41 atau pegawai yang memiliki jabatan StockClerk.

SELECT last_name, salary, title, dept_id
FROM employee
WHERE dept_id = 41 OR title = ‘Stock Clerk’;

Tampilkan nama belakang, gaji bulanan pegawai dan kode departemen tempat pegawai tersebut bekerja khusus untuk pegawai yang bekerja pada departemen dengan kode 42 atau 44, dan memiliki gaji lebih besar atau sama dengan 1000.

SELECT last_name, salary, dept_id
FROM employee
WHERE dept_id IN(42,44) AND salary >= 1000;

Tampilkan nama belakang dan gaji bulanan pegawai khusus untuk pegawai yang memiliki gaji bulanan tidak diantara 1000 dan 2500.

SELECT last_name, salary
FROM employee
WHERE salary NOT BETWEEN 1000 AND 2500;

Tampilkan nama belakang dan gaji bulanan pegawai khusus untuk pegawai yang memiliki gaji bulanan lebih dari 1350 dan bekerja pada departemen dengan kode 31, 42, atau 50. Untuk nama belakang beri judul Employee Name dan untuk gaji bulanan beri judul Monthly Salary.

SELECT last_name AS “Employee Name”, salary “Monthly Salary”
FROM employee
WHERE salary>1350 AND dept_id IN(31,42,50);

Tampilkan nama lengkap pegawai dengan judul Big Boss untuk pegawai yang tidak memiliki atasan.

SELECT first_name | | ‘ ‘ | | last_name AS “Big Boss”
FROM employee
WHERE manager_id IS NULL;

Tampilkan nama produk khusus untuk nama produk yang diawali dengan Pro.

SELECT name
FROM product
WHERE name LIKE ‘Pro%’;

Tampilkan kembali soal diatas khusus untuk nama produk yang mengandung kata Bicycle.

SELECT name
FROM product
WHERE name LIKE ‘%Bicycle%’;

Catatan:
Untuk mempraktekkan artikel-artikel mengenai Oracle SQL & PL/SQL Anda dapat mendownload script table disini, lalu jalankan sesuai live demo (browser Anda harus mendukung Flash Player).

SHARETHIS.addEntry({ title: “Oracle SQL & PL/SQL – 3. Menampilkan Data Tertentu”, url: “http://www.hastinapura.com/oracle-sql-plsql-menampilkan-data-tertentu/&#8221; });

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Follow

Get every new post delivered to your Inbox.

%d bloggers like this: