Subquery merupakan
sebuah query didalam query. Pengertian dari subquery adalah sebuah pernyataan
SELECT yang dilampirkan sebagai klausa dalam SQL pernyataan yang lain. subquery
digunakan untuk menentukan suatu nilai yang belum diketahui.
Contohnya adalah : SELECT
..... FROM ..... WHERE... (SELECT...FROM ....WHERE)
Yang tercetak hitam
adalah sebuah main query dan yang tercetak merah adalah sebuah subquery. Pada
pernyataan diatas subquey dijalankan terlebih dahulu kemudian menjalankan main
query jadi main query akan dijalankan ketika sudah mendapat inputan dari
subquery tersebut.
Contoh penulisan dari
subquery adalah :
SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM table) ;
Pembanding kolom dalam
subquery banyak kolom dapat berupa,yaitu:
- Pembandingan berpasangan
- Pembandingan tidak berpasangan.
Pada penulisan Query
bisa diletakkan di dalam klausa FROM untuk membentuk tabel temporer atau
disebut juga dengan inline view,
karena tidak membentuk object database.
Ekspresi scalar
subquery adalah subquery yang mengembalikan hanya satu nilai kolom dari satu
baris. Scalar subquery pada standart
SQL-92 hanya terbatas pada :
· SELECT Statement (klausa FROM dan WHERE saja)
· Daftar VALUE dari statement INSERT
Pada standart SQL-99,
scalar subqueries dapat diguanakan dalam :
· Kondisi dan ekspresi sebagai bagian dari
perintah DECODE dan CASE.
· Semua klausa dari SELECT Statement kecuali
GROUP BY.
Korelasi
Subquery
Korelasi SubQuery
digunakan untuk pemrosesan
baris per baris.
Tiap-tiap subquery dijalankan
sekali untuk setiap baris dari outer query. Prosesnya adalah sebagai berikut :
Pada proses korelasi
dimulai dengan mengambil baris
dari outer query,
kemudian inner query
dijalankan dengan menggunakan
nilai baris kandidat, kemudian
nilai dari inner
query digunakan untuk
melakukan kualifikasi atau mendiskualifikasi baris kandidat.
Fungsi Korelasi
Subquery
Korelasi Subquery
juga dapat digunakan
untuk meng-update baris
pada satu table berdasarkan pada baris dari table yang
lain, korelasi seperti itu dinamakan dengan Korelasi Update. Korelasi Subquery juga dapat
digunakan untuk menghapus baris pada satu table berdasarkan
pada baris dari
table yang lain,
korelasi seperti itu
dinamakan dengan Korelasi Delete.
Operator EXISTS dan NOT EXIST digunakan untuk menguji keberadaan dari baris dalam himpunan hasil dari
subquery.
Jika ditemukan, maka :
· pencarian tidak dilanjutkan dalam inner query
dan kondisi ditandai TRUE.
Jika tidak ditemukan,
maka :
· Kondisi ditandai FALSE dan kondisi pencarian
dilanjutkan dalam inner query.
With
Dengan menggunakan
klausa WITH, kita dapat