Pertanyaan Bersarang dalam MySQL: Contoh dan Penjelasan

Kemaskini terakhir: 26 Mei 2025
Pengarang TecnoDigital
  • MySQL membenarkan pertanyaan bersarang, yang merupakan subkueri dalam pertanyaan utama.
  • Pertanyaan ini mengoptimumkan prestasi dengan menapis data dalam langkah berturut-turut.
  • Pertanyaan bersarang menawarkan ketepatan dan fleksibiliti yang lebih besar dalam mendapatkan semula data tertentu.
  • Terdapat alternatif seperti JOIN dan pandangan yang turut membantu menggabungkan maklumat daripada berbilang jadual.
Pertanyaan bersarang dalam MySQL

Apakah pertanyaan bersarang dalam MySQL?

Pertanyaan bersarang dalam MySQL ialah pertanyaan yang mengandungi subkueri, iaitu pertanyaan dalam pertanyaan lain. Subkueri dalam MySQL ini digunakan untuk mendapatkan maklumat yang lebih terperinci atau ditapis daripada jadual atau set jadual dalam pangkalan data. Pertanyaan utama, juga dikenali sebagai pertanyaan luar, menggunakan hasil subkueri untuk melaksanakan operasi atau syarat tambahan. Pertanyaan bersarang menyediakan cara yang berkesan untuk mengekstrak data khusus dan kompleks daripada pangkalan data.

Contoh pertanyaan berbilang jadual MySQL
Artikel berkaitan:
Contoh pertanyaan berbilang jadual MySQL

Contoh pertanyaan bersarang dalam MySQL

Untuk lebih memahami cara pertanyaan bersarang berfungsi dalam MySQL, mari kita pertimbangkan contoh praktikal. Katakan kami mempunyai dua jadual dalam pangkalan data kami: "Pekerja" dan "Jabatan". Jadual Pekerja mengandungi maklumat tentang pekerja syarikat, manakala jadual Jabatan mengandungi maklumat tentang jabatan berbeza syarikat. Kami ingin mendapatkan senarai semua pekerja yang bekerja di bahagian "Jualan".

Untuk mencapai matlamat ini, kita boleh menggunakan pertanyaan bersarang dalam MySQL seperti berikut:

PILIH Nama Pertama, Nama Akhir
DARIPADA Pekerja
WHERE DepartmentID IN (PILIH DepartmentID DARI Jabatan WHERE Nama = 'Jualan');

Dalam pertanyaan ini, subquery dalam MySQL (SELECT DepartamentoID FROM Departamentos WHERE Nombre = 'Ventas') berjalan dahulu dan mendapat ID jabatan "Jualan". Kemudian pertanyaan utama SELECT Nombre, Apellido FROM Empleados WHERE DepartamentoID IN ... Gunakan hasil subkueri untuk menapis pekerja yang tergolong dalam jabatan "Jualan".

Ini hanyalah contoh mudah bagaimana pertanyaan bersarang boleh digunakan dalam MySQL. Pertanyaan bersarang boleh menjadi lebih kompleks dan membolehkan operasi dan penapisan yang lebih canggih pada pangkalan data.

Kelebihan pertanyaan bersarang dalam MySQL

Pertanyaan bersarang dalam MySQL menawarkan beberapa kelebihan penting dalam membangunkan dan mengoptimumkan pertanyaan pangkalan data. Beberapa faedah utama termasuk:

  1. Fleksibiliti yang lebih besarPertanyaan bersarang membenarkan operasi dan penapisan yang lebih kompleks pada pangkalan data, memberikan fleksibiliti yang lebih besar untuk mendapatkan hasil yang tepat dan terperinci.
  2. Pengoptimuman pertanyaanDengan menggunakan pertanyaan bersarang, anda boleh mengurangkan jumlah data yang diproses dan mengoptimumkan prestasi pertanyaan. Ini dicapai dengan menapis data dalam langkah berturut-turut, menggunakan hasil subkueri dalam pertanyaan utama.
  3. Kecekapan yang lebih besarDengan melakukan pertanyaan bersarang, anda boleh mengelakkan keperluan untuk melakukan berbilang pertanyaan berasingan dan menggabungkannya menjadi satu pertanyaan. Ini mengurangkan beban pada pelayan pangkalan data dan meningkatkan kecekapan keseluruhan sistem.
  4. Ketepatan yang lebih besarPertanyaan bersarang membenarkan penapisan dan syarat yang lebih tepat pada pangkalan data, yang membawa kepada hasil yang lebih tepat dan berkaitan. Ini amat berguna apabila bekerja dengan set data yang besar dan perlu mendapatkan maklumat khusus.
