Pengenalan
Bayangkan mencari perpustakaan yang luas yang mengandungi buku dengan buku bersarang di dalamnya. Untuk mencari maklumat khusus, anda mungkin perlu berunding dengan buku yang lebih kecil terlebih dahulu, kemudian gunakan maklumat tersebut untuk mencari yang lebih besar. Ini menggambarkan konsep pertanyaan bersarang di SQL. Pertanyaan -pertanyaan ini, yang tertanam di dalam yang lain, memudahkan pengekstrakan data kompleks. Panduan ini meneroka fungsi pertanyaan bersarang dan menunjukkan aplikasi mereka untuk pengurusan pangkalan data yang cekap.
Objektif pembelajaran utama
- Pegang konsep pertanyaan bersarang (subqueries) dalam SQL.
- Membina dan melaksanakan pertanyaan bersarang dalam pelbagai kenyataan SQL.
- Membezakan antara pertanyaan bersarang yang berkorelasi dan tidak berkorelasi.
- Mengoptimumkan pertanyaan SQL menggunakan struktur bersarang untuk meningkatkan prestasi.
Jadual Kandungan
- Memahami pertanyaan bersarang di SQL
- Meneroka jenis pertanyaan bersarang di SQL
- Aplikasi praktikal pertanyaan bersarang
- Mengelakkan perangkap pertanyaan bersarang biasa
- Soalan yang sering ditanya
Memahami pertanyaan bersarang di SQL
Pertanyaan bersarang, juga dikenali sebagai subquery, adalah pertanyaan SQL yang tertanam di dalam yang lain. Output pertanyaan dalaman memberitahu pertanyaan luar, membolehkan pengambilan data kompleks. Ini amat berharga apabila hasil pertanyaan dalaman bergantung pada data pertanyaan luar.
Sintaks asas
Pilih Column_name (s) Dari table_name Di mana column_name = (pilih column_name dari table_name di mana keadaan);
Meneroka jenis pertanyaan bersarang di SQL
Pertanyaan bersarang (subqueries) memudahkan pengambilan data kompleks dengan membenamkan satu pertanyaan SQL di dalam yang lain. Ini penting untuk menulis kod SQL yang cekap dan canggih. Bahagian ini memperincikan pelbagai jenis pertanyaan bersarang dengan contoh dan output yang diharapkan.
Subqueries baris tunggal dalam SQL
Subquery baris tunggal menghasilkan satu atau lebih lajur dalam satu baris. Ia sering digunakan dengan pengendali perbandingan (=,>, =,
Menentukan ciri-ciri subqueries baris tunggal
- Output baris tunggal: menghasilkan satu baris data.
- Pengendali perbandingan: biasanya digunakan dengan pengendali perbandingan.
- Pelbagai lajur mungkin: boleh mengembalikan pelbagai lajur dalam baris tunggal.
Contoh: Mengenal pasti pekerja yang berpendapatan melebihi purata gaji
Jadual: Pekerja
Pekerja_id | First_name | last_name | gaji | jabatan_id |
---|---|---|---|---|
1 | John | Doe | 90000 | 1 |
2 | Jane | Smith | 95000 | 1 |
3 | Alice | Johnson | 60000 | 2 |
4 | Bob | Coklat | 65000 | 2 |
5 | Charlie | Davis | 40000 | 3 |
6 | Hawa | Adams | 75000 | 3 |
Jadual: Jabatan
jabatan_id | jabatan_name | location_id |
---|---|---|
1 | Jualan | 1700 |
2 | Pemasaran | 1700 |
3 | Ia | 1800 |
4 | Hr | 1900 |
Pilih first_name, last_name, gaji Dari pekerja Di mana gaji> (pilih AVG (gaji) dari pekerja);
Output:
<code>| first_name | last_name | salary | |------------|-----------|--------| | John | Doe | 90000 | | Jane | Smith | 95000 |</code>
Pertanyaan dalaman mengira gaji purata. Pertanyaan luar kemudian memilih pekerja yang berpendapatan di atas purata ini.
Subqueries berbilang baris di SQL
Subqueries berbilang baris mengembalikan pelbagai baris. Mereka biasanya digunakan IN
ANY
atau ALL
pengendali untuk membandingkan lajur terhadap satu set nilai.
Contoh: Mendapatkan pekerja dari jabatan tertentu
Pilih first_name, last_name Dari pekerja Di mana jabatan_id masuk (pilih jabatan_id dari jabatan di mana location_id = 1700);
Output:
<code>| first_name | last_name | |------------|-----------| | John | Doe | | Jane | Smith |</code>
Pertanyaan dalaman memilih ID jabatan dari lokasi tertentu. Pertanyaan luar kemudian mengambil pekerja yang bekerja di jabatan tersebut.
Subqueries berkorelasi dalam SQL
Subquery berkorelasi bergantung kepada pertanyaan luar untuk nilai -nilainya. Tidak seperti subqueries bebas, ia dilaksanakan secara dinamik untuk setiap baris yang diproses oleh pertanyaan luar.
Ciri -ciri subqueries berkorelasi
- Ketergantungan pada pertanyaan luar: lajur rujukan pertanyaan dalaman dari pertanyaan luar.
- Pelaksanaan baris demi baris: Pertanyaan dalaman berjalan berulang kali, sekali setiap baris dalam pertanyaan luar.
- Implikasi prestasi: Pelaksanaan berulang boleh memberi kesan kepada prestasi pada dataset yang besar.
Contoh: Mengenal pasti pekerja yang lebih banyak daripada purata jabatan mereka
Pilih first_name, gaji Dari pekerja E1 Di mana gaji> (pilih avg (gaji) dari pekerja e2 di mana e1.department_id = e2.department_id);
Output: (output bergantung kepada data dalam jadual employees
)
Pertanyaan dalaman mengira gaji purata bagi setiap jabatan, berbanding dengan pekerja yang diproses oleh pertanyaan luar.
Subqueries bersarang di SQL
Subqueries bersarang melibatkan pembiakan satu subquery di dalam yang lain, mewujudkan struktur berlapis. Ini membolehkan manipulasi dan penapisan data yang kompleks.
Struktur subqueries bersarang
- Pertanyaan luar: Pertanyaan utama yang mengandungi subqueries bersarang.
- Pertanyaan dalaman (IES): subqueries yang tertanam dalam pertanyaan luar.
Contoh: Mengenal pasti jabatan dengan pekerja yang berpendapatan di atas purata
Pilih jabatan_id, jabatan_name Dari jabatan Di mana jabatan_id masuk ( Pilih jabatan_id Dari pekerja Di mana gaji> (pilih AVG (gaji) dari pekerja) );
Output: (output akan bergantung kepada data dalam jadual employees
dan departments
)
Subqueries skalar
Subquery skalar mengembalikan satu nilai (satu baris, satu lajur). Ia berguna di mana sahaja satu nilai diperlukan dalam pertanyaan utama.
Ciri -ciri subqueries skalar
- Pulangan nilai tunggal: Mengembalikan hanya satu nilai.
- Pelbagai Klausa Penggunaan: Boleh digunakan dalam
SELECT
,WHERE
, danHAVING
klausa. - Perbandingan yang cekap: Berguna untuk perbandingan terhadap satu nilai yang diperolehi.
Contoh: Gaji pekerja berbanding dengan purata
Pilih first_name, last_name, gaji - (pilih avg (gaji) dari pekerja) sebagai salary_difference Dari pekerja;
Output: (output bergantung kepada data dalam jadual employees
)
Aplikasi praktikal pertanyaan bersarang
Pertanyaan bersarang sangat berharga untuk pelbagai senario pengambilan data yang kompleks:
Penapisan data berdasarkan nilai yang diperolehi
Pertanyaan bersarang dengan cekap menapis data berdasarkan nilai yang dikira dari jadual lain.
Pengiraan agregat
Agregat (contohnya, AVG, SUM, Count) yang dikira dalam pertanyaan bersarang boleh digunakan dalam pertanyaan luar untuk penapisan bersyarat.
Pelaksanaan logik bersyarat
Pertanyaan bersarang menyediakan mekanisme untuk menggabungkan logik bersyarat ke dalam kenyataan SQL.
Pengiraan peringkat baris dengan subqueries berkorelasi
Subqueries berkorelasi membolehkan perhitungan peringkat baris berdasarkan baris semasa dalam pertanyaan luar.
Mengelakkan perangkap pertanyaan bersarang biasa
Walaupun pertanyaan yang kuat dan bersarang dapat memperkenalkan masalah:
Pelbagai baris pulangan di subqueries skalar
Subquery skalar mesti mengembalikan satu nilai; Pelbagai baris akan menyebabkan kesilapan.
Degradasi prestasi
Pertanyaan bersarang, terutamanya yang berkorelasi, boleh memberi kesan kepada prestasi yang signifikan, terutamanya dengan dataset yang besar. Pertimbangkan pendekatan alternatif seperti bergabung.
Keterlaluan kurungan
Parentheses yang tidak betul boleh menyebabkan kesilapan logik dan hasil yang tidak dijangka.
Pengendalian nilai null
Berhati -hati mempertimbangkan bagaimana nilai nol dikendalikan untuk mengelakkan penapisan yang tidak diingini.
Kesimpulan
Pertanyaan bersarang SQL (subqueries) adalah alat yang berkuasa untuk pengambilan data kompleks yang cekap. Memahami pelbagai jenis-single-row, multi-row, berkorelasi, dan skalar-sangat penting untuk pengurusan pangkalan data yang berkesan. Dengan mengikuti amalan terbaik dan mengelakkan perangkap biasa, anda boleh memanfaatkan pertanyaan bersarang untuk meningkatkan kemahiran SQL anda dan mengoptimumkan prestasi pangkalan data.
Soalan yang sering ditanya
Q1. Apakah pertanyaan bersarang di SQL?
Pertanyaan bersarang, atau subquery, adalah pertanyaan SQL yang tertanam dalam pertanyaan lain. Hasil pertanyaan dalaman digunakan oleh pertanyaan luar untuk melakukan pengambilan data yang kompleks.
S2. Apakah jenis pertanyaan bersarang?
Jenis-jenis utama adalah subqueries berturut-turut, berbilang, berkorelasi, dan skalar, masing-masing sesuai dengan tugas yang berbeza.
Q3. Bilakah saya harus menggunakan subquery berkorelasi?
Gunakan subquery berkorelasi apabila pertanyaan dalaman perlu merujuk lajur dari pertanyaan luar untuk pemprosesan dinamik, baris demi baris.
Q4. Bolehkah pertanyaan bersarang mempengaruhi prestasi?
Ya, pertanyaan bersarang, terutama yang berkorelasi, dapat mempengaruhi prestasi yang signifikan. Mengoptimumkan dengan menganalisis rancangan pertanyaan dan mempertimbangkan alternatif seperti bergabung.
Atas ialah kandungan terperinci Pertanyaan bersarang di SQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Memanfaatkan kuasa AI di peranti: Membina CLI Chatbot Peribadi Pada masa lalu, konsep pembantu AI peribadi kelihatan seperti fiksyen sains. Bayangkan Alex, seorang peminat teknologi, bermimpi seorang sahabat AI yang pintar, yang tidak bergantung

Pelancaran AI4MH mereka berlaku pada 15 April, 2025, dan Luminary Dr. Tom Insel, M.D., pakar psikiatri yang terkenal dan pakar neurosains, berkhidmat sebagai penceramah kick-off. Dr. Insel terkenal dengan kerja cemerlangnya dalam penyelidikan kesihatan mental dan techno

"Kami mahu memastikan bahawa WNBA kekal sebagai ruang di mana semua orang, pemain, peminat dan rakan kongsi korporat, berasa selamat, dihargai dan diberi kuasa," kata Engelbert, menangani apa yang telah menjadi salah satu cabaran sukan wanita yang paling merosakkan. Anno

Pengenalan Python cemerlang sebagai bahasa pengaturcaraan, terutamanya dalam sains data dan AI generatif. Manipulasi data yang cekap (penyimpanan, pengurusan, dan akses) adalah penting apabila berurusan dengan dataset yang besar. Kami pernah meliputi nombor dan st

Sebelum menyelam, kaveat penting: Prestasi AI adalah spesifik yang tidak ditentukan dan sangat digunakan. Dalam istilah yang lebih mudah, perbatuan anda mungkin berbeza -beza. Jangan ambil artikel ini (atau lain -lain) sebagai perkataan akhir -sebaliknya, uji model ini pada senario anda sendiri

Membina portfolio AI/ML yang menonjol: Panduan untuk Pemula dan Profesional Mewujudkan portfolio yang menarik adalah penting untuk mendapatkan peranan dalam kecerdasan buatan (AI) dan pembelajaran mesin (ML). Panduan ini memberi nasihat untuk membina portfolio

Hasilnya? Pembakaran, ketidakcekapan, dan jurang yang melebar antara pengesanan dan tindakan. Tak satu pun dari ini harus datang sebagai kejutan kepada sesiapa yang bekerja dalam keselamatan siber. Janji Agentic AI telah muncul sebagai titik perubahan yang berpotensi. Kelas baru ini

Impak segera berbanding perkongsian jangka panjang? Dua minggu yang lalu Openai melangkah ke hadapan dengan tawaran jangka pendek yang kuat, memberikan akses kepada pelajar A.S. dan Kanada.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma