SQL-spørringer er kjøttet og potetene til RDBMS CRUD (opprett, les, oppdater, slett). Men når applikasjonen eller bedriftsdatabasen vokser, blir behovet for intelligente spørringer for å hente betingede, kravspesifikke data et must-have.
SQL er relativt omfattende, og omfatter mange funksjoner – som hver er godt egnet for ulike forretningsbruk. En slik funksjonalitet inkluderer bruk av underspørringer.
For å gjøre kodene dine effektive og effektive, kan du bruke underspørringer i SQL-kodene dine for å hente data, manipulere eksisterende variabler og oppnå flere mål på én gang.
Hva er SQL-underspørringer?
En underspørring er en nestet spørring, som fungerer som en parameter i en annen hovedspørring. Underspørringen er en indre spørring, mens hovedspørsmålet er ytre spørring.
Underspørringen returnerer angivelig dataene som et argument i parentes for hovedspørringen, mens hovedspørringen videre henter det endelige resultatet.
Underspørringer er innebygd i Plukke ut uttalelse eller i Hvor klausul. En slik struktur gjør at underspørringen kan oppføre seg som en godt beskrevet datafiltreringstilstand. Dessverre kan undersøk bare bruke
Gruppe av kommandoer og ikke Rekkefølge etter kommandoer, da de kun er tillatt i hovedspørringen.I slekt: Alt du trenger å vite om SQL GROUP BY-setningen
Vanligvis består hver underspørring av en enkelt kolonne med Plukke ut klausul. Det er imidlertid scenarier der hovedspørringen har flere kolonner. En underspørring kan nestes i en annen underspørring, slik at den blir til en nestende underspørring.
En underspørring er som følger:
Velg kolonnenavn fra tabellen der betingelse=
(SELECT conditional_column FROM table) som alias;
Anta for eksempel at du har følgende tabell:
ID | Fornavn | Andre_navn | Byråavgift |
1 | John | Veke | 5000 |
2 | Robert | Graham | 4000 |
3 | Stephen | Hicks | 8000 |
4 | Bob | Marley | 1000 |
5 | Mary | Ellen | 9000 |
I denne tabellen, for å trekke navnene på personer som tjener over gjennomsnittlig byråavgift, kan du skrive en underspørring i stedet for å skrive flere linjer med kode.
I slekt: Hvordan lage en tabell i SQL
Slik ser søket ut:
Velg * fra agent_details
hvor Agency_Fee > (velg avg (Agency_Fee) fra agent_details);
Kommandoen før > tegnet er det ytre søket, mens alt etter > tegnet er den indre spørringen.
Den indre spørringen vil beregne gjennomsnittlig byråhonorar i undersøket, og den ytre spørringen vil vise alle verdier som er større enn den beregnede gjennomsnittsverdien.
Hvordan bruke underspørringer i SQL?
Det er noen forskjellige måter du kan bruke underspørringer i SQL.
Undersøk med Where-klausul
En av de mest grunnleggende strukturene til en underspørring i SQL er innenfor Where-klausulen. Det er den enkleste måten å definere hva du søker etter. Select-setningen returnerer verdier i henhold til underspørringsbetingelsen(e) og bruker den som en parameter for hovedspørringen.
Spørringsstruktur:
velg * fra tabellnavn
hvor kolonnenavn = (velg kolonnenavn fra tabellnavn);
La oss forklare dette med et eksempel.
Anta at du vil finne den nest høyeste byråavgiften fra tabellen byrådetaljer. For å gjøre det, er det alternative funksjoner i SQL; Den beste metoden er likevel å bruke en underspørring.
Slik kan du definere underspørringen:
velg *, maks (byråavgift)
fra agent_details
hvor Agency_fee < (velg maks (Agency_fee) fra agent_details);
Den resulterende uttalelsen vil vise deg 8000, som er den nest høyeste avgiften i den gitte tabellen. Når spørringen kjører, beregner undersøkingen maksimumsverdien fra listen over gebyrer. Det høyeste gebyrbeløpet (9000) er lagret i minnet.
Når denne delen er beregnet, beregnes den andre delen av spørringen, som finner den nest høyeste avgiften fra tabellen (siden < tegnet brukes). Sluttresultatet er 8000, som er den nest høyeste avgiften i tabellen.
Underspørringer innenfor Fra-klausulen
En annen variasjon innen underspørringer er å sende betingelsen i fra klausul. Som et lignende konsept behandles den indre spørringen først, og den ytre spørringen behandles etterpå. Den indre spørringen vil filtrere på dataene og vise resultater der ID = 3.
Her er spørringen for referanse:
velg a.* fra (
velg byråavgift fra agent_detaljer
hvor ID= 3) som en;
Dette er en helt grunnleggende struktur; Men jo mer komplekse datatabellene dine, vil du få flere rader med data, som samsvarer med betingelsene dine.
Bruke underspørringer med Insert Into Statement
Hvis du ønsker å oppdatere en eksisterende tabell med noen nye datarader, kan du bruke Sett inn i uttalelse. En underspørring kan vise seg å være ganske gunstig, hvis du ønsker å legge til verdier basert på en bestemt tilstand(er).
Spørringsstruktur:
sett inn i tabellnavn
velg * fra tabellnavn
der kolonnenavn = betingelser;
velg * fra tabellnavn;
Her er et eksempel på hvordan du kan bruke insert into-setningen med underspørringen:
sett inn i agent_details
velg * fra agent_details
hvor byråavgift i (1000, 5000);
velg * fra agent_details;
Når spørringen kjører, vil verdiene som samsvarer med betingelsen bli satt inn i den eksisterende tabellen igjen. De plukke ut * reference plukker opp alle kolonnene sammen, og setter dem inn i agent_details-tabellen som den er. De i setningen brukes til å definere flere filterbetingelser samtidig.
Bruke undersøk med oppdateringserklæring
Det er situasjoner der du vil oppdatere de underliggende tabellene mens du kjører spørringene. For å gjøre det kan du bruke Oppdater setningen sammen med spørringskommandoene.
Slik skriver du underspørringen for å oppdatere informasjonen i tabellen i ett tilfelle:
oppdater tabellnavn
sett kolonnenavn = ny_verdi
hvor kolonnenavn =
(velg kolonnenavn fra tabellnavn hvor = );
Her er et eksempel som viser bruken av oppdateringssetningen:
OPPDATERING agent_detaljer
SET byråavgift = 35 000
WHERE byråavgift =
(SELECT agency_fee FROM agent_details WHERE First_name='John');
velg * fra agent_details;
Undersøket vil filtrere på kolonnen byråavgift og skille ut raden(e) der Fornavn samsvarer John. Den ytre spørringen utføres deretter, der byråavgiften oppdateres til 35 000 for John Wick.
Du kan bestå en plukke ut * uttalelse for å sjekke de endelige resultatene; du vil legge merke til at byrågebyret for John Wick er oppdatert til 35 000, da det kun er forekomster som samsvarer med betingelsene som er definert i spørringen.
Bruke undersøk med sletteerklæring
Akkurat som oppdateringssetningen, der du oppdaterer radene med data i en eksisterende tabell, er slette setningen sletter rad(er) med data basert på en betingelse.
Strukturen for sletting er:
slett fra tabellnavn der variabel/kolonnenavn =
(velg kolonnenavn fra tabellnavn hvor = betingelse);
Her er et eksempel:
Slett fra agent_details
hvor Fornavn IN
(velg Fornavn fra agent_detaljer der byråavgift = 9000);
velg * fra agent_details;
Bruke underspørringer i SQL
Underspørringer er en utmerket funksjon i SQL, som kan spare deg for å skrive endeløse linjer med unødvendig kode. Når du er i stand til å bruke de grunnleggende funksjonalitetene til underspørringer for å gjøre budene dine, vil du aldri bekymre deg for å gå inn i kompleksiteten til SQL-koding.
Det er alltid best å forbedre din eksisterende SQL-kunnskap for å sikre at du alltid er på toppen av spillet ditt. Du kan være trygg på at SQL-jukseark kan gi deg en god idé om hvordan du kan friske opp det grunnleggende med et enkelt blikk.
Vil du lære mer om SQL? Å ha kontroll på de forskjellige SQL-spørringskommandoene er en fin måte å komme videre på.
Les Neste
- Programmering
- Programmering
- SQL
- Programmeringsverktøy
Gaurav Siyal har to års skriveerfaring, og har skrevet for en rekke digitale markedsføringsfirmaer og programvarelivssyklusdokumenter.
Abonner på vårt nyhetsbrev
Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!
Klikk her for å abonnere