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)];
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
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;
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
> : 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
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
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
^= : 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
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’;
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’;
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′;
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);
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
– : 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%’;
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′;
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%’;
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 ‘\’;
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;
FROM employee
WHERE manager_id = NULL;
SELECT id, last_name, manager_id
FROM employee
WHERE 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
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’;
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’;
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
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;
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;
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;
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;
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;
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’;
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′;
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);
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%’;
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%’;
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%’;
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′;
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%’;
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%’;
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_’;
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;
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;
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’;
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’;
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;
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;
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);
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;
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%’;
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%’;
FROM product
WHERE name LIKE ‘%Bicycle%’;
0 Response to "Oracle SQL & PL/SQL – 3. Menampilkan Data Tertentu"
Post a Comment
Monggo Berkomentar untuk Kemajuan yang Lebih Baik