4 BAHASA BASIS DATA
1. LEFT JOIN 2. RIGHT JOIN
3. FULL JOIN
Untuk menjalankan perintah OUTHER JOIN ini akan digunakan tabel Pengarang dan tabel Penerbit. Secara relasi kedua tabel ini tidak ada hubungan sama sekali. Dan hanya mungkin di relasikan bedasarkan kota yang ada di tabel pengarang dan tabel penerbit tersebut.
Tabel 7-45 Pengarang
1176 213-46-8915
Marjorie Green Oakland
238-95-7766
Cheryl Carson Berkeley
267-41-2394 Michael O'Leary San Jose
274-80-9391 Dean Straight Oakland
341-22-1782
Meander Smith Lawrence
409-56-7008
Abraham Bennet Berkeley
427-17-2319 Ann Dull Palo Alto
472-27-2349
Burt Gringlesby Covelo
486-29-1786
Tabel 7-46 Penerbit
NamaPen Kota
New Moon Books Boston Binnet & Hardley Washington Algodata Infosistems Berkeley Five Lakes Publishing Chicago Ramona Publishers Dallas
GGG&G München
Scootney Books New York Lucerne Publishing Paris 2.38.1LEFTJOIN
Bentuk umum penulisan LEFT JOIN adalah sbb: SELECT nama_kolom
FROM nama_tabel_1
LEFT JOIN nama_tabel_2 ON relasi_tabel
Perintah LEFT JOIN ini akan menghasilkan seluruh baris data pada nama_tabel_1 (yang ada diseblah kiri) walaupun dalam relasi tidak singkron dengan nama_tabel_2 (disebelah kanan).
Ketika data tidak ditemukan pada nama_tabel_2, maka akan diberikan nilai NULL pada data tersebut.
Berikut perintah LEFT JOIN yang akan menampilkan data pengarang yang nama kotanya sesuai dengan kota penerbit
SELECT KodePeng, NamaPeng, Kota FROM Pengarang p
LEFT JOIN Penerbit t ON p.KotaTinggal=t.Kota
Tabel 7-47 Hasil Relasi Left Join
KodePeng NamaPeng Kota
172-32-1176 Johnson White NULL 213-46-8915 Marjorie Green NULL 238-95-7766 Cheryl Carson Berkeley 267-41-2394 Michael O'Leary NULL 274-80-9391 Dean Straight NULL 341-22-1782 Meander Smith NULL 409-56-7008 Abraham Bennet Berkeley 427-17-2319 Ann Dull NULL 472-27-2349 Burt Gringlesby NULL 486-29-1786 Charlene
Locksley
NULL
Penulisan klausa LEFT JOIN dapat juga dituliskan LEFT OUTER JOIN sehingga perintah SQL nya sbb:
SELECT KodePeng, NamaPeng, Kota FROM Pengarang p
LEFT OUTER JOIN Penerbit t ON p.KotaTinggal=t.Kota 2.38.2RIGHTJOIN
Bentuk umum penulisan RIGHT JOIN adalah sbb: SELECT nama_kolom
FROM nama_tabel_1
RIGHT JOIN nama_tabel_2 ON relasi_tabel
Perintah RIGHT JOIN ini akan menghasilkan seluruh baris data pada nama_tabel_2 (yang ada disebelah kanan) walaupun dalam relasi tidak singkron dengan nama_tabel_1 (disebelah kiri).
Ketika data tidak ditemukan pada nama_tabel_1, maka akan diberikan nilai NULL pada data tersebut.
Berikut perintah RIGHT JOIN yang akan menampilkan data pengarang yang nama kotanya sesuai dengan kota penerbit
SELECT KodePeng, NamaPeng, Kota FROM Pengarang p
RIGHT JOIN Penerbit t ON p.KotaTinggal=t.Kota
Tabel 7-48 Hasil Relasi Right Join
KodePeng NamaPeng Kota
NULL NULL Boston
NULL NULL Washington
238-95-7766 Cheryl Carson Berkeley 409-56-7008 Abraham Bennet Berkeley
NULL NULL Chicago
NULL NULL Dallas
NULL NULL München
NULL NULL New York
NULL NULL Paris
Penulisan klausa RIGHT JOIN dapat juga dituliskan RIGHT OUTER JOIN sehingga perintah SQL nya sbb:
SELECT KodePeng, NamaPeng, Kota FROM Pengarang p
RIGHT OUTER JOIN Penerbit t ON p.KotaTinggal=t.Kota 2.38.3FULL JOIN
Bentuk umum penulisan FULL JOIN adalah sbb: SELECT nama_kolom
FROM nama_tabel_1
FULL JOIN nama_tabel_2 ON relasi_tabel
Perintah FULL JOIN ini akan menghasilkan seluruh baris data pada nama_tabel_1 (yang ada disebalah kiri) dan akan menampilkan seluruh baris nama_tabel_1 (disebelah kanan) walaupun ada tidak singkron diantara keduanya.
Ketika data tidak ditemukan pada nama_tabel_1 dan nama_tabel_2, maka akan diberikan nilai NULL pada data tersebut.
Berikut perintah FULL JOIN yang akan menampilkan data pengarang yang nama kotanya sesuai dengan kota penerbit
SELECT KodePeng, NamaPeng, Kota FROM Pengarang p
FULL JOIN Penerbit t
ON p.KotaTinggal=t.Kota
Tabel 7-49 Hasil Relasi Full Join
KodePeng NamaPeng Kota
172-32-1176 Johnson White NULL 213-46-8915 Marjorie Green NULL 238-95-7766 Cheryl Carson Berkeley 267-41-2394 Michael O'Leary NULL 274-80-9391 Dean Straight NULL 341-22-1782 Meander Smith NULL 409-56-7008 Abraham Bennet Berkeley 427-17-2319 Ann Dull NULL 472-27-2349 Burt Gringlesby NULL 486-29-1786 Charlene
Locksley NULL
NULL NULL Washington
NULL NULL Chicago
NULL NULL Boston
NULL NULL Paris
NULL NULL New York
NULL NULL Dallas
NULL NULL München
2.39 Subquery
Subquery adalah sebuah bentuk perintah SELECT yang mengembalikan nilai yang ada kepada perintah lain berupa perintah SELECT, INSERT, UPDATE dan DELETE atau dengan kata lain subquery adalah query dalam query.
Subquery merupakan alternative dalam membuat perintah SQL yang menggunakan JOIN, dimana hal ini dibuat untuk meningkatkan performance terhadap perintah query tersebut. namun demikian, tergantung kepada data jika kalau ingin dibandingkan mana yang lebih baik antara subquery dengan JOIN ini.
Subquery dapat ditempatkan pada perintah SELECT setelah klausa Select, From, Where, Group BY dan Having. Umumnya perintah sub Query ini mengikuti format sebagai berikut:
WHERE ekspresi [NOT] IN (subquery)
WHERE ekspresi operator perbandingan [ANY | ALL] (subquery)
WHERE [NOT] EXISTS (subquery)
Untuk melakukan percobaan terhadap perintah sub Query ini akan disediakn dua buah tabel yaitu tabel Penerbit, tabel Pengarang dan tabel Buku
Tabel 7-50 Data Penerbit
KodePen NamaPen Kota
0736 New Moon Books Boston
0877 Binnet & Hardley Washington 1389 Algodata Infosistems Berkeley 1622 Five Lakes Publishing Chicago
1756 Ramona Publishers Dallas
9901 GGG&G München
9952 Scootney Books New York
9999 Lucerne Publishing Paris
Tabel 7-51 Data Buku
Kode JudulBuku Jenis KodePen
BU103 2
The Busy Executive's Database Guide
business 1389 BU111
1 Cooking with Computers: Surreptitious Balance Sheets business 1389 BU207
BU783 2
Straight Talk About Computers
business 1389 MC222
2 Silicon Valley Gastronomic Treats mod_cook 0877 MC302
1 The Gourmet Microwave mod_cook 0877 MC302
6
The Psychology of Computer Cooking
UNDECIDED 0877 PC103
5
But Is It User Friendly? popular_com p
1389 PC888
8 Secrets of Silicon Valley popular_comp 1389 PC999
9 Net Etiquette popular_comp 1389
Tabel 7-52 Data Pengarang
KodePeng NamaPeng KotaTinggal
172-32-1176
Johnson White Menlo Park
213-46-8915 Marjorie Green Oakland
238-95-7766 Cheryl Carson Berkeley
267-41-2394
Michael O'Leary San Jose
274-80-9391 Dean Straight Oakland
341-22-1782 Meander Smith Lawrence
409-56-7008
Abraham Bennet Berkeley
427-17-2319
Ann Dull Palo Alto
472-27-2349 Burt Gringlesby Covelo
Operator IN
Subquery dengan menggunakan operator IN adalah akan me-list hasil dari subquery untuk dibandingkan dengan ekspresi where yang diberikan. Subquery akan dijalankan terlebih dahulu baru kemudian query pemanggilnya akan dijalankan.
Berikut contoh perintah Subquery untuk menampilkan nama penerbit untuk buku yang berjenis business dengan menggunakan operator IN SELECT NamaPen FROM Penerbit WHERE kodePen IN (SELECT kodePen FROM Buku
WHERE jenis='business')
Output yang dihasilkan dari perintah Query tersebut adalah:
Tabel 7-53 Hasil Query Operator IN
NamaPen
New Moon Books Algodata
Infosistems
Berdasarkan pada perintah query diatas, pertama kali akan menjalankan query untuk buku dahulu sehingga akan menghasilkan nilai 1389, 1389, 0736, 1389. Kemudian akan menjalankan perintah query pada Penerbit dengan kondisi KodePen didasarkan pada hasil query pertama. Perintah query ini dapat diterjemahkan sbb:
SELECT NamaPen FROM Penerbit
WHERE kodePen IN (‘1389’, ‘1389’,’0736’, ‘1389’)
Subquery diatas pun seperti dijelaskan terdahulu bahwa dapat menggunakan perintah JOIN dengan bentuk sbb:
SELECT DISTINCT NamaPen FROM Penerbit p
INNER JOIN Buku b
ON p.kodePen=b.KodePen AND jenis='business'
Jika operator IN ditambahkan operator NOT maka akan menjadi NOT IN. hal ini akan memberikan nilai kebalikan dari hasil yang didapat dengan menggunakan perintah IN
SELECT NamaPen FROM Penerbit
WHERE kodePen NOT IN (SELECT kodePen FROM Buku
WHERE jenis='business')
Tabel 7-54 Hasil Query Operator Not IN
NamaPen
Binnet & Hardley Five Lakes Publishing Ramona Publishers GGG&G
Scootney Books Lucerne Publishing Operator EXISTS
Operator Exists ini akan melakukan pemeriksaan terhadap hasil subqery apakah menghasilkan baris-data atau tidak, jika subquery tersebut menghasilkan baris data maka akan mengembalikan nilai true dan sebaliknya jika tidak menghasikan data maka akan mengembalikan nilai false
Berikut contoh perintah Subquery untuk menampilkan nama penerbit untuk buku yang berjenis business dengan menggunakan operator EXISTS
SELECT NamaPen FROM Penerbit p
WHERE EXISTS
(SELECT * FROM Buku b
WHERE b.KodePen= p.KodePen AND jenis='business')
Output yang dihasilkan dari perintah Query tersebut adalah:
Tabel 7-55 Hasil Query Operator Exists
NamaPen
New Moon Books Algodata
Infosistems
Jika operator EXISTS ditambahkan operator NOT maka akan menjadi NOT EXISTS. hal ini akan memberikan nilai kebalikan dari hasil yang didapat dengan menggunakan perintah EXISTS
SELECT NamaPen FROM Penerbit p WHERE NOT EXISTS
(SELECT * FROM Buku b
WHERE b.KodePen= p.KodePen AND jenis='business')
Tabel 7-56 Hasil Query Operator Not Exists
NamaPen
Binnet & Hardley Five Lakes Publishing Ramona Publishers GGG&G
Scootney Books Lucerne Publishing Operator Komporasi
Subquery memungkinkan juga menggunakan operator komparasi yang terdiri dari =, < >, >, > =, <, ! >, ! <, or < =. Berbeda dengan operator sebelum penggunaaan operator ini subquery harus menghasilkan data tunggal yang menjadi parameter untuk query pemanggilnya.
Berikut contoh perintah Subquery untuk menampilkan nama penerbit untuk buku yang berjenis business dengan menggunakan operator komparasi =
SELECT NamaPeng FROM Pengarang WHERE KotaTinggal = (SELECT Kota FROM Penerbit
WHERE namaPen='Algodata Infosistems') Output yang dihasilkan dari perintah Query tersebut adalah:
Tabel 7-57 Hasil Query Operator Komparasi
NamaPeng Cheryl Carson Abraham Bennet Operator ANY dan ALL
Penggunaan operator ini dipadukan dengan operator relasi sehingga nanti akan terbentuk >ANY, =ANY , <> ANY, >ALL dan <>ALL
>ANY mengadung arti bahwa akan mengambil nilai lebih besarnya dari nilai terendah yang ada dalam list tersebut. contoh >ANY (1,2,3) maka nilai lebih besarnya adalah 1
>ALL mengandung arti bahwa akan mengambil nilai lebih besarnya dari nilai tertinggi yang ada dalam lsit tersebut. Contoh >ALL (1,2,3) maka nilai lebih besarnya adalah 3
=ANY pada dasarnya sama dengan fungsi operator IN yaitu akan menyamakan apa yang ada dala list sebagai hasil dari subquerynya. <>ANY tidak serta merta sama dengan NOT IN, hal ini berbeda karena <>ANY menghasilkan not = a or not = b , sementara NOT IN menghasilkan not = a and not = b. <>ALL pengertianya sama dengan NOT IN
Berikut contoh perintah Subquery untuk menampilkan nama penerbit untuk buku yang berjenis business dengan menggunakan operator <>ANY
SELECT NamaPeng FROM Pengarang
WHERE KotaTinggal <>ANY (SELECT Kota
FROM Penerbit)
Tabel 7-58 Hasil Query Operator ANY
NamaPeng Johnson White Marjorie Green Cheryl Carson Michael O'Leary Dean Straight Meander Smith Abraham Bennet Ann Dull
Rangkuman
1. Structure Query Language (SQL) menyediakan banyak fungsi-fungsi yang siap digunakan oleh penggunaya, baik pungsi untuk melakukan pertungan, fungsi penangan string, fungsi penagan tanggal dan fungsi-fungsi untuk proses agregasi data
2. Fungsi agregasi data akan berhubungan dengan klausa GROUP BY untuk membuat kelompok data jika terdapat kolom yang tidak diagregasi akan ditampilkan sebagai hasil query
3. Klausa GROUP BY mempunyai parameter untuk mengseksi data menggunakan HAVING
4. Membuat hubungan antar tabel dapat dilakukan dengan perpaduan antara FROM dan WHERE pada perintah select.
5. Selain itu hubungan antar tabel dapat menggunakan perintah JOIN
6. Perintah JOIN terdiiri dari peritah : a. Inner Join
b. Outher Join i. Left Join ii. Right Join iii. Full Join
7. INNER JOIN ini mensyaratkan data di kedua belah tabel singkon, Data yang tidak singkron tidak akan ditampilkan sebagai hasil query tersebut
8. Perintah LEFT JOIN ini akan menghasilkan seluruh baris data pada nama_tabel_1 (yang ada diseblah kiri) walaupun dalam relasi tidak singkron dengan nama_tabel_2 (disebelah kanan)
9. Perintah RIGHT JOIN ini akan menghasilkan seluruh baris data pada nama_tabel_2 (yang ada disebalah kanan) walaupun dalam relasi tidak singkron dengan nama_tabel_1 (disebelah kiri).
10. Perintah FULL JOIN ini akan menghasilkan seluruh baris data pada nama_tabel_1 (yang ada disebalah kiri) dan akan menampilkan seluruh baris nama_tabel_1 (disebelah kanan) walaupun ada tidak singkron diantara keduanya.
11.Subquery adalah sebuah bentuk perintah SELECT yang mengembalikan nilai yang ada kepada perintah lain berupa perintah SELECT, INSERT, UPDATE dan DELETE atau dengan kata lain subquery adalah query dalam query.
Umumnya perintah sub Query ini mengikuti format sebagai berikut:
a. WHERE ekspresi [NOT] IN (subquery)
b. WHERE ekspresi operator perbandingan [ANY | ALL] (subquery)
c. WHERE [NOT] EXISTS (subquery)
12. Subquery menggunakan operator IN, Not IN, Exists, Not Exists, Any, All dan operator relasi
13.Subquery dengan menggunakan operator IN adalah akan me-list hasil dari subquery untuk dibandingkan dengan ekspresi where yang diberikan.
14. Operator Exists ini akan melakukan pemeriksaan terhadap hasil subqery apakah menghasilkan baris-data atau tidak, jika subquery tersebut menghasilkan baris data maka akan mengembalikan nilai true dan sebaliknya jika tidak menghasikan data maka akan mengembalikan nilai false
15. Operator komparasi yang terdiri dari =, < >, >, > =, <, ! >, ! <, or < =. Berbeda dengan operator sebelum penggunaaan operator ini subquery harus menghasilkan data tunggal yang menjadi parameter untuk query pemanggilnya.
16. Penggunaan operator ini dipadukan dengan operator relasi sehingga nanti akan terbentuk >ANY, =ANY , <> ANY, >ALL dan <>ALL
Latihan
1. Jelaskan kegunaan dari masing-masing fungsi agregasi 2. Berikan contoh perintah query yang menggunakan GROUP
BY untuk menghitung jumlah mahasiswa laki-laki atau perempuan per angkatan
3. Jelaskan dan berikan contoh untuk klausa HAVING
4. Jelaskan perbedaan dari INNER JOIN dan OUTER JOIN dan berikan contohnya
5. Untuk kasus-kasus seperti apakah Left Join dan Right Join ini akan digunakan
6. Jelaskan karateristik operator Exists yang ada dalam sebuah subquery
7. Jelaskan perbedaan antara operator IN dan ANY dalam sebah subquery
8. Dengan menggunakan struktur basidata yang sudah dibentuk pada tugas sebelumnya maka buat perintah-perintah SQL :
a. Menghitung jumlah karyawan berdasarkan golongan tertentu
b. Total gaji seluruh karyawan berdasarkan pada golongan yang ada pada tabel gaji
c. Menghitung kehadiran karyawan per bulan aktif d. Menampilkan golongan dan pangkat karyawan
e. Menampilkan karyawan yang tidak hadir pada tanggal tertentu
Kuis Benar Salah
1. Fungsi-fungsi aggregation tidak dapt digunakan untuk kondisi pencarian dalam Where
2. Hasil dari perintah select dengan menggunakan fungsi fungsi aggregation akan mengembalikan hanya satu baris data saja
3. Merelasikan antar tabel hanya dapat dilakukan dengan perintah Inner Join saja
4. Pengertian penulisan Left Join sama dengan Left Outer Join
5. Perintah LEFT JOIN ini akan menghasilkan seluruh baris data pada tabel yang ada disebelah kiri walaupun dalam relasi tidak singkron dengan tabel disebelah kanan
6. Penulisan alias tabel hanya dapat dilakukan dengan menabahkan keyword AS
7. Join tabel hanya dapat dilakukan untuk tabel yang dapat dihubungkan salah satu dari kolom data dikedua table 8. Full join adalah sama dengan menampilkan seluruh isi
data dari kedua sisi table
9. operator exists pada sub query hanya memeriksa keberadaan baris data pada sub query tersebut dengan mengembalikan nilai true jika ada dan false jika tidak ada.
Pilihan Ganda