Rumah > pangkalan data > tutorial mysql > Memahami SQL Subqueries: Panduan Lengkap dengan Contoh

Memahami SQL Subqueries: Panduan Lengkap dengan Contoh

Linda Hamilton
Lepaskan: 2024-12-27 01:18:12
asal
336 orang telah melayarinya

Understanding SQL Subqueries: A Complete Guide with Examples

Apakah Subkueri dalam SQL?

Sesuatu subkueri, juga dikenali sebagai pertanyaan dalaman atau pertanyaan bersarang, ialah pertanyaan dalam pertanyaan SQL yang lain. Ia disertakan dalam kurungan dan dilaksanakan terlebih dahulu untuk memberikan hasil yang digunakan oleh pertanyaan luar untuk pemprosesan selanjutnya.


Jenis Subkueri

  1. Subkueri Baris Tunggal
    • Mengembalikan satu baris sebagai hasilnya.
    • Biasa digunakan dengan pengendali perbandingan seperti =, <, >.

Contoh:

Cari nama pekerja yang mempunyai gaji tertinggi:

   SELECT Name
   FROM Employees
   WHERE Salary = (SELECT MAX(Salary) FROM Employees);
Salin selepas log masuk
Salin selepas log masuk
  1. Subkueri Berbilang Baris
    • Mengembalikan berbilang baris sebagai hasilnya.
    • Digunakan dengan pengendali seperti IN, ANY, ALL.

Contoh:

Cari pekerja yang bekerja di jabatan dengan lebih daripada 5 ahli:

   SELECT Name
   FROM Employees
   WHERE DepartmentID IN (SELECT DepartmentID FROM Departments WHERE Members > 5);
Salin selepas log masuk
Salin selepas log masuk
  1. Subkueri Berkaitan
    • Rujukan lajur daripada pertanyaan luar.
    • Dilaksanakan berulang kali untuk setiap baris pertanyaan luar.

Contoh:

Cari pekerja yang berpendapatan lebih daripada purata gaji jabatan mereka:

   SELECT Name, Salary
   FROM Employees E
   WHERE Salary > (SELECT AVG(Salary) FROM Employees WHERE DepartmentID = E.DepartmentID);
Salin selepas log masuk
Salin selepas log masuk
  1. Subkueri Bersarang
    • Mengandungi subquery lain di dalamnya.

Contoh:

Cari jabatan yang purata gaji pekerja melebihi $50,000:

   SELECT Name
   FROM Employees
   WHERE Salary = (SELECT MAX(Salary) FROM Employees);
Salin selepas log masuk
Salin selepas log masuk

Kes Penggunaan Subkueri

  1. Menapis Data: Gunakan subkueri untuk menapis baris berdasarkan kriteria tertentu.
   SELECT Name
   FROM Employees
   WHERE DepartmentID IN (SELECT DepartmentID FROM Departments WHERE Members > 5);
Salin selepas log masuk
Salin selepas log masuk
  1. Perbandingan Data: Bandingkan data antara jadual menggunakan subkueri.
   SELECT Name, Salary
   FROM Employees E
   WHERE Salary > (SELECT AVG(Salary) FROM Employees WHERE DepartmentID = E.DepartmentID);
Salin selepas log masuk
Salin selepas log masuk
  1. Penggabungan Data: Lakukan pengagregatan lanjutan dengan pertanyaan bersarang.
   SELECT DepartmentName
   FROM Departments
   WHERE DepartmentID IN (
       SELECT DepartmentID
       FROM Employees
       WHERE Salary > (SELECT AVG(Salary) FROM Employees)
   );
Salin selepas log masuk
  1. Kemas Kini Dinamik: Kemas kini atau padam baris secara dinamik berdasarkan subkueri.
   SELECT * FROM Products WHERE Price > (SELECT AVG(Price) FROM Products);
Salin selepas log masuk

Kelebihan Subkueri

  1. Modulariti: Pecahkan pertanyaan kompleks kepada bahagian yang lebih kecil dan boleh diurus.
  2. Kebolehbacaan: Menjadikan logik pertanyaan lebih jelas dalam banyak kes.
  3. Fleksibiliti: Boleh digunakan dalam klausa SELECT, WHERE, FROM dan HAVING.

Penghadan

  1. Prestasi: Subkueri, terutamanya yang berkaitan, boleh menjadi lebih perlahan kerana ia dilaksanakan beberapa kali.
  2. Kerumitan: Subkueri bersarang dalam boleh menjadi sukar dibaca dan nyahpepijat.
  3. Cabaran Pengoptimuman: Kadangkala, keputusan yang sama boleh dicapai dengan lebih cekap dengan penyertaan.

Kesimpulan

Subqueries ialah alat yang berkuasa dalam SQL untuk memecahkan logik kompleks kepada bahagian yang boleh diurus, membolehkan analisis data dinamik dan memudahkan manipulasi data. Walau bagaimanapun, memahami masa untuk menggunakan subkueri berbanding alternatif seperti cantuman adalah penting untuk prestasi pertanyaan yang optimum.

Atas ialah kandungan terperinci Memahami SQL Subqueries: Panduan Lengkap dengan Contoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan