← Back to list

Basis Data 6: SQL Sub Query

Sub Query, atau yang juga dikenal sebagai nested query, adalah sebuah query (perintah SQL) yang disisipkan ke dalam query utama sebagai…

Muhammad Raka Mushaddaq · 2026-05-13 07:00 · 0 claps · 4.3 min read
#query #subquery #phpmyadmin #localhost
Open on Medium ↗

Basis Data 6: SQL Sub Query

Photo by Rubaitul Azad on Unsplash

Photo by Rubaitul Azad on Unsplash

Sub Query, atau yang juga dikenal sebagai nested query, adalah sebuah query (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 menggabungkan hasil dari satu query ke dalam query lainnya.

Subquery digunakan untuk mencapai tujuan tertentu dalam pengambilan data atau manipulasi data yang tidak dapat dicapai dengan menggunakan query tunggal. Dengan subquery, pengguna dapat menggabungkan data dari beberapa tabel, melakukan perbandingan antara hasil query, atau membuat pengambilan data yang lebih terperinci.

Subquery dapat disisipkan ke dalam klausa WHERE, FROM, atau SELECT dari query utama. Dalam klausa WHERE, subquery digunakan untuk memfilter baris berdasarkan kriteria tertentu. Dalam klausa FROM, subquery digunakan untuk menentukan sumber data untuk query utama. Sedangkan dalam klausa SELECT, subquery dapat menghasilkan nilai tunggal yang akan dimasukkan ke dalam hasil query utama.

Terdapat beberapa tipe subquery yaitu:

  • Multiple column Subquery: Subquery kolom ganda (multiple-column) mengembalikan lebih dari satu baris dan satu kolom data.

  • Multiple-row Subquery: Subquery ini menghasilkan beberapa baris data.

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

  • Scalar Subquery: Subquery ini menghasilkan nilai tunggal, seperti hasil perhitungan atau pengambilan data tunggal.

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

Salah satu contoh umum dari subquery adalah penggunaannya dalam klausa WHERE untuk memfilter hasil query berdasarkan kriteria yang berasal dari hasil query lainnya. Misalnya, subquery dapat digunakan untuk mencari pelanggan yang melakukan pembelian diatas rata-rata total pembelian. Contoh lainnya adalah penggunaan subquery dalam klausa SELECT untuk menghasilkan nilai agregat, seperti jumlah total penjualan per kategori produk.

Keuntungan utama dari penggunaan subquery adalah kemampuannya untuk menangani tugas-tugas yang kompleks dengan logika yang lebih rumit dalam manipulasi data. Namun, penggunaan subquery yang berlebihan dapat menyebabkan penurunan kinerja dan kompleksitas yang sulit dipelihara dalam kode SQL.

Dengan pemahaman yang baik tentang subquery, pengguna dapat mengoptimalkan kinerja dan fleksibilitas dalam pengambilan data dan manipulasi data dalam basis data relasional. Subquery adalah alat yang berguna dalam pengembangan aplikasi database yang memungkinkan pengguna untuk mengeksekusi query yang lebih kompleks dan mendapatkan wawasan yang lebih dalam tentang data.

Praktikum dan Tugas

Praktikum kali ini, kita akan membuat tabel terlebih dahulu yang nantinya akan dipakai untuk mengimplementasikan jenis-jenis subquery dari soal-soal tugas yang diberikan.

Tabel Mahasiswa

Tabel Mata Kuliah

Tabel Jurusan

Tabel Dosen

Tabel Ambil Mata Kuliah

Tugas

SELECT kd_mk, nama_mk
FROM matakuliah
WHERE kode_dos IN
 (SELECT kode_dos
     FROM jurusan
     WHERE nama_jur = 'Teknik Elektro')

SELECT *
FROM mahasiswa
WHERE nim NOT IN
 (SELECT nim
     FROM ambil_mk)

SELECT *
FROM dosen
WHERE kode_dos IN
 (SELECT kode_dos
     FROM matakuliah
     WHERE semester > 3)

SELECT *
FROM matakuliah
WHERE kode_dos NOT IN
 (SELECT kode_dos
     FROM jurusan
     WHERE nama_jur = 'Teknik Elektro')

SELECT *
FROM dosen
WHERE kode_dos IN (
    SELECT kode_dos
    FROM matakuliah
    WHERE kd_mk NOT IN (
        SELECT kd_mk
        FROM ambil_mk
    )
)

SELECT *
FROM dosen
WHERE kode_dos IN (
    SELECT kode_dos
    FROM matakuliah
    WHERE sks > ANY (
        SELECT sks
        FROM matakuliah
    )
)

SELECT *
FROM mahasiswa
WHERE alamat IN (
    SELECT alamat_dos
    FROM dosen
    WHERE kode_dos NOT IN (
        SELECT kode_dos
        FROM jurusan
        WHERE nama_jur = 'Teknik Elektro'
    )
)

SELECT *
FROM mahasiswa
WHERE nim IN (
    SELECT nim
    FROM ambil_mk
    WHERE kd_mk IN (
        SELECT kd_mk
        FROM matakuliah
        WHERE kode_dos IN (
            SELECT kode_dos
            FROM jurusan
            WHERE nama_jur = 'Teknik Elektro'
        )
    )
)

Referensi

Ahmad Nugroho, S.Kom., M.Kom. (2026). SQL SUB QUERY. [Modul 6 Praktikum Basis Data].


메타데이터
post_id
a5502f89bc47
slug
basis-data-6-sql-sub-query-a5502f89bc47
url
https://medium.com/@rakamushadaq76/basis-data-6-sql-sub-query-a5502f89bc47
canonical_url
https://medium.com/@rakamushadaq76/basis-data-6-sql-sub-query-a5502f89bc47
author_url
https://medium.com/@rakamushadaq76
status
ok
fetched_at
2026-08-25 20:26:55