MySQL Tutorial de subinterogare cu exemple
Ce sunt subinterogările?
O subinterogare este o interogare de selectare care este conținută în interiorul unei alte interogări. Interogarea de selecție interioară este de obicei utilizată pentru a determina rezultatele interogării de selectare exterioară.
Să ne uităm la sintaxa subinterogării -
O plângere comună a clienților la Biblioteca video MyFlix este numărul redus de titluri de filme. Conducerea vrea să cumpere filme pentru o categorie care are cel mai mic număr de titluri.
Puteți utiliza o interogare precum
SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);
Dă un rezultat
Să vedem cum funcționează această interogare
Cele de mai sus este o formă de Sub-interogare de rând. În astfel de sub-interogări, interogarea interioară poate da doar UN singur rezultat. Operatorii permisi atunci când se lucrează cu subinterogări de rând sunt [=, >, =, <=, ,!=, ]
Să ne uităm la un alt exemplu,
Să presupunem că doriți Nume și numere de telefon ale membrilor persoanelor care au închiriat un film și încă nu le-au returnat. După ce obțineți Nume și Număr de Telefon, le suni pentru a oferi un memento. Puteți utiliza o interogare precum
SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );
Să vedem cum funcționează această interogare
În acest caz, interogarea internă returnează mai multe rezultate. Cele de mai sus este tipul Tsub-quer capabily.
Până acum am văzut două interogări, să vedem acum un exemplu de interogare triplă!
Să presupunem că conducerea dorește să recompenseze membrul cel mai bine plătit.
Putem rula o interogare de genul
Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));
Interogarea de mai sus dă următorul rezultat -
Sub-interogări vs alăturari!
În comparație cu Joins , interogările secundare sunt ușor de utilizat și ușor de citit. Nu sunt la fel de complicate ca Se alătură
Prin urmare, sunt utilizate frecvent de SQL începători.
Dar interogările secundare au probleme de performanță. Utilizarea unei alăturari în loc de o sub-interogare vă poate oferi uneori o creștere a performanței de până la 500 de ori.
Având posibilitatea de a alege, este recomandat să utilizați un JOIN peste o subinterogare.
Sub-interogările ar trebui să fie folosite doar ca soluție de rezervă atunci când nu puteți utiliza o operațiune JOIN pentru a realiza cele de mai sus
Rezumat
- Subinterogările sunt interogări încorporate în interiorul unei alte interogări. Interogarea încorporată este cunoscută ca interogare interioară, iar interogarea container este cunoscută ca interogare exterioară.
- Sub-interogările sunt ușor de utilizat, oferă o mare flexibilitate și pot fi ușor defalcate în componente logice unice care alcătuiesc interogarea, ceea ce este foarte util atunci când Testarea și depanarea interogărilor.
- MySQL acceptă trei tipuri de subinterogări, subinterogări scalare, de rând și de tabel.
- Subinterogările scalare returnează doar un singur rând și o singură coloană.
- Interogările sub rânduri returnează doar un singur rând, dar pot avea mai multe coloane.
- Subinterogările de tabel pot returna mai multe rânduri, precum și coloane.
- Subinterogările pot fi folosite și în interogările INSERT, UPDATE și DELETE.
- Pentru probleme de performanță, atunci când vine vorba de obținerea de date din mai multe tabele, este recomandat să folosiți JOIN-uri în loc de subinterogări. Interogările secundare ar trebui folosite numai cu un motiv întemeiat.