Pandangan dalam MySQL
Artikel berkaitan:
Paparan dalam MySQL: Optimumkan kod SQL anda

Ringkasnya, pertanyaan bersarang dalam MySQL ialah alat berkuasa yang membolehkan anda melakukan pertanyaan rumit dan terperinci pada pangkalan data. Fleksibiliti, pengoptimuman dan kecekapan mereka menjadikan mereka pilihan yang berharga untuk pembangun dan penganalisis pangkalan data.

  Sejarah Pangkalan Data: Panduan Lengkap

Cara menggunakan pertanyaan bersarang dalam MySQL

Sekarang setelah kita memahami pertanyaan bersarang dalam MySQL dan kelebihannya, mari lihat beberapa contoh praktikal tentang cara menggunakannya dalam senario yang berbeza.

Pertanyaan bersarang dengan pengendali logik

Dalam MySQL, pertanyaan bersarang boleh digabungkan dengan operator logik, seperti DAN dan ATAU, untuk melaksanakan penapisan yang lebih kompleks. Mari lihat contoh:

PILIH Nama Pertama, Nama Akhir
DARIPADA Pekerja
WHERE DepartmentID IN (PILIH DepartmentID DARI Jabatan WHERE Nama = 'Jualan')
DAN Umur > 30;

Dalam contoh ini, kami telah menambah syarat tambahan menggunakan operator logik "DAN". Pertanyaan kini akan memilih hanya pekerja yang bekerja di bahagian "Jualan" dan berumur lebih dari 30 tahun.

Pertanyaan bersarang dengan pesanan dan had hasil

Pertanyaan bersarang juga boleh digabungkan dengan klausa ORDER BY untuk memesan hasil dengan cara tertentu. Mari lihat contoh:

PILIH Nama Pertama, Nama Akhir
DARIPADA Pekerja
WHERE DepartmentID IN (PILIH DepartmentID DARI Jabatan WHERE Nama = 'Jualan')
PESANAN OLEH Nama Akhir ASC
HAD 10;

Dalam contoh ini, pertanyaan akan memilih nama pertama dan nama akhir pekerja yang bekerja di bahagian "Jualan", diisih mengikut abjad mengikut nama keluarga dalam tertib menaik. Selain itu, klausa "LIMIT 10" akan mengehadkan keputusan kepada 10 pekerja pertama sahaja.

Pertanyaan bersarang dengan fungsi agregat

Pertanyaan bersarang dalam MySQL juga boleh digabungkan dengan fungsi agregat, seperti "COUNT", "SUM", atau "AVG", untuk mendapatkan hasil ringkasan. Mari lihat contoh:

PILIH Jabatan, KIRA(*) SEBAGAI JumlahPekerja
DARIPADA Jabatan
WHERE DepartmentID IN (PILIH DepartmentID DARI Pekerja WHERE Umur > 30)
KUMPULAN MENGIKUT Jabatan;

Dalam contoh ini, pertanyaan mengira jumlah bilangan pekerja dalam setiap jabatan yang umurnya melebihi 30 tahun. Subkueri itu (SELECT DepartamentoID FROM Empleados WHERE Edad > 30) Tapis pekerja mengikut umur dan kemudian pertanyaan utama melakukan kiraan mengikut jabatan menggunakan fungsi pengagregatan "COUNT".

  Contoh praktikal pengurus pangkalan data

Pertanyaan bersarang dengan JOIN

Selain menggunakan subkueri, ia juga mungkin untuk menggabungkan pertanyaan bersarang dengan klausa JOIN untuk mendapatkan maklumat daripada berbilang jadual dalam satu pertanyaan. Mari lihat contoh:

PILIH Pekerja.Nama, Jabatan.Nama AS Jabatan
DARIPADA Pekerja
JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID
WHERE Departments.DepartmentID IN (SELECT DepartmentID FROM Departments WHERE Nama = 'Jualan');

Dalam contoh ini, pertanyaan memilih nama pekerja dan nama jabatan masing-masing menggunakan klausa "JOIN". Subkueri itu (SELECT DepartamentoID FROM Departamentos WHERE Nombre = 'Ventas') Ia digunakan untuk menapis pekerja yang tergolong dalam jabatan "Jualan".

