Anda di halaman 1dari 13

MODUL BASIS DATA

MATERI 3
AKSES MULTITABLE DAN MULTILEVEL SELECT COMMAND

A. KOMPETENSI DASAR
1. Merancang SQL bertingkat dalam memanipulasi basis data
2. Membuat perintah SQL bertingkat dalam memanipulasi basis data

B. TUJUAN
Setelah mempelajari, mendiskusikan dan mempraktikkan materi ini, siswa dapat:
1. Menjelaskan akses multitable dan multilevel select command dengan baik dan
percaya diri.
2. Menerapkan akses multitable dan multilevel select command dengan baik dan
percaya diri
3. Menerapkan perintah SQL akses multitable dan multilevel select command dengan
baik dan percaya diri
4. Menjalankan perintah SQL akses multitable dan multilevel select command secara
baik, percaya diri dan sesuai aturan.

C. DASAR TEORI
1. AKSES MULTITABLE
Di dalam suatu RDBMS termasuk MySQL, tentunya sudah menjadi suatu kewajaran
jika dalam satu database dapat terdiri dari beberapa tabel. Masing-masing tabel tersebut
dapat berhubungan (berelasi) satu sama lain. Relasi antar-tabel dapat berupa relasi 1-1
(one-to-one), 1-M (one-to-many), atau M-N (many-to-many). Sebagai contoh terlihat pada
Gambar 1. pemodelan data konseptual (class diagram) di bawah ini. Tabel pelanggan
berhubungan dengan pesan, pesan dengan barang, dsb.
Pada pembuatan suatu aplikasi, terkadang juga memerlukan tampilan data yang
tidak hanya berasal dari 1 (satu) tabel, namun bisa dari beberapa tabel sekaligus.
Contohnya, dari class diagram di bawah, kita ingin menampilkan nama pelanggan berikut
transaksi yang pernah dilakukannya. Dari contoh tersebut, kita harus bisa menggabungkan
minimal dua tabel, yaitu pelanggan dan pesan.

XII RPL SMKN 2 TRENGGALEK – BY NOVI DYAH P. 1


MODUL BASIS DATA

Gambar 1. Contoh Class Diagram Sistem Pembelian

Untuk menggabungkan 2 (dua) atau lebih tabel, kita dapat menggunakan bentuk
perintah JOIN. Pada dasarnya join tabel adalah mengkombinasikan dua buah tabel
berdasarkan perbandingan nilai-nilai kolom yang dipilih. Join tabel menghasilkan baris-baris
data yang hanya ada selama query itu dibuat atau dijalankan. Menggunakan join untuk
secara temporer menciptakan baris-baris data yang lengkap dari suatu database yang
membagi data-data yang berhubungan melalui atau ke beberapa tabel terpisah (hasil dari
normalisasi).
a. Inner Join
Dengan inner join, tabel akan digabungkan dua arah, sehingga tidak ada data yang
NULL disatu sisi. Sebagai contoh, akan menggabungkan tabel pelanggan dan tabel
pesan dimana hasil akhir akan menampilkan daftar pelanggan yang pernah melakukan
pemesanan (transaksi). Misalkan isi tabel pelanggan dan pesan adalah sebagai berikut:
Tabel pelanggan (hanya ditampilkan field id_pelanggan, nm_pelanggan dan email)

XII RPL SMKN 2 TRENGGALEK – BY NOVI DYAH P. 2


MODUL BASIS DATA

Tabel pesan

Langkah penggabungannya:
 Inner Join dengan WHERE
Penggabungan dengan klausa WHERE memiliki bentuk umum sebagai berikut:

Berikut ini perintah SQL untuk menggabungkan tabel pelanggan dan pesan:

Hasilnya:

Pada hasil perintah query di atas terlihat bahwa terdapat 5 (lima) transaksi yang
dilakukan oleh 3 (tiga) orang pelanggan. Jika dilihat kembali isi tabel pelanggan di
atas, maka terdapat satu pelanggan yang tidak ditampilkan yaitu yang memiliki id
pelanggan P0003. Pelanggan tersebut tidak ditampilkan karena belum pernah
melakukan transaksi.
 Inner Join dengan klausa INNER JOIN
Berikut ini bentuk umumnya:

Dan berikut ini perintah SQL penggabungan tabel pelanggan dan pesan:

XII RPL SMKN 2 TRENGGALEK – BY NOVI DYAH P. 3


MODUL BASIS DATA

Hasil sama dengan poin sebelumya. .


