MySQL Underspørringsveiledning med eksempler
Hva er underspørringer?
En underspørring er en utvalgsspørring som er inneholdt i en annen spørring. Den indre utvalgsspørringen brukes vanligvis til å bestemme resultatene av den ytre utvalgsspørringen.
La oss se nærmere på syntaksen for underspørringen –
En vanlig kundeklage på MyFlix Video Library er det lave antallet filmtitler. Ledelsen ønsker å kjøpe filmer for en kategori som har minst antall titler.
Du kan bruke et søk som
SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);
Det gir et resultat
La oss se hvordan denne spørringen fungerer
Ovennevnte er en form for Rad-underspørring. I slike underspørringer kan den indre spørringen kun gi ETT resultat. De tillatte operatorene når du arbeider med radunderspørringer er [=, >, =, <=, ,!=, ]
La oss se på et annet eksempel,
Anta at du vil ha navn og telefonnumre til medlemmer av personer som har leid en film og ennå ikke har returnert dem. Når du har fått navn og telefonnummer, ringer du dem opp for å gi en påminnelse. Du kan bruke et søk som
SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );
La oss se hvordan denne spørringen fungerer
I dette tilfellet returnerer den indre spørringen mer enn ett resultat. Ovennevnte er type Ti stand til å undersøkey.
Til nå har vi sett to spørringer, la oss nå se et eksempel på trippelspørring!!!
Anta at ledelsen ønsker å belønne det høyest betalende medlemmet.
Vi kan kjøre en spørring som
Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));
Spørsmålet ovenfor gir følgende resultat -
Underforespørsler kontra medlemskap!
Når man sammenligner med Joins , er undersøk enkle å bruke og lett å lese. De er ikke så kompliserte som tiltrer
Derfor er det ofte brukt av SQL nybegynnere.
Men undersøk har ytelsesproblemer. Å bruke en sammenføyning i stedet for en underspørring kan til tider gi deg opptil 500 ganger ytelsesøkning.
Gitt et valg, anbefales det å bruke en JOIN over en underspørring.
Undersøk skal kun brukes som en reserveløsning når du ikke kan bruke en JOIN-operasjon for å oppnå ovennevnte
Oppsummering
- Underspørringer er innebygde spørringer i en annen spørring. Den innebygde spørringen er kjent som den indre spørringen, og beholderen er kjent som den ytre spørringen.
- Underspørringer er enkle å bruke, tilbyr stor fleksibilitet og kan enkelt brytes ned i enkeltstående logiske komponenter som utgjør spørringen, noe som er veldig nyttig når Testing og feilsøking av spørringene.
- MySQL støtter tre typer underspørringer, skalar-, rad- og tabellunderspørringer.
- Skalære underspørringer returnerer bare en enkelt rad og enkelt kolonne.
- Radunderspørringer returnerer bare en enkelt rad, men kan ha mer enn én kolonne.
- Tabellunderspørringer kan returnere flere rader så vel som kolonner.
- Underspørringer kan også brukes i INSERT-, UPDATE- og DELETE-spørringer.
- For ytelsesproblemer, når det gjelder å hente data fra flere tabeller, anbefales det sterkt å bruke JOINs i stedet for underspørringer. Undersøk skal bare brukes med god grunn.