Sitemap
Azka

Azka

Implementasi Subquery pada SQL

5 min readMay 18, 2026
Press enter or click to view image in full size

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:

  1. Dapatkan kode dan nama matakuliah dosen yang menjadi Ketua Jurusan Teknik Elektro.
  2. Dapatkan data mahasiswa yang tidak mengambil matakuliah.
  3. Dapatkan data dosen yang mengajar matakuliahdiatas semester 3.
  4. Dapatkan data matakuliah dosen yang bukan merupakan Ketua Jurusan Teknik Elektro.
  5. Dapatkan data dosen pengajar matakuliah yang tidak diambil oleh mahasiswa.
  6. Dapatkan data dosen yang mengajar matakuliah dengan sks lebih besar dari sembarang sks.
  7. Dapatkan data mahasiswa yang tinggal satu wilayah dengan dosen yang bukan merupakan Ketua Jurusan Teknik Elektro.
  8. 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

Press enter or click to view image in full size
gambar 1

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

Press enter or click to view image in full size
gambar 2

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.

Press enter or click to view image in full size
gambar 3

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

Press enter or click to view image in full size
gambar 4, tabel jadi

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.

Press enter or click to view image in full size
gambar 5

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.

Press enter or click to view image in full size
gambar 6

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:

tabel mata kuliah
tabel mahasiswa
tabel dosen
tabel ambil mk
tabel jurusan

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'
);
Press enter or click to view image in full size
gambar 12

2. Dapatkan data mahasiswa yang tidak mengambil mata kuliah.

SELECT *
FROM mahasiswa
WHERE nim NOT IN (
SELECT nim
FROM ambil_mk
);
Press enter or click to view image in full size
gambar 13

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
);
Press enter or click to view image in full size
gambar 14

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'
);
Press enter or click to view image in full size
gambar 15

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
)
);
Press enter or click to view image in full size
gambar 16

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
)
);
Press enter or click to view image in full size
gambar 17

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'
)
);
Press enter or click to view image in full size
gambar 18

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'
)
)
);
Press enter or click to view image in full size
gambar 19

Sekian penjelasan singkat mengenai subquery dan penjabaran tugas dari pembuatan database hingga pengerjaan soal, semoga mudah dipahami oleh teman-teman. Adios!

--

--