Jumat, 11 Desember 2020

3.10 Menerapkan penggunaan SQL untuk mengakses multi table

1.     Dasar Teori
a.     Join merupakan sebuah konsep di dalam pengolahan data pada database. Konsep ini menggabungkan dua buah tabel atau lebih sehingga menghasilkan sebuah tabel baru yang bersifat temporary atau sementara. Melalui tabel baru ini akan dapat diperoleh hubungan tiap data pada tabel-tabel yang digabungkan. Tabel baru ini disebut sebagai joined table.
b.     Macam-Macam Join
Pada MySQL dikenal beberapa macam join yang dapat dikelompokkan menjadi dua, yaitu inner join dan outer join. Inner join dapat dibagi kembali menjadi natural join dan cross join. Sedangkan outer join dapat dibedakan menjadi left outer join, right
outer join, dan full outer join.

1.     Inner Join dan Natural Join
Inner join dan natural join merupakan join yang digunakan untuk menemukan persimpangan atau perpotongan antara dua buah tabel yang di-join-kan. Join ini akan mengembalikan atau menampilkan data-data yang saling berpasangan di anatara kedua
buah tabel. Syntax untuk inner join dan natural join adalah sebagai berikut:
Cara #1. Inner Join dengan WHERE.
Penggabungan dengan klausa WHERE memiliki bentuk umum sebagai berikut:
SELECT tabel1.*, tabel2.* FROM tabel1, tabel2 WHERE tabel1.PK=tabel2.FK;

Cara #2. Inner Join dengan klausa INNER JOIN.
Berikut ini bentuk umumnya:
SELECT tabel1.*, tabel2.* FROM tabel1 INNER JOIN tabel2 ON tabel1.PK=tabel2.FK;

2.     Cross Join
Cross join merupakan inner join dengan seluruh kondisi join (tidak hanya data yang berpasangan) dianggap bernilai true. Sesuai dengan namanya, join ini akan mengembalikan semua kemungkinanpasangan atau persilangan data pada tabel yang satu dengan data pada tabel yang lainnya. Syntax untuk cross join adalah sebagai berikut:

SELECT nama_kolom
FROM tabel_1 CROSS JOIN tabel_2;  

3.     Left Outer Join dan Right Outer Join
Left outer join merupakan join yang akan mengembalikan seluruh data pada tabel sebelah kiri (left table) yang memiliki pasangan pada tabel sebelah kanan (right table) ditambah data-data pada left table yang tidak memiliki pasangan pada tabel sebelah kanan. Sedangkan right outer
join sebaliknya.Untuk data-data yang tidak memiliki pasangan, pada joined table yang dihasilkan data-data tersebut akan dipasangkan dengan data null. Syntax untuk left outer join dan right outer join adalah sebagai berikut:


SELECT nama_kolom
FROM tabel_kiri LEFT OUTER JOIN tabel_kanan
ON tabel_kiri.nama_kolom = tabel_kanan.nama_kolom;

SELECT nama_kolom
FROM tabel_kiri RIGHT OUTER JOIN tabel_kanan
ON tabel_kiri.nama_kolom = tabel_kanan.nama_kolom;

4.     Full Outer Join
Full outer join merupakan kombinasi dari hasil left outer join dengan right outer  join. MySQL tidak mengenal klausa full outer join. Oleh karena itu, untuk mendapatkan joined table hasil dari full outer join digunakan klausa atau operator UNION untuk menggabungkan hasil query yang menggunakan left outer join dengan hasil query yang menggunakan right outer join. Syntax untuk full outer join adalah sebagai berikut:

SELECT nama_kolom
FROM tabel_kiri LEFT OUTER JOIN tabel_kanan
ON tabel_kiri.nama_kolom = tabel_kanan.nama_kolom
UNION
SELECT nama_kolom
FROM tabel_kiri RIGHT OUTER JOIN tabel_kanan
ON tabel_kiri.nama_kolom = tabel_kanan.nama_kolom;

c.     Penggunaan Operator IS NULL
Seperti yang telah dijelaskan pada bagian outer join, data yang diperoleh dari suatu query dapat mengandung nilai null. Untuk mem-filter query agar hanya menampilka data yang mengandung nilai null saja dapat menggunakan operator IS NULL pada klausa WHERE.

d.     Penggunaan Operator DISTINCT
Pada saat melakukan pengambilan data di dalam database terkadang dijumpai suatu kondisi dimana data yang sama diperoleh atau muncul lebih dari satu baris. Untukmenghilangkan kemunculan data yang berulang-ulang ini dapat menggunakan operator DISTINCT pada klausa SELECT. Dengan menggunakan operator ini, data yang sama hanya akan muncul satu kali atau hanya pada satu baris.

e.     Penggunaan Operator AS
Operator AS berfungsi untuk mengubah nama kolom atau field pada suatu hasil query. Perubahan nama kolom ini hanya berlaku pada hasil query tersebut, tidak mengubah nama kolom asalnya.

2.      Latihan
Gunakanlah kembali database akademik_sekolah yang pernah siswa buat pada latihan meteri terdahulu.
a.     Inner Join dan Natural Join
Inner join maupun natural join dapat digunakan untuk mengetahui data siswa sekaligus nilai yang diperolehnya. Jalankan query berikut dan perhatikan hasilnya:

Cara 1 :


Cara 2 :


b.     Cross Join
Jalankanlah query berikut:



c.     Left Outer Join dan Right Outer Join

Jalankanlah query berikut dan perhatikan hasilnya:



Jalankan pula query berikut dan perhatikan kembali hasilnya:




d.     Full Outer Join


Disqus Comments