b. Outer Join
outer join untuk menuliskan join tabel yang menyediakan informasi tentang baris-
baris data yang tidak sesuai atau hilang. Sebuah outer join dapat menemukan baris-
baris data yang sesuai (seperti inner join), tetapi dapat juga mengidentifikasi baris-baris
data yang tidak sesuai. Selanjutnya, dengan menyertakan klausa WHERE, suatu outer
join dapat menyeleksi baris data yang sesuai untuk hanya menampilkan baris-baris data
yang tidak sesuai atau tidak cocok.
Dua buah bentuk outer join yang umum yaitu left join dan right join. Disini dalam
penulisan perintahnya menggunakan klausa LEFT JOIN atau RIGHT JOIN dari pada
menggunakan operator tanda koma atai klausa INNER JOIN. Left atau right join dapat
menjawab pertanyaan-pertanyaan yang sama, dan hanya sedikit berbeda dalam
penulisan-perintahnya.
 Left Join
Bentuk umum:

Contoh perintah SQL:

Hasil:

Berbeda dengan hasil sebelumnya (inner join), penggunaan left join akan
menampilkan juga data pelanggan dengan id P0003, walaupun pelanggan tersebut

XII RPL SMKN 2 TRENGGALEK – BY NOVI DYAH P. 4


MODUL BASIS DATA

belum pernah bertransaksi. Dan pada kolom id_pesan dan tgl_pesan untuk
pelanggan P0003 isinya NULL, artinya di tabel kanan (pesan) pelanggan tersebut
tidak ada.

 Right Join
Bentuk umum:

Contoh perintah SQL:

Hasilnya:

Dengan right join, tabel yang menjadi acuan adalah tabel sebelah kanan (tabel
pesan), jadi semua isi tabel pesan akan ditampilkan. Jika data pelanggan tidak ada
di tabel pelanggan, maka isi tabel pesan tetap ditampilkan.

2. MULTILEVEL SELECT COMMAND


Multilevel Select Command dikenal dengan nama subquery. Subquery (disebut juga
subselect atau nested select / query atau inner-select) adalah query yang ada di dalam
perintah SQL lain misalnya atau Keberadaan subquery secara nyata mampu
menyederhanakan persoalan-persoalan rumit berkaitan query data. Sebagai contoh, misal
terdapat pernyataan sebagai berikut:
“Dapatkan data siswa yang alamatnya sama dengan siswa yang memiliki NIS 3104”
Secara normal, diperlukan dua tahapan untuk menyelesaikan kasus di atas.
Pertama adalah mendapatkan alamat dari siswa yang memiliki nis 3104. Langkah
selanjutnya, baru bisa mengetahui data siswa yang alamatnya sama dengan siswa dengan

XII RPL SMKN 2 TRENGGALEK – BY NOVI DYAH P. 5


MODUL BASIS DATA

nim 104. Adapun dengan memanfaatkan subquery, maka penyelesaian kasus di atas hanya
memerlukan sebuah query.
Pada hakekatnya, subquery sangat berguna ketika sebuah query didasarkan pada
nilai-nilai yang tak diketahui. Sintaks formal subquery diperlihatkan sebagai berikut:

Subquery dapat diklasifikasikan ke dalam tiga jenis yaitu scalar, multiple-row, dan
multiple column.
a. Scalar Subquery
Subquery baris tunggal (scalar) hanya mengembalikan hasil satu baris data. Bentuk
subquery ini diperlihatkan seperti Gambar 2.

Gambar 2. Scalar subquery


Subquery baris tunggal dapat menggunakan operator baris tunggal =, >,>=, <, <=, atau <>.

b. Multiple-Row Subquery
Subquery baris ganda (multiple-row) mengembalikan lebih dari satu baris data.
Bentuk subquery ini diperlihatkan seperti Gambar 3.

Gambar 3. Multiple-row subquery


Subquery baris ganda dapat menggunakan operator komparasi IN, ANY /SOME, atau ALL.

c. Multiple-Column Subquery
Subquery kolom ganda (multiple-column) mengembalikan lebih dari satu baris dan
satu kolom data. Bentuk subquery ini diperlihatkan seperti Gambar 3.

XII RPL SMKN 2 TRENGGALEK – BY NOVI DYAH P. 6


MODUL BASIS DATA

Gambar 3 Multiple-column subquery


E. LATIHAN
1. Himpunan Entitas
Dalam latihan ini digunakan kembali tiga buah tabel meliputi mahasiswa, ambil_mk,
dan matakuliah yang telah dibuat sebelumnya, dan ditambah dengan dua buah tabel
baru, yaitu dosen dan jurusan. Untuk itu, terlebih dahulu buat beberapa tabel dengan
struktur sebagai berikut.

Tabel Mahasiswa Tabel Matakuliah

Tabel Jurusan
Data dosen pada tabel ini berisi kode dosen yang menjadi ketua jurusan.

XII RPL SMKN 2 TRENGGALEK – BY NOVI DYAH P. 7


MODUL BASIS DATA

Tabel Dosen Tabel Ambil Matakuliah

Himpunan entitas di atas dapat direpresentasikan kedalam diagram skema (schema


diagram) seperti berikut.

2. ScalarSubquery
Contoh subquery baris tunggal adalah mendapatkan data mahasiswa yang jenis
kelaminnya sama dengan mahasiswa dengan nama “Wati”.

