Implementasi Subquery pada SQL
Subquery adalah sebuah query atau perintah SQL yang disisipkan ke dalam query utama sebagai bagian dari klausa WHERE, FROM, atau SELECT. Subquery memungkinkan pengguna untuk mengeksekusi query yang lebih kompleks. Dengan menggunakan query, pengguna dapat menggabungkan data dari beberapa tabel, melakukan perbandingan antara hasil query, serta pengambilan data yang lebih terperinci.
Pada klausa WHERE, subquery digunakan untuk memfilter data berdasarkan kondisi tertentu. Klausa FROM, subquery digunakan sebagai sumber data yang akan diproses oleh query utama. Sementara klausa SELECT digunakan untuk menghasilkan nilai tunggal yang nantinya ditampilkan pada hasil query utama.
Terdapat beberapa jenis subquery, antara lain:
- Multiple column subquery: menghasilkan lebih dari satu baris dan lebih dari satu kolom data.
- Multiple-row subquery: menghasilkan beberapa baris data yang biasanya menggunakan operator perbandingan seperti IN, ANY, SOME, atau ALL.
- Scalar subquery: menghasilkan satu nilai tunggal, misalnya hasil perhitungan atau pengambilan satu data tertentu.
Untuk subquery baris tunggal, operator yang umum digunakan yaitu =, >, >=, <, <=, dan <>.
Pembahasan Tugas
Pada pertemuan ke-6, mahasiswa diberikan 8 soal dengan data yang sudah disediakan:
- Dapatkan kode dan nama matakuliah dosen yang menjadi Ketua Jurusan Teknik Elektro.
- Dapatkan data mahasiswa yang tidak mengambil matakuliah.
- Dapatkan data dosen yang mengajar matakuliahdiatas semester 3.
- Dapatkan data matakuliah dosen yang bukan merupakan Ketua Jurusan Teknik Elektro.
- Dapatkan data dosen pengajar matakuliah yang tidak diambil oleh mahasiswa.
- Dapatkan data dosen yang mengajar matakuliah dengan sks lebih besar dari sembarang sks.
- Dapatkan data mahasiswa yang tinggal satu wilayah dengan dosen yang bukan merupakan Ketua Jurusan Teknik Elektro.
- Dapatkan data mahasiswa yang diajar oleh Ketua Jurusan Teknik Elektro.
Sebelum masuk ke pengerjaan soal, saya membuat ulang data menggunakan phpMyAdmin yang dimulai dari pembuatan database hingga pembuatan tabel dan insert data.
Pembuatan database
Untuk membuat database, bisa langsung ke sebelah kiri baris paling atas bertuliskan “New” lalu isi nama database baru pada “Create databse”, setelah itu klik Create untuk membuat database.
Pembuatan tabel
Dapat dilihat database yang baru saja dibuat dengan nama “universitas” pada baris database paling bawah, teman-teman bisa klik nama database tersebut, lalu menuliskan nama tabel pada bagian “Create new table”, kita juga bisa mengatur jumlah kolom di samping Create new table. Apabila nama dan jumlah kolom sudah sesuai dengan kebutuhan. kita bisa klik Create untuk mem-publish tabel.
Setelah memberi nama tabel, kita harus menentukan nama kolom, type kolom (bisa menggunakan integer, string, varchar, char, dll) sesuai dengan kebutuhan, menentukan panjang dari isi kolom, serta menentukan primary key. Saat semua sudah terisi, bisa scroll ke bawah hingga menemukan tulisan “Go” untuk membuat tabel
Insert data
Untuk insert data, kita memiliki dua cara, yaitu dengan cara memasukan data satu-persatu dan memasukan data secara bersamaan. Kita akan memulainya dengan cara pertama terlebih dahulu, yaitu memasukan data satu-persatu.
Kita bisa langsung masuk ke dalam tabel yang sudah dibuat dan pilih bar bertuliskan “Insert”. Di sana, kita bisa memasukan data yang kita butuhkan berdasarkan kolom.
Get Azka’s stories in your inbox
Join Medium for free to get updates from this writer.
Cara kedua yaitu memsaukan data secara bersamaan menggunakan SQL.
kita msih menggunakan format yang sama, yaitu INSERT INTO nama_tabel (nama_kolom dalam tabel) VALUES di bawah VALUES, kita bisa memasukan data, urut dari kolom pertama hingga paling belakang. Berikut gambaran beberapa tabel yang sudah dibuat:
Setelah membbuat database hingga insert data, sekarang kita akan menjawab 8 pertanyaan di atas.
1. Dapatkan kode dan nama mata kuliah dosen yang menjadi ketua jurusan teknik elektro.
SELECT kd_mk, nama_mk
FROM mata_kuliah
WHERE kode_dos = (
SELECT kd_dos
FROM jurusan
WHERE nama_jur = 'Teknik Elektro'
);2. Dapatkan data mahasiswa yang tidak mengambil mata kuliah.
SELECT *
FROM mahasiswa
WHERE nim NOT IN (
SELECT nim
FROM ambil_mk
);3. Dapatkan data dosen yang mengajar mata kuliah di atas semester 3.
SELECT *
FROM dosen
WHERE kode_dos IN (
SELECT kode_dos
FROM mata_kuliah
WHERE semester > 3
);4. Dapatkan data mata kuliah dosen yang bukan merupakan ketua jurusan teknik elektro.
SELECT *
FROM mata_kuliah
WHERE kode_dos NOT IN (
SELECT kd_dos
FROM jurusan
WHERE nama_jur = 'Teknik Elektro'
);5. Dapatkan data dosen pengajar mata kuliah yang tidak diambil mahasiswa.
SELECT *
FROM dosen
WHERE kode_dos IN (
SELECT kode_dos
FROM mata_kuliah
WHERE kd_mk NOT IN (
SELECT kd_mk
FROM ambil_mk
)
);6. Dapatkan data dosen yang mengajar mata kuliah dengan sks lebih besar dari sembarang sks.
SELECT *
FROM dosen
WHERE kode_dos IN (
SELECT kode_dos
FROM mata_kuliah
WHERE sks > ANY (
SELECT sks
FROM mata_kuliah
)
);7. Dapatkan data mahasiswa yang tinggal satu wilayah dengan dosen yang bukan merupakan ketua jurusan teknik elektro.
SELECT *
FROM mahasiswa
WHERE alamat IN (
SELECT alamat_dos
FROM dosen
WHERE kode_dos NOT IN (
SELECT kd_dos
FROM jurusan
WHERE nama_jur = 'Teknik Elektro'
)
);8. Dapatkan data mahasiswa yang diajar oleh ketua jurusan teknik elektro.
SELECT *
FROM mahasiswa
WHERE nim IN (
SELECT nim
FROM ambil_mk
WHERE kd_mk IN (
SELECT kd_mk
FROM mata_kuliah
WHERE kode_dos = (
SELECT kd_dos
FROM jurusan
WHERE nama_jur = 'Teknik Elektro'
)
)
);Sekian penjelasan singkat mengenai subquery dan penjabaran tugas dari pembuatan database hingga pengerjaan soal, semoga mudah dipahami oleh teman-teman. Adios!








