• Tidak ada hasil yang ditemukan

LEFT JOIN 2. RIGHT JOIN

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

Petunjuk: Pilihlah jawaban yang paling

Dokumen terkait