TUGAS BASIS DATA
(SQL BERTINGKAT)
Disusun oleh :
Nama : 1. Aisyah Syifa Salsabilla
2. Dania Afidzha Rayya
Kelas : XI-RPL
REKAYASA PERANGKAT LUNAK
SMK MASKUMAMBANG 2
DUKUN GRESIK
A. SQL BERTINGKAT
SQL bertingkat atau subquery adalah teknik dalam SQL di mana sebuah query
ditempatkan di dalam query lain. Tujuannya adalah untuk mengambil data yang hasilnya
akan digunakan oleh query utama, memungkinkan pengambilan data yang lebih
kompleks dan dinamis. Berikut adalah penjelasan lebih lanjut mengenai SQL
bertingkat:Berikut adalah modul singkat tentang query bertingkat:
1. Pengertian Subquery
Subquery adalah query yang bersarang di dalam query lainnya. Subquery
digunakan untuk mengambil data yang hasilnya dipakai dalam query utama. Subquery
biasanya dibungkus dalam tanda kurung.
Contoh dasar subquery:
Dalam contoh ini, subquery digunakan untuk mendapatkan id_departemen dari tabel
departemen dengan nama "HR", dan hasilnya dipakai oleh query utama untuk
mendapatkan daftar karyawan dari departemen tersebut.
2. Aturan penulisan Subqery
Penulisan subquery atau kueri turunan dalam sistem basis data (misalnya
SQL) melibatkan pembuatan kueri di dalam kueri utama. Subquery digunakan untuk
menghasilkan data sementara yang bisa digunakan oleh kueri utama. Ada beberapa
aturan penting dalam penulisan subquery:
1) Letakkan Subquery di Dalam Kurung
Semua subquery harus dibungkus dalam tanda kurung agar mesin
database memahami bahwa itu adalah kueri terpisah yang harus dijalankan
terlebih dahulu.
Contoh:
2) Subquery Bisa Digunakan di SELECT, FROM, atau WHERE
Di bagian SELECT: Subquery menghasilkan satu nilai yang digunakan
sebagai bagian dari hasil akhir.
Di bagian FROM: Subquery bertindak sebagai tabel sementara.
Di bagian WHERE: Subquery digunakan untuk memfilter hasil kueri
utama.
Contoh:
3) Subquery Harus Menghasilkan Data yang Sesuai
Tipe data yang dihasilkan subquery harus sesuai dengan tempat di
mana ia digunakan. Misalnya, subquery yang digunakan di bagian WHERE
harus menghasilkan nilai yang dapat dibandingkan dengan kolom utama.
Contoh: Jika kueri utama memeriksa ID pelanggan, subquery juga harus
mengembalikan ID pelanggan, bukan kolom lain seperti nama pelanggan.
4) Gunakan Subquery Terkait (Correlated Subquery) Secara
Efisien
Subquery terkait mengacu pada kueri utama, artinya subquery ini
dieksekusi berulang kali untuk setiap baris dalam kueri utama. Ini bisa
memperlambat eksekusi, jadi gunakan hanya jika diperlukan.
Contoh:
5) Hindari Penggunaan Subquery yang Tidak Efisien
Sebisa mungkin hindari penggunaan subquery yang terlalu rumit atau
dapat digantikan dengan JOIN, karena performa eksekusi JOIN biasanya lebih
baik dibandingkan subquery kompleks.
Contoh mengganti subquery dengan JOIN:
sql
Copy code
-- Dengan subquery
-- Menggunakan JOIN untuk performa yang lebih baik
6) Perhatikan Penggunaan IN, ANY, ALL, dan EXISTS
IN: Memeriksa apakah nilai ada di dalam daftar hasil dari subquery.
ANY/ALL: Membandingkan nilai dengan setiap hasil dari subquery.
EXISTS: Memeriksa apakah subquery menghasilkan setidaknya satu
baris.
Contoh penggunaan EXISTS:
Dengan mengikuti aturan ini, penulisan subquery akan lebih efektif dan
menghasilkan hasil yang lebih akurat serta performa yang lebih baik.
2. Jenis-jenis Subquery
Subquery dapat dibagi menjadi beberapa jenis berdasarkan bagaimana mereka
digunakan dan bagaimana hasilnya diintegrasikan dengan kueri utama. Berikut adalah
jenis-jenis subquery:
1) Subquery Skalar (Scalar Subquery)
Definisi: Menghasilkan satu nilai tunggal (satu baris dan satu kolom).
Penggunaan: Biasanya digunakan di dalam klausa SELECT, WHERE, atau
HAVING.
Contoh:
Catatan: Jika subquery menghasilkan lebih dari satu baris, akan menyebabkan
error.
2) Subquery Baris Tunggal (Single-row Subquery)
Definisi: Menghasilkan satu baris dengan satu atau beberapa kolom.
Penggunaan: Biasanya digunakan di dalam klausa WHERE atau HAVING dengan
operator perbandingan seperti =, <, >, >=, atau <=.
Contoh:
Catatan: Jika subquery menghasilkan lebih dari satu baris, akan menyebabkan
error.
3) Subquery Multibaris (Multiple-row Subquery)
Definisi: Menghasilkan lebih dari satu baris (tetapi biasanya hanya satu
kolom).
Penggunaan: Digunakan dengan operator seperti IN, ANY, ALL.
Contoh:
4) Subquery Multikolom (Multiple-column Subquery)
Definisi: Menghasilkan lebih dari satu kolom (dapat berupa satu atau lebih
baris).
Penggunaan: Digunakan di klausa IN atau dibandingkan dengan lebih dari
satu kolom di kueri utama.
Contoh:
5) Subquery Terkait (Correlated Subquery)
Definisi: Subquery yang bergantung pada nilai dari kueri utama, sehingga
subquery dieksekusi sekali untuk setiap baris dari kueri utama.
Penggunaan: Digunakan di klausa WHERE, sering digunakan dalam optimisasi
kueri yang kompleks.
Contoh:
Catatan: Karena dieksekusi berulang kali, ini bisa memperlambat kinerja jika
tidak dioptimalkan.
6) Subquery Tidak Terkait (Non-correlated Subquery)
Definisi: Subquery yang tidak bergantung pada kueri utama dan dapat
dieksekusi secara independen.
Penggunaan: Digunakan di bagian mana saja dari kueri utama.
Contoh:
Catatan: Kueri ini lebih efisien karena hanya dieksekusi sekali.
7) Subquery dalam Klausa FROM (Inline View)
Definisi: Subquery yang digunakan di klausa FROM, bertindak sebagai tabel
sementara.
Penggunaan: Berguna untuk menyederhanakan kueri kompleks atau
menyusun ulang data sebelum kueri utama.
Contoh:
8) Subquery dengan Operator EXISTS
Definisi: Mengembalikan TRUE jika subquery menghasilkan setidaknya satu
baris, dan FALSE jika tidak ada baris yang dihasilkan.
Penggunaan: Digunakan di klausa WHERE atau HAVING.
Contoh:
9) Subquery dengan Operator ANY atau ALL
Definisi:
o ANY: Memeriksa apakah suatu kondisi benar untuk setidaknya satu
hasil dari subquery.
o ALL: Memeriksa apakah suatu kondisi benar untuk semua hasil dari
subquery.
Dengan memahami jenis-jenis subquery ini, kita dapat memilih tipe subquery
yang paling tepat untuk kebutuhan kueri yang berbeda.
3. Subquery Tunggal vs. Subquery Ganda
Subquery Tunggal: Menghasilkan satu nilai dan digunakan dalam query
utama.
Subquery Ganda: Menghasilkan beberapa nilai, biasanya digunakan dengan
klausa IN, ANY, atau ALL.
Contoh subquery tunggal:
Query ini mengambil produk dengan harga tertinggi.
Contoh subquery ganda:
Query ini mencari karyawan yang bekerja di departemen yang berlokasi di Jakarta.
4. Operator dalam Subquery
IN: Memeriksa apakah nilai ada dalam daftar hasil subquery.
EXISTS: Memeriksa apakah subquery menghasilkan baris.
ANY dan ALL: Digunakan untuk membandingkan satu nilai dengan hasil dari
subquery.
5. Subquery Terkait (Correlated Subquery)
Subquery terkait adalah subquery yang bergantung pada query utama untuk nilainya.
Dengan kata lain, subquery ini dieksekusi sekali untuk setiap baris dalam query
utama.
Contoh correlated subquery:
Query ini mengambil karyawan yang gajinya lebih besar dari rata-rata gaji di
departemennya.
6. Penggunaan dalam Klausa Lain
Selain SELECT dan WHERE, subquery bisa digunakan dalam:
HAVING: Untuk memfilter hasil berdasarkan grup setelah perhitungan agregat.
FROM: Menggunakan hasil subquery sebagai tabel sementara (alias derived
table).
Contoh subquery dalam FROM:
7. Keuntungan Menggunakan Subquery
Memungkinkan pembacaan query yang lebih modular dan mudah dipahami.
Bisa menyederhanakan masalah kompleks dengan memecahnya menjadi bagian-
bagian yang lebih kecil.
Berguna ketika tidak bisa menggunakan JOIN atau teknik lain untuk mengambil
data.
8. Keterbatasan Subquery
Bisa memperlambat performa jika tidak dioptimalkan, terutama subquery yang
kompleks atau subquery terkait.
Tidak selalu lebih efisien daripada penggunaan JOIN untuk query dengan
hubungan antar tabel.
Dengan menggunakan subquery secara efektif, kita dapat membuat query yang kuat
dan fleksibel untuk mengambil informasi dari basis data yang kompleks.