MySQL Underforespørgselsvejledning med eksempler
Hvad er underforespørgsler?
En underforespørgsel er en udvalgt forespørgsel, der er indeholdt i en anden forespørgsel. Den indre udvalgsforespørgsel bruges normalt til at bestemme resultaterne af den ydre udvalgte forespørgsel.
Lad os se på underforespørgselssyntaksen –
En almindelig kundeklage på MyFlix Video Library er det lave antal filmtitler. Ledelsen ønsker at købe film til en kategori, der har mindst antal titler.
Du kan bruge en forespørgsel som
SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);
Det giver et resultat
Lad os se, hvordan denne forespørgsel fungerer
Ovenstående er en form for Rækkeunderforespørgsel. I sådanne underforespørgsler kan den indre forespørgsel kun give ET resultat. De tilladte operatorer ved arbejde med rækkeunderforespørgsler er [=, >, =, <=, ,!=, ]
Lad os se på et andet eksempel,
Antag, at du vil have navne og telefonnumre på medlemmer af personer, der har lejet en film og endnu ikke har returneret dem. Når du har fået navne og telefonnummer, ringer du dem op for at give en påmindelse. Du kan bruge en forespørgsel som
SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );
Lad os se, hvordan denne forespørgsel fungerer
I dette tilfælde returnerer den indre forespørgsel mere end ét resultat. Ovenstående er type Ti stand til at underspørgey.
Indtil nu har vi set to forespørgsler, lad os nu se et eksempel på tredobbelt forespørgsel!!!
Antag, at ledelsen ønsker at belønne det højest betalende medlem.
Vi kan køre en forespørgsel som
Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));
Ovenstående forespørgsel giver følgende resultat -
Underforespørgsler vs tilslutninger!
Når man sammenligner med Joins , er underforespørgsler enkle at bruge og nemme at læse. De er ikke så komplicerede som Sammenføjninger
Derfor er der ofte brugt af SQL begyndere.
Men underforespørgsler har problemer med ydeevnen. Brug af en join i stedet for en underforespørgsel kan til tider give dig op til 500 gange ydeevneboost.
Givet et valg, anbefales det at bruge en JOIN over en underforespørgsel.
Underforespørgsler bør kun bruges som en reserveløsning, når du ikke kan bruge en JOIN-operation til at opnå ovenstående
Resumé
- Underforespørgsler er indlejrede forespørgsler i en anden forespørgsel. Den indlejrede forespørgsel er kendt som den indre forespørgsel, og containerforespørgslen er kendt som den ydre forespørgsel.
- Underforespørgsler er nemme at bruge, tilbyder stor fleksibilitet og kan nemt opdeles i enkelte logiske komponenter, der udgør forespørgslen, hvilket er meget nyttigt, når Test og fejlfinding af forespørgslerne.
- MySQL understøtter tre typer underforespørgsler, skalære, række- og tabelunderforespørgsler.
- Skalære underforespørgsler returnerer kun en enkelt række og enkelt kolonne.
- Rækkeunderforespørgsler returnerer kun en enkelt række, men kan have mere end én kolonne.
- Tabelunderforespørgsler kan returnere flere rækker såvel som kolonner.
- Underforespørgsler kan også bruges i INSERT-, UPDATE- og DELETE-forespørgsler.
- For ydeevneproblemer, når det kommer til at hente data fra flere tabeller, anbefales det kraftigt at bruge JOINs i stedet for underforespørgsler. Underforespørgsler bør kun bruges med god grund.