Pertanyaan bersarang dengan EXISTS

Satu lagi cara biasa untuk menggunakan pertanyaan bersarang dalam MySQL ialah dengan klausa "EXISTS". Ini digunakan apabila anda ingin menyemak kewujudan rekod dalam subkueri. Mari lihat contoh:

PILIH Nama Pertama, Nama Akhir
DARIPADA Pekerja E
DI MANA WUJUD (PILIH 1 DARI Jabatan D DI MANA D.ID Jabatan = E.ID Jabatan DAN D.Nama = 'Jualan');

Dalam contoh ini, pertanyaan memilih nama pertama dan nama akhir pekerja yang tergolong dalam jabatan bernama "Jualan." Klausa «EXISTS» digunakan untuk menyemak sama ada sekurang-kurangnya satu rekod wujud dalam subkueri (SELECT 1 FROM Departamentos D WHERE D.DepartamentoID = E.DepartamentoID AND D.Nombre = 'Ventas').

Soalan Lazim tentang pertanyaan bersarang dalam MySQL

1. Apakah perbezaan antara pertanyaan bersarang dan pertanyaan biasa dalam MySQL?

Pertanyaan biasa dalam MySQL berjalan secara bebas dan memilih data daripada jadual atau berbilang jadual berdasarkan syarat. Pertanyaan bersarang, sebaliknya, menggunakan hasil subkueri dalam pertanyaan utama untuk melaksanakan operasi tambahan atau menggunakan penapis yang lebih tepat.

2. Bilakah saya harus menggunakan pertanyaan bersarang dalam MySQL?

Pertanyaan bersarang dalam MySQL amat berguna apabila anda memerlukan hasil yang ditapis dan tepat daripada pangkalan data. Ia digunakan untuk melaksanakan operasi yang lebih kompleks dan mendapatkan maklumat terperinci dengan menggabungkan keputusan jadual atau set data yang berbeza.

3. Adakah pertanyaan bersarang mempengaruhi prestasi MySQL?

Pertanyaan MySQL boleh menjejaskan prestasi MySQL jika tidak digunakan dengan betul. Adalah penting untuk mengoptimumkan pertanyaan bersarang dan memastikan bahawa indeks yang sesuai digunakan pada jadual untuk mengelakkan beban berlebihan dan meningkatkan kecekapan.

  Contoh pertanyaan berbilang jadual MySQL

4. Adakah terdapat had untuk tahap bersarang dalam pertanyaan MySQL?

MySQL tidak mempunyai had khusus pada tahap bersarang dalam pertanyaan. Walau bagaimanapun, adalah dinasihatkan untuk mengelakkan sarang yang berlebihan kerana ia boleh merumitkan logik pertanyaan dan membuat kod sukar untuk difahami dan diselenggara.

5. Adakah pertanyaan bersarang khusus untuk MySQL atau bolehkah ia digunakan dalam sistem pangkalan data lain?

Pertanyaan bersarang ialah ciri biasa dalam banyak sistem pangkalan data hubungan, termasuk MySQL. Walaupun sintaks mungkin berbeza sedikit antara sistem yang berbeza, konsep umum menggunakan subkueri dalam pertanyaan utama digunakan secara meluas.

6. Adakah terdapat alternatif kepada pertanyaan bersarang dalam MySQL?

Ya, terdapat alternatif kepada pertanyaan bersarang dalam MySQL, seperti menggunakan JOIN dan pandangan. Teknik ini juga boleh digunakan untuk menggabungkan data daripada jadual yang berbeza dan mendapatkan hasil yang khusus. Pemilihan teknik yang sesuai bergantung kepada keperluan dan struktur pangkalan data.

Kesimpulan

Pertanyaan bersarang dalam MySQL merupakan alat yang berharga untuk melaksanakan pertanyaan yang kompleks dan mendapatkan hasil yang tepat daripada pangkalan data. Keupayaannya untuk menggabungkan subpertanyaan dengan pertanyaan utama membolehkan penapisan dan manipulasi data yang berkesan. Dalam artikel ini, kami telah meneroka contoh dan penjelasan terperinci tentang pertanyaan bersarang dalam MySQL, mengetengahkan kegunaan, kelebihan dan cara menggunakannya dalam senario yang berbeza. Dengan menguasai penggunaan pertanyaan bersarang, anda boleh meningkatkan kecekapan dan ketepatan pertanyaan MySQL anda dan memperoleh pandangan berharga daripada pangkalan data anda.