MySQL Alampäringu õpetus koos näidetega
Mis on alampäringud?
Alampäring on valikupäring, mis sisaldub teises päringus. Välimise valikupäringu tulemuste määramiseks kasutatakse tavaliselt sisemist valikupäringut.
Vaatame alampäringu süntaksit –
MyFlixi videokogu klientide tavaline kaebus on filmide vähesus. Juhtkond soovib osta filme kategooriasse, millel on kõige vähem pealkirju.
Võite kasutada päringut nagu
SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);
See annab tulemuse
Vaatame, kuidas see päring töötab
Ülaltoodud on vorm Rea alampäring. Sellistes alampäringutes saab sisemine päring anda ainult ÜHE tulemuse. Lubatud operaatorid rea alampäringutega töötamisel on [=, >, =, <=, ,!=, ]
Vaatame teist näidet,
Oletame, et soovite nende inimeste nimesid ja telefoninumbreid, kes on filmi laenutanud ja ei kavatse neid veel tagastada. Kui saate nimed ja telefoninumbri, helistate neile meeldetuletuse andmiseks. Võite kasutada päringut nagu
SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );
Vaatame, kuidas see päring töötab
Sel juhul tagastab sisepäring rohkem kui ühe tulemuse. Ülaltoodud on T-tüüpivõimeline alampäringy.
Siiani oleme näinud kahte päringut, vaatame nüüd näidet kolmekordne päring!
Oletame, et juhtkond soovib premeerida kõige rohkem maksvat liiget.
Saame käivitada päringu nagu
Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));
Ülaltoodud päring annab järgmise tulemuse -
Alampäringud vs liitumised!
Võrreldes liitumistega , on alampäringuid lihtne kasutada ja neid on lihtne lugeda. Need pole nii keerulised kui Liita
Seetõttu kasutavad neid sageli SQL-i algajad.
Kuid alampäringutel on jõudlusega probleeme. Liitumise kasutamine alampäringu asemel võib mõnikord anda jõudluse tõuke kuni 500 korda.
Kui valik on antud, on alampäringu kohal soovitatav kasutada JOIN.
Alampäringuid tuleks kasutada ainult varulahendusena, kui te ei saa ülaltoodu saavutamiseks kasutada toimingut JOIN
kokkuvõte
- Alampäringud on teise päringu sisse manustatud päringud. Manustatud päringut tuntakse sisemise päringuna ja konteineri päringut välimise päringuna.
- Alampäringuid on lihtne kasutada, need pakuvad suurt paindlikkust ja neid saab hõlpsasti jaotada üksikuteks loogilisteks komponentideks, mis moodustavad päringu, mis on väga kasulik, kui Testimine ja päringute silumine.
- MySQL toetab kolme tüüpi alampäringuid, skalaar-, rea- ja tabeli alampäringuid.
- Skalaarsed alampäringud tagastavad ainult ühe rea ja ühe veeru.
- Rea alampäringud tagastavad ainult ühe rea, kuid neil võib olla rohkem kui üks veerg.
- Tabeli alampäringud võivad tagastada nii mitu rida kui ka veerge.
- Alampäringuid saab kasutada ka päringutes INSERT, UPDATE ja DELETE.
- Toimivusprobleemide korral, kui on vaja andmeid hankida mitmest tabelist, on tungivalt soovitatav kasutada alampäringute asemel JOIN-e. Alampäringuid tuleks kasutada ainult mõjuval põhjusel.