MySQL Tutorial SubQuery dengan Contoh
Apa itu subkueri?
Sub kueri adalah kueri pemilihan yang terdapat di dalam kueri lain. Kueri pemilihan dalam biasanya digunakan untuk menentukan hasil kueri pemilihan luar.
Mari kita lihat sintaks sub kueri –
Keluhan umum pelanggan di Perpustakaan Video MyFlix adalah rendahnya jumlah judul film. Manajemen ingin membeli film untuk kategori yang jumlah judulnya paling sedikit.
Anda dapat menggunakan kueri seperti
SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);
Ini memberikan hasil
Mari kita lihat cara kerja kueri ini
Hal di atas merupakan salah satu bentuk Subkueri Baris. Dalam sub-kueri seperti itu, kueri dalam hanya dapat memberikan SATU hasil. Operator yang diperbolehkan saat bekerja dengan subkueri baris adalah [=, >, =, <=, ,!=, ]
Mari kita lihat contoh lainnya,
Misalkan Anda menginginkan Nama dan Nomor Telepon anggota yang telah menyewa film dan belum mengembalikannya. Setelah Anda mendapatkan Nama dan Nomor Telepon, Anda menelepon mereka untuk memberikan pengingat. Anda dapat menggunakan kueri seperti
SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );
Mari kita lihat cara kerja kueri ini
Dalam hal ini, kueri dalam mengembalikan lebih dari satu hasil. Di atas adalah tipe Tsub-quer yang mampuy.
Sampai sekarang kita telah melihat dua pertanyaan, sekarang mari kita lihat contohnya permintaan tiga kali lipat!!!
Misalkan manajemen ingin memberi penghargaan kepada anggota dengan bayaran tertinggi.
Kita dapat menjalankan kueri seperti
Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));
Kueri di atas memberikan hasil sebagai berikut –
Sub-Kueri Vs Gabungan!
Jika dibandingkan dengan Joins , subkueri mudah digunakan dan dibaca. Caranya tidak serumit Bergabung
Oleh karena itu ada yang sering digunakan oleh Pemula SQL.
Namun sub-kueri memiliki masalah kinerja. Menggunakan gabungan alih-alih subkueri terkadang dapat memberi Anda peningkatan kinerja hingga 500 kali lipat.
Jika diberi pilihan, disarankan untuk menggunakan GABUNG pada sub kueri.
Sub-Kueri hanya boleh digunakan sebagai solusi cadangan ketika Anda tidak dapat menggunakan operasi GABUNG untuk mencapai hal di atas
Kesimpulan
- Subkueri adalah kueri yang disematkan di dalam kueri lain. Kueri yang disematkan dikenal sebagai kueri dalam dan kueri kontainer dikenal sebagai kueri luar.
- Sub kueri mudah digunakan, menawarkan fleksibilitas tinggi, dan dapat dengan mudah dipecah menjadi komponen logis tunggal yang membentuk kueri yang sangat berguna saat pengujian dan men-debug kueri.
- MySQL mendukung tiga jenis subkueri, subkueri skalar, baris, dan tabel.
- Sub kueri skalar hanya mengembalikan satu baris dan satu kolom.
- Sub kueri baris hanya mengembalikan satu baris tetapi dapat memiliki lebih dari satu kolom.
- Subkueri tabel dapat mengembalikan beberapa baris dan kolom.
- Subkueri juga dapat digunakan dalam kueri INSERT, UPDATE, dan DELETE.
- Untuk masalah performa, saat mengambil data dari beberapa tabel, sangat disarankan untuk menggunakan GABUNG daripada subkueri. Sub kueri hanya boleh digunakan dengan alasan yang baik.