SQL Bertingkat
SQL Bertingkat
(SQL BERTINGKAT)
DISUSUN OLEH :
SQL Bertingkat atau 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, 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. Sintaks formal subquery diperlihatkan
sebagai berikut:
Subquery dapat diklasifikasikan ke dalam tiga jenis: scalar , multiple-row, dan multiple-
column.
a. Scalar Subquery
Subquery baris tunggal (scalar ) hanya mengembalikan hasil satu baris data. Bentuk subquery ini
diperlihatkan seperti Gambar dibawah ini:
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 dibawah ini:
Subquery baris ganda dapat menggunakan operator komparasi IN, ANY/SOME, atau ALL.
c. Multiple-Column Subquery
Subquery kolom ganda (multiple-column) mengembalikan lebih dari satu baris dan satu kolom data.
Bentuk subquery ini diperlihatkan seperti Gambar dibawah ini:
Main query Return
102 Intan P
Subquery 103 Budi L
- Scalar Subquery
Contoh subquery baris tunggal adalah mendapatkan data siswa yang alamatnya sama dengan siswa
dengan nisn 9827, query nya yaitu:
Operasi diatas adalah alamat siswa dengan nisn 9827, kemudian hasilnya “JL.katulampa” akan
digunakan oleh main query.
- Multiple-Row Subquery
Pada subquery ini, menggunakan operator komparasi IN, ANY/SOME, atau ALL
1.) Operator IN
Operator IN memiliki arti; sama dengan member di dalam list. Sebagai contoh, kita bisa
menggunakan operator ini untuk memanggil kolom yang bersangkutan dalam sebuah tabel,
Querynya yaitu:
SELECT nama FROM siswa WHERE id_spp=(SELECT id_spp FROM siswa WHERE UPPER(nama)='Ahda Fahriyah')
EXISTS
SELECT id_kelas FROM kelas WHERE EXISTS (SELECT * FROM petugas)
SELECT NISN FROM siswa WHERE NOT EXISTS (SELECT id_petugas FROM p
etugas )