Sebagai hasilnya, didapatkan jenis kelamin mahasiswa dengan nama “Wati”, yakni
“P” yang selanjutnya digunakan oleh main query sehingga menghasilkan sebagai
berikut.

XII RPL SMKN 2 TRENGGALEK – BY NOVI DYAH P. 8


MODUL BASIS DATA

3. Multiple-RowSubquery
Pada subquery ini, kita menggunakan operator komparasi IN, ANY / SOME, atau ALL.
a. Operator IN
Operator IN memiliki arti : sama dengan member di dalam list. Sebagai contoh,
kita bisa menggunakan operator ini untuk mendapatkan data dosen yang

mengajar matakuliah.

b. Operator ANY/SOME
Operator ANY / SOME memiliki arti: membandingkan suatu nilai dengan setiap
nilai yang dikembalikan oleh subquery. Misalkan kita ingin mendapatkan data
matakuliah yang memiliki sks lebih besar dari sembarang sks matakuliah di
semester 3.

XII RPL SMKN 2 TRENGGALEK – BY NOVI DYAH P. 9


MODUL BASIS DATA

c. Operator ALL
Operator ALL memiliki arti: membandingkan suatu nilai dengan semua nilai yang
dikembalikan oleh subquery. Misal, kita ingin mendapatkan data matakuliah yang
memiliki sks lebih besar dari semua sks matakuliah di semester 3.

4. Multiple-ColumnSubquery
Subquery kolom ganda (atau tabel) juga menggunakan operator komparasi IN, ANY/
SOME, atau ALL. Pada query ini, nilai dari subquery dalam bentuk kolom ganda
dikomparasi main query. Sebagai contoh, misalkan kita ingin menampilkan data
matakuliah yang semester dan sksnya sesuai dengan semester dan sks matakuliah
dengan kode “PTI447”.

5. Operator EXISTS dan NOT EXISTS


Operator EXISTS dan NOT EXISTS digunakan pada correlated subquery untuk
memeriksa apakah subquery mengembalikan hasil atau tidak. Apabila subquery
mengembalikan hasil, EXIST akan mengembalikan nilai true. Begitu pula sebaliknya,
jika tidak mengembalikan hasil.
a. EXISTS

XII RPL SMKN 2 TRENGGALEK – BY NOVI DYAH P. 10


MODUL BASIS DATA

Pernyataan berikut akan mendapatkan data matakuliah yang diambil oleh


mahasiswa.

b. NOT EXISTS
Pernyataan berikut akan mendapatkan data matakuliah yang tidak diambil oleh
mahasiswa.

F. RANGKUMAN
 Join tabel adalah mengkombinasikan dua buah tabel berdasarkan perbandingan
nilai-nilai kolom yang dipilih. Join tabel menghasilkan baris-baris data yang hanya
ada selama query itu dibuat atau dijalankan. Terdapat beberapa jenis join
diantaranya inner join dan outer join. Untuk outer join dibagi lagi menjadi 2 yaitu left
join dan right join.
 Multilevel Select Command dikenal dengan nama subquery. Subquery (disebut juga
subselect atau nested select / query atau inner-select) adalah query yang ada di

XII RPL SMKN 2 TRENGGALEK – BY NOVI DYAH P. 11


MODUL BASIS DATA

dalam perintah SQL lain misalnya atau Keberadaan subquery secara nyata mampu
menyederhanakan persoalan-persoalan rumit berkaitan query data

G. TUGAS
1. Menggabungkan 3 Tabel atau Lebih
Untuk menggabungkan tiga tabel atau lebih, pada dasarnya sama dengan
penggabungan 2 (dua) tabel. Sebagai contoh misalnya kita akan menampilkan barang-
barang yang dipesan beserta nama barang dan harganya untuk pemesanan dengan
nomor 1, sedemikian sehingga hasilnya menjadi sebagai berikut:

Bagaimana perintah SQL-nya?


Tulislah perintah SQLnya, hasilnya dan penjelasannya dengan rapi pada Ms. Word.
Jangan lupa sertakan identitas pada pojok kanan kertas dokumen. File tugas di
kumpulkan lewat google classroom. File name tugas: No_Nama_TugasBasdat4.

2. SubQuery
Tabel Pegawai

XII RPL SMKN 2 TRENGGALEK – BY NOVI DYAH P. 12


MODUL BASIS DATA

Isi Tabel Pegawai

Dengan subquery, carilah:


- Data pegawai dengan gaji tertinggi.
- Data pegawai dengan gaji >2.000.000.
- Data pegawai dengan gaji >2.000.000 yang berasal dari Yogyakarta.
- Data pegawai dengan gaji >2.000.000 yang berasal dari Yogyakarta dan
pekerjaannya sebagai staff senior.

H. DAFTAR PUSTAKA
Darsono. 2019. Basis Data Kelas XII. Jakarta: Bumi Aksara

XII RPL SMKN 2 TRENGGALEK – BY NOVI DYAH P. 13

Anda mungkin juga menyukai