Anda di halaman 1dari 12
MODUL 5 SQL BERTINGKAT A.Pendahuluan Subquery (disebut juga subselect atau nested selectiquery atau inner-select) adalah query SELECT yang ada di dalam perintah SQL lain misalnya SELECT, INSERT, UPDATE, atau DELETE. Keberadaan subquery secara nyata mampu menyederhanakan persoalan-persoalan rumit berkaitan query data. Sebagai contoh, misal terdapat pernyataan sebagai berikut: “Dapatkan data mahasiswa yang alamatnya sama dengan mahasiswa dengan nim 104” Secara normal, diperlukan dua tahapan untuk menyelesaikan kasus di atas. Pertama adalah mendapatkan alamat dari mahasiswa yang memiliki nim 104. Langkah selanjutnya, baru kita bisa mengetahui data mahasiswa yang alamatnya sama dengan mahasiswa dengan nim 104. ‘Adapun dengan memanfaatkan subquery, maka penyelesaian kasus di atas hanya memerlukan sebuah query (akan dijelaskan nanti). Pada hakekatnya, subquery sangat berguna ketika sebuah query didasarkan pada nilai-nilai yang tak diketahui, 1, STANDART KOMPTENESI 3.11 Merancang SQL bertingkat dalam memanipulasi basis data 4.11 Membuat perintah SQL bertingkat dalam memanipulasi basis data 2. DESKRIPSI Modul ini merupakan modul pembelajaran mata pelajaran Basis Data untuk siswa SMK kelas XI semester 3, Modul pembelajaran ini dibuat dalam rangka untuk mempermudah proses pembelajaran, Modul ini berisi materi SQL bertingkat. 3. WAKTU Alokasi pembelajaran untuk modul 5 SQL bertingkat ini dapat digunakan dalam waktu pembelajaran selama satu kali tatap muka. 4, PETUNJUK PENGGUNAAN MODUL, Sebelum Pembelajaran 1, Sebelum masuk pada materi, disajikan pendahuluan sebagai pengantar menuju materi utama. 2. Disajikan kompetensi dasar dan alokasi waktu sebagai pedoman bagi pengguna modul ‘untuk meneapai tujuan pembelajaran. 2|[Page MODUL 5 SQL BERTINGKAT Selama Pembelajaran Mempelajari dan memahami materi pada modul. Mempelajari dan mencatat materi yang dianggap penting. Mengerjakan tugas yang terdapat pada bagian evaluasi. 4, Mengerjakan tes untuk mengukur kemampuan dalam memahami modul, Setelah Pembelajaran 1. Mengevaluasi jawaban dengan kunci jawaban. 2. Mengetahui hasil evaluasi (sudah memenuhi kriteria ketuntasan atau belum), 3. Memutuskan untuk meneruskan belajar pada materi selanjutnya atau tetap pada materi yang sama, 3|Page MODUL 5 SQL BERTINGKAT B.Pembelajaran ‘Materi SQL bertingkat dapat kita sebut dengan istilah SubQuery. Sintaks formal subquery diperlihatkan sebagai berikut: SELECT Al, A2,..., An FROM rl, 72,73, WHERE P (SELECT AJ, 42, ... An FROM rl, 72,r3,.., 7m WHERE P) Subquery dapat diklasifikasikan ke dalam tiga jeni a. Scalar Subquery rm : scalar, multiple-row, dan multiple-column. ‘Subquery baris tunggal (scalar) hanya mengembalikan hasil satu baris data, Bentuk subquery ini diperlihatkan seperti Gambar 1. Man que 102 Gambar } 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 2. ain query Retune 402 103 io Gambar 2 Multiple-row subquery 4|Page MODUL 5 SQL BERTINGKAT Subquery baris ganda dapat menggunakan operator komparasi IN, ANY/SOME, atau ALL. ¢, Multiple-Column Subquery Subquery kolom ganda (multiple-columri) mengembalikan lebih dari satu baris dan satu Kolom data, Bentuk subquery ini diperlihatkan seperti Gambar 3. Cambar 3 Multiple-coumn cubguery GG Ssbsueny dapat diznplemestusian didilam Wsura WHERE, HAVING, teu FROM. 5|Page MODUL 5 SQL BERTINGKAT Himpunan entitas di atas dapat direpresentasikan ke dalem diagram skema (schema diagrant) seperti Gambar 4. manesioue emai malta i t= a nama Seema: rama rk ais kesamin oe tama semester nude dae sesen ruse aa oa ace Tamar do naar ip ede, ds Gambar 4 Diagram skema ‘2.Scalar Subquery alamatnya sama dengan mahasiswa dengan nim 104. (I> SELECT © mya" From mahasi swe Di Jambara > => WHERE alanat = <=", SELECT alamat “4 FROPH mahas' sea WHERE sim = 204) Bisa digambarkan, lamgkah pertama dari operasi di atas adalah alamat mahasiswa dengan nim 104, kemudian hasilaya— yakni “JLJombang"—skan disumakan oleh main query. 3.Multipl-Row Subquery Pada subquery ini, kita menggumakan operator komparasi IN, ANZ/ OME, atau ALL. Operon Operator IN memuliki arti: sama dengan member di dalam list. Sebagai contah, kita bisa mengeunakan operator ini untuk mendapatkan data mabasiswa yang menzambil matalulizh. MODUL 5 SQL BERTINGKAT 71P mysql> SELECT minim, => FROM mahasi sua 25 WHERE et. nim IN (SELECT nim FROM ama _mk}e 203 | wari 04 | Ths peasecteneeeoe Trews in set (0.00 sec) ‘Operator ANYSOME ‘Operstor ANY/SCME memiliki art: membandingkan sustu nilai dengan setigp nilai vang dikembalikan oleh subquery. ‘Misalkan kita ingin mendapatkan data matakulizh yg memiliki dbs Jebih kecil dari sembarang ks matakulizh di semester 5. jaql> seugeT = mrad Fon matakul jah 23 SELECT sks FROM matakul ah eee [eke | semester | toda doe | Praktikum Basis Data | i| 3 Staten Informasi } Operator = ANY ekuivalen dengan TH. Operstor< any eluivalen dengan Max Gourang dari make). Operstor > ANY ekuivalen dengan MTw (lebih dari min). Operator ALL Operstor ALT memiliki arti: membandingkan sustu nilsi dengan semms ilai yang dikembalikan oleh subquery. Misalkan Kita ingin mendapatkan data matakulish yang memilikd sks lebih keeil dari semua sks matakuliah di semester 5. priaa? Praktikun Basis Oata THKN42 | Pravtvhum Gast Oata - Prowse in set (0:16 see) MODUL 5 SQL BERTINGKAT Operator < ALL ekuivalen dengan MIN (kurang dari min) Operator > ALL ekuivalen dengan MAX (lebih dari mak), 4.Multiple-Colamn Subquery Subguery kolom ganda (atau tabel) juga menggunaken operator komparasi IN, ANY/SOME, atau ALL. Pada query ini, nilai dari subquery— dalam bentuk kolom ganda—dikomparasi dengan main query. Sebagai contch, misalkan kita ingin menampilkan data mateluliah yang semester dan skenya seouai dengan semester dan ske matakulish dengan kode “PTI333”. mysql> SELECT Face rene [senestar eis) x ear - — + PTI123 | Grafika Multimedia 3 5 412 PTI333 | Basis Data Terdistribusi | 3 5 10 TIK333__| Sistem Operas: 3 5 10 aot J rows in set (0.00 sec) §.Operator EXISTS dan NOT EXISTS Operator EXISTS dan NOT EXISTS digunakan pada correlated subquery untuk memeriksa apakeh subquery mengembaliken hasil atau tidak ‘Apabila subquery mengembelikan Hasil, EXISTS akan mengembaliken nilai true; begitu pula sebalikmya, jika tidak menzembalikan hasil Sebagai contoh, pemyataan berikut akan mendapatkan date mahasiswa ‘yang mengambil matekuliah. mysql> SELECT * FROM mahasi swam => nacre (ET ecieer FROM ais Tika. > WHERE m.mim = a.m) pose oe [mim | nama | jeni_kelamn | alanat l + + 3]. Kenangan 31 Surabaya 31. Jombang ro 3 roms in set (0.08 sec) 8/Page MODUL 5 SQL BERTINGKAT Pemyateon berilut aken mandapatken date mabasiswe yang tidak mengambil matakuliah, veal SELECT Ere ERM tes [nvm | nama | penis bela HE Els 6. Subquery dan Fungsi Agregat Operasi-operss) pada subquery juga dapat melibotkan fungsi-fungst agregat Sebagai comtob, misalkan ingin mandapmtkan dam morakulish yang tamil ks sama dengan ake terbesar. sols SELECT = veel FECA ma aul ah Were sks = (SELECT wacitst GH mut absl PYEIEY | Oss} Data: Terdi TIKIT | ftstem Operast Tro in eet (0.06 see) ‘7.Subquery dan Join Dalam beberapa kasus sadeshana, fungsionalitas subquery dan join dapat digertukarkan. Dengan kata lain, keduamya dapat digumakan untuk menyolesaikan persoalan yang ama. Sebagai conto, misalkan kit ingin mendapatkan im da nama mahasiswa yang tidak menzambil matakuliah, Pendekatan subquery- te mr i heim ey na ta) Fron mahastoua 3 SATE 9[Page MODUL 5 SQL BERTINGKAT Pendakatan join: ale SELECT pies wna FROM mahaziena me 5 HERE OUTER 03M abil at > anim = Sonia T) amcee” aren 1 MLL? 10] Page MODUL5 SQL BERTINGKAT C. Evaluasi Dalam mengerjaken tugas praktikum ini, sebaiknya pemyataan SQL disimpan di file untuk kemudian dieksekusi. Selesaikan tugas-tugas di bawah ini dengan mengeunakan pendekatan subquery. 1Dapatkan data mahasiswa yang jenis kelaminnya sama dengan “Arif” tidak termasuk “Arif”. (Point 10) 2Dapatkan matakuliah yang tidak diambil oleh mahasiswa terdaftar (mahasiswa di tabel mahasiswa), (Point 20) 3.Dapatkan data mahasiswa yang mengambil matakulieh dengan sks lebih kecil dari sembarang sks. (Point 25) 4.Dapatkan data dosen yang mengajar matakuliah di semester yang same dengan dosen yang sekaligus menjadi ketua jurusan Teknik Elektro tidak termasuk ketua jurusan Tekmik Elektro. (Point 30) 5 Dapatkan nim, nama, dan alamat mahasiswa yang tempat tinggalnya sama dengan dozen yang mengajar mataluliah dengan sks di atas rata-rata_ (Point 35) Page 1 MODUL5 SQL BERTINGKAT D. Kunci Jawaban No Soal ‘Jawaban, Skor Select * from mahasiswa where nama<> ( select nama from mahasiswa where nama='arif}) and jenis_kelamin="L'; 20 select * from matakuliah where kode_mk not in (select kode_mk from ambil_mk); 20 select m.nim, m.nama, mjenis_kelamin, m.alamat from mahasiswa m, ambil_mk a, matakuliah mk where m.nim = a.nim and a.kode_mk = mk kode_mk and mk.sks < any (select sks from matakuliah); atau select m.nim, m.nama, m,jenis_kelamin, m.alamat from mahasiswa m, ambil_mka, matakuliah mk where m.nim = a.nim and a.kode_mk = mk.kode_mk and mk.sks < all (select sks from matakuliah where semester=5); 20 select dkode_dos, dnama_dos, dalamat_dos from dosen d, matakuliah mk where d.kode_dos = mk.kode_dos and mk.semester in ( select mk semester from jurusan j, matakuliah mk where mk.kode_dos = j.kode_dos and janama_jurTeknik Elektro! ) 20 Page 2 MODUL5 SQL BERTINGKAT and nama_dos > ¢ select nama_dos from dosen d, jurusan j where d.kode_dos = j.kode_dos and janama = Teknik Elektro’ ) 5. select distinct m.nim, m.nama, m.alamat from mahasiswa m, dosen d, matakuliah mk Lalamat_dos mk kode_dos select avg(sks) from matakuliah » 20 Jumlah Skor 100) Skor maksimal__— 100 Penskoran_ skor perolehan ‘skor maksimal Page 3

Anda mungkin juga menyukai