Basis Data I Pertemuan Ke-11 (SQL Part 2) Noor Ifada noor.ifada@if.trunojoyo.ac.id 1
Sub Pokok Bahasan Operator Is Null Operator Between Operator In Operator Like Distinct Fungsi dalam Select: Count, Max, Min, Sum, Avg Union Join: Inner & Outer (Left/Right) 2
Operator IS NULL Digunakan untuk memilih baris (record) dalam kolom tertentu yang tidak memiliki nilai Contoh 1: Buat daftar seluruh pemain yang memiliki nomor liga! SELECT PLAYERNO, LEAGUENO FROM PLAYERS WHERE LEAGUENO IS NOT NULL Contoh 2: Cari nomor pemain yang tidak memiliki nomor liga! SELECT PLAYERNO FROM PLAYERS WHERE LEAGUENO IS NULL 3
Operator BETWEEN Contoh 3: Cari nomor dan tanggal lahir dari masing-masing pemain yang lahir antara tahun 1962 sampai 1964. Hasil: SELECT playerno, birth_date FROM Players WHERE Year(birth_date) BETWEEN 1962 AND 1964 PLAYERNO BIRTH_DATE 6 1964-06-25 44 1963-01-09 27 1964-12-28 7 1963-05-11 112 1963-10-01 8 1962-07-08 100 1963-02-28 28 1963-06-22 95 1963-05-14 4
Operator IN Contoh 4: Cari nomor, nama dan kota dari masing-masing pemain yang tinggal di Inglewood, Plymouth, Midhurst atau Douglas. SQL dengan OR: SELECT playerno, name, town FROM Players WHERE town = Inglewood OR town = Plymouth OR town = Midhurst OR town = Douglas SQL dengan IN: SELECT FROM WHERE playerno, name, town Players town IN ( Inglewood, Plymouth, Midhurst, Douglas ) 5
Operator LIKE Contoh 5: Dapatkan nama dan nomor dari masing-masing pemain yang memiliki huruf e pada posisi huruf sebelum huruf terakhir dari namanya. SELECT FROM WHERE name, playerno Players name LIKE '%e_'; Hasil: NAME PLAYERNO Parmenter 6 Baker 44 Miller 95 Bailey 112 Parmenter 100 6
Distinct Menghilangkan baris yang isinya sama Contoh 6: Cari nama-nama kota yang berbeda dalam tabel PLAYERS! Query: SELECT DISTINCT TOWN FROM PLAYERS 7
Fungsi dalam Select COUNT ( [ DISTINCT ALL ] { * <expression> } ) MIN ( [ DISTINCT ALL ] <expression> ) MAX ( [ DISTINCT ALL ] <expression> ) SUM ( [ DISTINCT ALL ] <expression> ) AVG ( [ DISTINCT ALL ] <expression> ) 8
Fungsi dalam Select: Count Contoh 7: Hitung jumlah pemain yang tercatat di dalam tabel PLAYERS! SELECT COUNT(*) FROM PLAYERS Contoh 8: Ada berapa nama kota yang tercatat di dalam kolom TOWN dalam tabel PLAYERS? SELECT COUNT(DISTINCT(TOWN)) FROM PLAYERS 9
Fungsi dalam Select: Max & Min Contoh 9: Berapakah jumlah penalti yang tertinggi? SELECT MAX(AMOUNT) FROM PENALTIES Contoh 10: Berapakah jumlah penalti yang terendah? SELECT MIN(AMOUNT) FROM PENALTIES 10
Fungsi dalam Select: Sum Hanya dapat digunakan pada ekspresi dengan tipe data numerik Contoh 11: Berapa banyak total SET yang telah dimenangkan, total SET yang telah kalah, dan berapa perbedaan di antara keduanya? SELECT SUM(WON),SUM(LOST),SUM(WON)-SUM(LOST) AS Difference FROM MATCHES 11
Fungsi dalam Select: Avg Contoh 12: Berapakah jumlah rata-rata penalti yang dilakukan oleh pemain nomor 44? SELECT AVG(AMOUNT) FROM PENALTIES WHERE PLAYERNO = 44 12
Operator Union UNION = (A ᑌ B) Aturan Penggunaan: klausa SELECT dari seluruh blok select harus memiliki jumlah ekspresi yang sama, dan hasil ekspresi yang akan ditempatkan dalam kolom yang sama dengan hasil ekspresi yang lainnya harus memiliki tipe data yang sama atau masih dapat ditransformasi menjadi tipe data yang sama klausa ORDER BY hanya dapat diletakkan setelah blok select yang terakhir di klausa SELECT tidak boleh mengunakan DISTINCT; SQL secara otomatis akan menghapus duplikasi baris yang memiliki nilai yang sama 13
Operator Union (contd-2) Contoh 13: Cari nomor dan tempat tinggal masing-masing pemain yang berasal dari Inglewood and Plymouth! Urutkan berdasarkan nomor pemain! Catatan: berasal dari Inglewood dan Plymouth berarti berasal dari Inglewood atau dari Plymouth. Dengan menggunakan operator UNION: SELECT PLAYERNO, TOWN FROM PLAYERS WHERE TOWN = 'Inglewood' UNION SELECT PLAYERNO, TOWN FROM PLAYERS WHERE TOWN = 'Plymouth' ORDER BY PLAYERNO; Solusi menggunakan operator OR: SELECT PLAYERNO, TOWN FROM PLAYERS WHERE TOWN = 'Inglewood' OR TOWN = 'Plymouth' ORDER BY PLAYERNO; 14
Join: Inner Contoh 14: Untuk masing-masing tim, carilah nomor tim dan nama kaptennya! Solusi menggunakan Equi JOIN : SELECT TEAMNO, NAME FROM PLAYERS P, TEAMS T WHERE P.PLAYERNO = T.PLAYERNO Solusi menggunakan INNER JOIN: SELECT FROM TEAMNO, NAME PLAYERS P INNER JOIN TEAMS T ON (P.PLAYERNO = T.PLAYERNO) 15
Join: Outer (Left/Right) Contoh 15: Untuk masing-masing pemain, buatlah daftar nama dan nomor teleponnya (jika memang terdaftar)! Khusus untuk pemain yang menjadi kapten suatu tim, cantumkan juga nomor timnya dan dan divisinya. Solusi menggunakan LEFT JOIN: SELECT FROM NAME, PHONENO, TEAMNO, DIVISION PLAYERS AS P LEFT JOIN TEAMS AS T ON P.PLAYERNO = T.PLAYERNO Solusi menggunakan RIGHT JOIN: SELECT FROM NAME, PHONENO, TEAMNO, DIVISION TEAMS AS T RIGHT JOIN PLAYERS AS P ON T.PLAYERNO = P.PLAYERNO 16