Pertanyaan bersarang di SQL
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!

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

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Pengekodan Vibe membentuk semula dunia pembangunan perisian dengan membiarkan kami membuat aplikasi menggunakan bahasa semulajadi dan bukannya kod yang tidak berkesudahan. Diilhamkan oleh penglihatan seperti Andrej Karpathy, pendekatan inovatif ini membolehkan Dev

Februari 2025 telah menjadi satu lagi bulan yang berubah-ubah untuk AI generatif, membawa kita beberapa peningkatan model yang paling dinanti-nantikan dan ciri-ciri baru yang hebat. Dari Xai's Grok 3 dan Anthropic's Claude 3.7 Sonnet, ke Openai's G

Yolo (anda hanya melihat sekali) telah menjadi kerangka pengesanan objek masa nyata yang terkemuka, dengan setiap lelaran bertambah baik pada versi sebelumnya. Versi terbaru Yolo V12 memperkenalkan kemajuan yang meningkatkan ketepatan

Artikel ini mengkaji semula penjana seni AI atas, membincangkan ciri -ciri mereka, kesesuaian untuk projek kreatif, dan nilai. Ia menyerlahkan Midjourney sebagai nilai terbaik untuk profesional dan mengesyorkan Dall-E 2 untuk seni berkualiti tinggi dan disesuaikan.

CHATGPT 4 kini tersedia dan digunakan secara meluas, menunjukkan penambahbaikan yang ketara dalam memahami konteks dan menjana tindak balas yang koheren berbanding dengan pendahulunya seperti ChATGPT 3.5. Perkembangan masa depan mungkin merangkumi lebih banyak Inter yang diperibadikan

Artikel ini membincangkan model AI yang melampaui chatgpt, seperti Lamda, Llama, dan Grok, menonjolkan kelebihan mereka dalam ketepatan, pemahaman, dan kesan industri. (159 aksara)

Mistral OCR: Merevolusi Generasi Pengambilan Pengambilan semula dengan Pemahaman Dokumen Multimodal Sistem Generasi Pengambilan Retrieval (RAG) mempunyai keupayaan AI yang ketara, membolehkan akses ke kedai data yang luas untuk mendapatkan respons yang lebih tepat

Artikel ini membincangkan pembantu penulisan AI terkemuka seperti Grammarly, Jasper, Copy.ai, WriteSonic, dan Rytr, yang memberi tumpuan kepada ciri -ciri unik mereka untuk penciptaan kandungan. Ia berpendapat bahawa Jasper cemerlang dalam pengoptimuman SEO, sementara alat AI membantu mengekalkan nada terdiri
