Tutorial MySQL SubQuery cu exemple

Anonim

Ce sunt interogările secundare?

O interogare secundară este o interogare selectată care este conținută într-o altă interogare. Interogarea de selectare interioară este de obicei utilizată pentru a determina rezultatele interogării de selectare exterioară.

Să analizăm sintaxa subinterogării -

O reclamație obișnuită a clienților la biblioteca video MyFlix este numărul redus de titluri de filme. Conducerea dorește să cumpere filme pentru o categorie care are cel mai mic număr de titluri.

Puteți utiliza o interogare de genul

SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);

Da un rezultat

Să vedem cum funcționează această interogare

Cele de mai sus sunt o formă de interogare la rând . În astfel de interogări secundare, interogarea interioară poate da doar un singur rezultat. Operatorii admisibili atunci când lucrează cu subinterogări de rând sunt [=,>, =, <=,,! =,]

Să vedem 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. Odată ce primiți Numele și numărul de telefon, le apelați pentru a vă reaminti. Puteți utiliza o interogare de genul

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 interioară returnează mai multe rezultate. Cele de mai sus sunt tipuri de sub-întrebări capabile .

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 cel mai bine plătit membru.

Putem executa 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 oferă următorul rezultat -

Sub-interogări împotriva alăturărilor!

Când se compară cu Joins, subinterogările sunt ușor de utilizat și ușor de citit. Nu sunt la fel de complicate ca Joins

Prin urmare, sunt frecvent utilizate de începătorii SQL.

Dar subinterogările au probleme de performanță. Utilizarea unui join în loc de o interogare secundară vă poate oferi uneori o creștere a performanței de până la 500 de ori.

Având la dispoziție o alegere, se recomandă utilizarea unui JOIN peste o interogare secundară.

Sub-interogările trebuie folosite doar ca soluție alternativă 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 altei interogări. Interogarea încorporată este cunoscută sub numele de interogare interioară, iar interogarea containerului este cunoscută sub numele de interogare externă.
  • Subinterogările sunt ușor de utilizat, oferă o mare flexibilitate și pot fi ușor împărțite în componente logice unice, alcătuind interogarea care este foarte utilă la testarea și depanarea interogărilor.
  • MySQL acceptă trei tipuri de subinterogări, subinterogări scalare, rând și 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.
  • Subconsultările de tabel pot returna mai multe rânduri, precum și coloane.
  • Subcercările pot fi utilizate ș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, se recomandă insistent să utilizați JOIN-uri în loc de subinterogări. Subinterogările trebuie utilizate numai cu un motiv întemeiat.