SQL Subquery Sertai dengan Outer Query

Sql Subquery Sertai Dengan Outer Query



Apabila ia datang untuk bekerja dengan pangkalan data hubungan, anda perlu menguasai cara memanipulasi dan menggabungkan pertanyaan untuk melaksanakan tugas yang anda inginkan. Itulah sebabnya setiap enjin pangkalan data relasi melaksanakan citarasa bahasa SQLnya dengan cuba menyediakan ciri, kecekapan dan kemudahan penggunaan yang luar biasa untuk penggunanya.

Salah satu ciri SQL yang paling berkuasa ialah subqueries. Subkueri ialah satu set pertanyaan bersarang dalam pertanyaan yang lebih besar dan lebih kompleks. Subqueries membolehkan anda mendapatkan semula data atau melakukan operasi yang lebih kompleks sebagai satu entiti.







Kita boleh menggunakan subkueri untuk melakukan penapisan data, pengisihan, pengagregatan pada berbilang jadual dan banyak lagi.



Walau bagaimanapun, ciri lain yang tersembunyi di bawah subquery SQL dikenali sebagai subquery joins. Ini adalah serupa dengan subkueri; sebaliknya, ia adalah gabungan yang membolehkan anda menggunakan subkueri dalam pertanyaan luar untuk menggabungkan jadual bersama-sama.



Jika kepala anda berpusing, jangan risau kerana sambungan subkueri boleh mencabar untuk dikuasai, terutamanya pada permulaannya. Walau bagaimanapun, tutorial ini cuba memecahkan cantuman subkueri dalam langkah asas tanpa meninggalkan terlalu banyak peluang.





Perlu diingat bahawa kami menganggap bahawa anda bukan baru dalam SQL, SQL Joins, SQL Subqueries, atau sebagainya. Namun, jika ya, semak tutorial kami tentang topik untuk mengetahui lebih lanjut.

Kuasai SQL Outer Joins

Jika anda ingin memahami cara bekerja dengan cantuman subkueri, mempelajari cara bekerja dengan cantuman luar ialah faktor utama.



Jika anda tidak biasa, gabungan luar SQL membolehkan anda mengambil semua baris dari satu jadual dan baris yang sepadan dari jadual kedua. Ia lebih kompleks sedikit daripada itu, termasuk sambung luar kiri, sambung luar kanan, sambung luar penuh, dsb.

Dalam gabungan luar kiri SQL, pertanyaan mengembalikan semua baris dari jadual kiri dan baris yang sepadan dari jadual kanan. Pertanyaan termasuk nilai NULL dalam lajur yang terhasil jika tiada baris yang sepadan dalam jadual kanan.

Dalam kes gabungan luar kanan, pertanyaan mengembalikan semua baris dari jadual kanan tetapi hanya baris yang sepadan dari jadual kiri. Begitu juga, pertanyaan termasuk nilai NULL jika tiada baris yang sepadan dari jadual kiri.

Akhirnya, kami mempunyai gabungan luar sepenuhnya. Gabungan ini mengembalikan semua baris dari jadual kanan dan kiri serta nilai NULL untuk sebarang rekod yang tidak sepadan.

SQL Subquery Joins

Sekarang setelah kita memahami tentang subkueri SQL, mari bercakap tentang sambung subkueri. Cantuman subkueri membolehkan kami menggunakan subkueri dalam pertanyaan luar untuk menyertai jadual.

Jika anda bertanya, adakah itu? Ya, itu sahaja yang dilakukan oleh penyertaan subkueri.

Untuk menunjukkan ini dengan lebih baik, ambil contoh sintaks berikut yang ditunjukkan dalam perkara berikut:

PILIH *
DARI jadual1
KIRI LUAR SERTAI (
PILIH lajur1, lajur2
DARI jadual2
) AS subquery
PADA jadual1.column3 = subquery.column1;


Dalam sintaks sebelumnya, kami memilih semua lajur daripada jadual satu menggunakan gabungan luar kiri untuk menyertainya dengan subkueri. Peranan subquery adalah untuk mengambil lajur yang ditakrifkan daripada Jadual 2. Kami kemudian menyertainya dengan Jadual 1 pada syarat lajur 2 dari Jadual 1 dan lajur 1 daripada subquery.

Contoh Praktikal:

Secara teorinya, ia kelihatan kurang intuitif tetapi marilah kita mengambil senario dunia sebenar dengan mengambil pangkalan data Sakila.

Katakan kita ingin mendapatkan semula senarai semua filem dalam pangkalan data dan bahasa masing-masing. Bahasa filem disimpan dalam jadual bahasa, dan nama filem disimpan dalam jadual filem.

Walau bagaimanapun, jadual filem mempunyai kunci asing yang dipanggil lajur 'id_bahasa' daripada jadual bahasa. Oleh itu, kita boleh menggunakan sambung subkueri dengan sambung luar kiri untuk menggabungkan dua jadual bersama-sama seperti yang ditunjukkan dalam pertanyaan berikut:

PILIH f.tajuk, l.nama AS bahasa
DARI filem f
KIRI LUAR SERTAI (
PILIH id_bahasa, nama
DARI bahasa
) SEBAGAI l
ON f.language_id = l.language_id;


Dalam contoh pertanyaan sebelumnya, kami memilih lajur tajuk daripada jadual filem dan lajur nama daripada jadual bahasa.

Kami kemudian menggunakan subquery untuk memilih language_id dan lajur nama daripada jadual bahasa. Langkah seterusnya ialah menggabungkannya dengan jadual filem dengan syarat language_id daripada jadual filem sama dengan language_id daripada jadual bahasa.

Untuk memastikan bahawa semua filem disertakan dalam keputusan, kita perlu menggunakan gabungan luar kiri yang terdiri daripada semua hasil daripada jadual kiri yang, dalam kes ini, adalah jadual filem.

Contoh output adalah seperti berikut:


Kita juga boleh melakukan perkara yang sama dengan sambung luar kanan. Sintaksnya adalah seperti berikut:

PILIH *
DARI jadual1
SERTAI LUAR KANAN (
PILIH lajur1, lajur2
DARI jadual2
) AS subquery
PADA jadual1.column3 = subquery.column1;


Ini berkelakuan serupa tetapi termasuk semua rekod dalam jadual yang betul walaupun tiada rekod yang sepadan.

Perkara Berguna untuk Tahu

Adalah baik untuk memahami bahawa walaupun gabungan subkueri sangat berguna dan boleh mengoptimumkan aliran kerja anda, gunakannya dengan berhati-hati.

Sebagai contoh, elakkan menggunakan gabungan subkueri dengan set data yang besar. Ini kerana mereka boleh mengembalikan rekod yang luas yang boleh memberi kesan kepada prestasi pangkalan data.

Pertimbangkan untuk menggunakan alat analisis pertanyaan sebelum melaksanakan sebarang cantuman subkueri.

Kesimpulan

Tutorial ini meneroka asas bekerja dengan subquery dan subquery joins dalam SQL. Pada penghujung tutorial ini, anda kini memahami cara bekerja dengan sambungan subkueri, sebab anda mungkin perlu menggunakannya dan contoh praktikal tentang cara ia boleh membantu anda dalam aliran kerja anda.