Mik az alkérdezések?
Az allekérdezés egy kiválasztott lekérdezés, amelyet egy másik lekérdezés tartalmaz. A belső kiválasztási lekérdezést általában a külső választási lekérdezés eredményeinek meghatározására használják.
Vizsgáljuk meg az alkérdezés szintaxisát -
A MyFlix Video Library gyakori vásárlói panasza a filmek alacsony száma. A vezetőség filmeket szeretne vásárolni egy olyan kategóriához, amely a legkevesebb címet viseli.
Használhat olyan lekérdezést, mint
SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);
Eredményt ad
Lássuk, hogyan működik ez a lekérdezés
A fenti a Rész-al-lekérdezés egyik formája . Ilyen részlekérdezésekben a belső lekérdezés csak EGY eredményt adhat. A megengedett operátorok, amikor soralekérdezésekkel dolgoznak, [=,>, =, <=,,! =,]
Nézzünk meg egy másik példát,
Tegyük fel, hogy azoknak a tagoknak a nevét és telefonszámát szeretné megkapni, akik filmet béreltek és még nem adják vissza őket. Miután megkapta a neveket és a telefonszámokat, felhívja őket, hogy emlékeztetőt adjanak. Használhat olyan lekérdezést, mint
SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );
Lássuk, hogyan működik ez a lekérdezés
Ebben az esetben a belső lekérdezés egynél több eredményt ad vissza. A fenti a T képes al-lekérdezés típusa .
Eddig két lekérdezést láttunk, most láthatunk egy példát a hármas lekérdezésre !!!
Tegyük fel, hogy a vezetőség a legjobban fizető tagot akarja díjazni.
Futtathatunk egy hasonló lekérdezést
Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));
A fenti lekérdezés a következő eredményt adja -
Részlekérdezések Vs csatlakozik!
Ha összehasonlítjuk a Joins-szal, akkor az al-lekérdezések egyszerűen használhatók és könnyen olvashatók. Nem olyan bonyolultak, mint a Joins
Ezért gyakran használják az SQL kezdők.
De az alkérdezéseknek teljesítményproblémái vannak. Csatlakozás használata allekérdezés helyett időnként akár 500-szoros teljesítménynövelést is eredményezhet.
Választási lehetőség esetén ajánlott JOIN-t használni egy allekérdezés felett.
Az al-lekérdezéseket csak akkor lehet tartalék megoldásként használni, ha a JOIN műveletet nem tudja használni a fentiek eléréséhez
Összegzés
- Az al lekérdezések be vannak ágyazva egy másik lekérdezésbe. A beágyazott lekérdezés belső lekérdezés, a tároló lekérdezés pedig külső lekérdezés néven ismert.
- Az alkérdezések könnyen használhatók, nagy rugalmasságot kínálnak, és könnyen feloszthatók egyetlen logikai komponensre, ami a lekérdezést alkotja, ami nagyon hasznos a lekérdezések tesztelése és hibakeresése során.
- A MySQL háromféle al lekérdezést támogat, skalár, sor és tábla alkérdezéseket.
- A skaláris részlekérdezések csak egy sort és egy oszlopot adnak vissza.
- A soralekérdezések csak egyetlen sort adnak vissza, de több oszlopot is tartalmazhatnak.
- A tábla-lekérdezések több sort és oszlopot is visszaadhatnak.
- Az allekérdezések INSERT, UPDATE és DELETE lekérdezésekben is használhatók.
- Teljesítményproblémák esetén, amikor több táblából kell adatokat gyűjteni, erősen ajánlott a JOIN-okat használni az al lekérdezések helyett. Az alkérdezéseket csak jó indokkal szabad felhasználni.