MySQL SubQuery Tutorial ja esimerkkejä
Mitä alikyselyt ovat?
Alikysely on valintakysely, joka sisältyy toiseen kyselyyn. Sisäistä valintakyselyä käytetään yleensä määrittämään ulomman valintakyselyn tulokset.
Katsotaanpa alikyselyn syntaksia -
MyFlix Video Libraryn asiakkaiden yleinen valitus on elokuvien alhainen määrä. Johto haluaa ostaa elokuvia kategoriaan, jossa on vähiten nimikkeitä.
Voit käyttää kyselyä kuten
SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);
Se antaa tuloksen
Katsotaan kuinka tämä kysely toimii
Yllä oleva on muoto Rivi-alikysely. Tällaisissa alikyselyissä sisäinen kysely voi antaa vain YHDEN tuloksen. Sallitut operaattorit rivialikyselyjen kanssa ovat [=, >, =, <=, ,!=, ]
Katsotaanpa toista esimerkkiä,
Oletetaan, että haluat niiden jäsenten nimet ja puhelinnumerot, jotka ovat vuokranneet elokuvan ja eivät ole vielä palauttaneet niitä. Kun saat nimet ja puhelinnumeron, soitat heille ja annat muistutuksen. Voit käyttää kyselyä kuten
SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );
Katsotaan kuinka tämä kysely toimii
Tässä tapauksessa sisäinen kysely palauttaa useamman kuin yhden tuloksen. Yllä oleva on tyyppiä Tkykenevä alikyselyy.
Tähän mennessä olemme nähneet kaksi kyselyä, katsotaan nyt esimerkki kolminkertainen kysely!
Oletetaan, että johto haluaa palkita eniten maksavan jäsenen.
Voimme suorittaa kyselyn kuten
Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));
Yllä oleva kysely antaa seuraavan tuloksen -
Alakyselyt vs liittyminen!
Kun verrataan Liitoksiin, alikyselyt ovat helppokäyttöisiä ja helppolukuisia. Ne eivät ole niin monimutkaisia kuin Liitosten
Siksi niitä käytetään usein SQL-aloittelijat.
Mutta alikyselyissä on suorituskykyongelmia. Liitoksen käyttäminen alikyselyn sijaan voi toisinaan parantaa suorituskykyä jopa 500 kertaa.
Jos valinta on annettu, on suositeltavaa käyttää JOIN-komentoa alikyselyssä.
Alakyselyitä tulee käyttää vain vararatkaisuna, kun et voi käyttää JOIN-toimintoa yllä olevan saavuttamiseksi.
Yhteenveto
- Alikyselyt ovat toisen kyselyn sisään upotettuja kyselyitä. Upotettu kysely tunnetaan sisäisenä kyselynä ja säilökysely tunnetaan ulkoisena kyselynä.
- Alakyselyitä on helppo käyttää, ne tarjoavat suurta joustavuutta ja ne voidaan helposti jakaa yksittäisiin loogisiin komponentteihin, jotka muodostavat kyselyn, mikä on erittäin hyödyllistä, kun Testaus ja kyselyiden virheenkorjaus.
- MySQL tukee kolmenlaisia alikyselyitä, skalaari-, rivi- ja taulukkoalikyselyjä.
- Skalaari-alikyselyt palauttavat vain yhden rivin ja yhden sarakkeen.
- Rivin alakyselyt palauttavat vain yhden rivin, mutta niissä voi olla useampi kuin yksi sarake.
- Taulukon alikyselyt voivat palauttaa useita rivejä ja sarakkeita.
- Alikyselyitä voidaan käyttää myös INSERT-, UPDATE- ja DELETE-kyselyissä.
- Suorituskykyongelmissa, kun tietoja haetaan useista taulukoista, on erittäin suositeltavaa käyttää JOIN-koodeja alikyselyjen sijaan. Alakyselyitä tulee käyttää vain hyvästä syystä.