SUB QUERY
TUJUAN
• Mahasiswa mampu memahami pengertian sub
query dan sintaksnya pada basis data
• Mahasiswa mampu memahami operasi
subquey dan jenis-jenisnya di dalam
pengambilan data
• Mahasiswa mampu menyelesaikan kasus-
kasus pengambilan data yang kompleks
dengan pendekatan sub query.
Contents
1 Definisi Sub Query
2 Sintaks Sub Query
3 Jenis-jenis Sub Query
4 Kasus Sub Query
Definisi
Subquery (disebut juga subselect atau nested
select/query 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”
Sintaks
Jenis-jenis Sub Query
1. Scalar Sub Query
Subquery baris tunggal (scalar) hanya
mengembalikan hasil satu baris data.
Operator =, >, >=, <, <=, atau <>.
Jenis-jenis Sub Query
2. Multiple-row Sub Query
Subquery baris ganda (multiple-row)
mengembalikan lebih dari satu baris data.
Subquery baris ganda dapat menggunakan
operator komparasi IN, ANY/SOME, atau ALL.
Jenis-jenis Sub Query
3. Multiple-column Sub Query
Subquery kolom ganda (multiple-column)
mengembalikan lebih dari satu baris dan satu
kolom data.
Operator Sub Query
• Operator IN
Sama dengan member di dalam list.
• Operator ANY/SOME
Membandingkan suatu nilai dengan setiap nilai yang
dikembalikan oleh subquery.
Operator = ANY ekuivalen dengan IN.
Operator < ANY ekuivalen dengan MAX (kurang dari
maks).
Operator > ANY ekuivalen dengan MIN (lebih dari min).
• Operator ALL
Membandingkan suatu nilai dengan semua nilai yang
dikembalikan oleh subquery.
Operator < ALL ekuivalen dengan MIN (kurang dari min).
Operator > ALL ekuivalen dengan MAX (lebih dari maks).
Operator EXISTS
Operator EXISTS dan NOT EXISTS
digunakan pada correlated subquery untuk
memeriksa apakah subquery
mengembalikan hasil atau tidak. Apabila
subquery mengembalikan hasil, EXISTS
akan mengembalikan nilai true; begitu pula
sebaliknya, jika tidak mengembalikan hasil.
Contoh :
SELECT * FROM mahasiswa
WHERE EXISTS
(SELECT kd_jur FROM jurusan
WHERE kd_jur = mahasiswa.kd_jur);
Latihan
MAHASISWA
NIM NAMA ALAMAT SEX KD_JUR
111 Iwan Jl. Bandung L 1 JURUSAN
112 Budi Jl. Surabaya L 2 KD_JUR NAMA_JUR
113 Wati Jl. Semarang P 2 1 [Link]
114 Rere Jl. Bogor L 3 2 [Link]
115 Mira Jl. Bogor P 4 3 [Link]
116 Lala Jl. Jakarta P 6 4 [Link]
117 Agus Jl. Surabaya L 2 5 [Link]
TAMPILKAN DATA MAHASISWA YANG MEMILIKI KODE JURUSAN
LEBIH BESAR DARI SEMBARANG KODE_JURUSAN YANG ADA DI
TABEL JURUSAN
TAMPILKAN DATA MAHASISWA YANG MEMILIKI KODE JURUSAN
DAN JENIS KELAMIN SAMA DENGAN MAHASISWA DENGAN NIM=
117
Latihan
1. Tampilkan data mahasiswa yang memiliki alamat sama
dengan alamat mahasiswa dengan nim=114 (gunakan
scalar sub query)
2. Tampilkan data mahasiswa yang memiliki kode jurusan
seperti yang ada pada tabel jurusan (gunakan operator
IN)
3. Tampilkan data mahasiswa yang memiliki kode jurusan
lebih kecil dari sembarang kode jurusan pada tabel
jurusan (gunakan operator ANY)
4. Tampilkan data mahasiswa yang memiliki kode jurusan
lebih besar dari semua kode jurusan pada tabel jurusan
(gunakan operator ALL)
5. Tampilkan data mahasiswa yang kode jurusannya
tercantum pada tabel jurusan (gunakan operator
EXISTS)
Soal ...
1. Tampilkan data mahasiswa yang memiliki jenis
kelamin tidak sama dengan mahasiswa dengan
nim 111
2. Tampilkan data mahasiswa yang memiliki kode
jurusan selain kode jurusan yang terdapat pada
tabel jurusan;
3. Tampilkan data mahasiswa yang memiliki jenis
kelamin dan alamat sama dengan mahasiswa
dengam nim 112
SELAMAT BELAJAR ...