SQL Server-undersøkelse

Sammendrag: i denne opplæringen vil du lære om SQL Server-undersøket og hvordan du bruker undersøket til å spørre om data.

Introduksjon til SQL Server-undersøking

Et underspørsmål er et spørsmål som er nestet i en annen setning som SELECT, INSERT, UPDATE, eller DELETE.

La oss se følgende eksempel.

Vurder orders og customers tabeller fra eksempeldatabasen.

Følgende uttalelse viser hvordan du bruker et underspørsmål i WHERE -satsen til en SELECT uttalelse for å finne salgsordrene til kundene som finner i New York:

Her er resultatet:

I dette eksemplet er følgende utsagn en underforespørsel:

Code language: SQL (Structured Query Language) (sql)

Merk at du alltid må legge ved SELECT forespørsel om en underspørring i parentes ().

Et underspørsmål er også kjent som et indre spørsmål eller indre valg mens setningen som inneholder underspørringen kalles en ytre valg eller ytre spørring:

SQL Server utfører hele spørreeksemplet ovenfor som følger:

Først utfører den undersøket for å få en liste over kundeidentifikasjonsnumre til kundene som finner i New York.

Code language: SQL (Structured Query Language) (sql)

For det andre erstatter SQL Server kundeidentifikasjonsnumre som returneres av underspørringen i IN -operatøren og utfører den ytre spørringen for å få det endelige resultatsettet.

Som du kan s ee, ved å bruke undersøket, kan du kombinere to trinn sammen. Delspørringen fjerner behovet for å velge kundeidentifikasjonsnummer og koble dem til det ytre spørringen. Videre tilpasser selve spørringen seg automatisk når kundedataene endres.

Nestende spørring

Et undersøk kan nestes i et annet underspørsmål. SQL Server støtter opptil 32 nivåer av hekking. Tenk på følgende eksempel:

Først, SQL Server utfører følgende underspørring for å få en liste over merkeidentifikasjonsnummer for merkene Strider og Trek:

For det andre beregner SQL Server gjennomsnittlig prisliste for alle produkter som hører til til disse merkene.

Code language: SQL (Structured Query Language) (sql)

For det tredje finner SQL Server produktene hvis listepris er høyere enn gjennomsnittlig listepris for alle produkter med Strider eller Trek -merke.

SQL Server-undersøketyper

Du kan bruke et underspørsmål mange steder:

  • I stedet for et uttrykk
  • Med IN eller NOT IN
  • Med ANY eller ALL
  • Med EXISTS eller NOT EXISTS
  • I UPDATE, DELETE, eller INSERT -uttalelse
  • I FROM -klausul

SQL Server-underspørring brukes i stedet for et uttrykk

Hvis et underspørsmål returnerer en enkelt verdi, kan det brukes hvor som helst et uttrykk brukes.

I det følgende eksemplet brukes et undersøk som kolonneuttrykk kalt max_list_price i en SELECT uttalelse.

SQL Server-underforespørsel brukes med IN-operatør

Et underspørsmål som brukes med IN returnerer et sett med null eller flere verdier. Etter at undersøket har returnert verdier, bruker den ytre spørringen dem.

Følgende søk finner navnene på alle terrengsykler og landeveissykler som sykkelbutikkene selger.

Dette spørsmålet blir evaluert i to trinn:

  1. For det første returnerer den indre spørringen en liste over kategoriidentifikasjonsnumre som samsvarer med navnene Mountain Bikes og code landeveissykler.
  2. For det andre erstattes disse verdiene i den ytre spørringen som finner produktnavnene som har kategorien identifikasjonsnummer samsvarer med en av verdiene i listen.

SQL Server-spørring brukes med ALLE operatører

Delspørringen introduseres med ANY operatøren har følgende syntaks:

Code language: SQL (Structured Query Language) (sql)

Forutsatt at undersøket returnerer en liste over verdien v1, v2,… vn. ANY -operatøren returnerer TRUE hvis en av et sammenligningspar (scalar_expression, vi) evaluerer til TRUE; Ellers returnerer den FALSE.

For eksempel finner følgende spørring produktene hvis listepriser er større enn eller lik den gjennomsnittlige listeprisen for et produktmerke. .

For hvert merke, undersøket finner den maksimale listeprisen. Den ytre forespørselen bruker disse maksimale prisene og bestemmer hvilket enkelt produkts listepris som er større enn eller lik merkevarens maksimale listepris.

SQL Server-undersøk brukes med ALL-operatør

ALL operator har samme syntaks som ANY operator:

Code language: SQL (Structured Query Language) (sql)

ALL -operatøren returnerer TRUE hvis alle sammenligningspar (scalar_expression, vi) vurderes til TRUE; Ellers returnerer den FALSE.

Følgende spørsmål finner produktene hvis listepris er større enn eller lik den gjennomsnittlige listeprisen som returneres av underspørringen:

SQL Server-underforespørsel brukes med EXISTS eller NOT EKSISTER

Følgende illustrerer syntaksen til et underspørsmål introdusert med EXISTS operator:

Code language: SQL (Structured Query Language) (sql)

EXISTS -operatøren returnerer TRUE hvis undersøket returnerer; Ellers returnerer den FALSE.

På den annen side er NOT EXISTS motsatt EXISTS operatør.

Følgende spørsmål finner kundene som kjøpte produkter i 2017:

Hvis du bruker NOT EXISTS i stedet for EXISTS, kan du finne kundene som ikke kjøpte noen produkter i 2017.

SQL Server-underspørsel i FROM-setningen

Anta at du vil finne gjennomsnittet av bestillingssummen til alle selgere. For å gjøre dette kan du først finne antall bestillinger etter staber:

Deretter kan du bruke AVG() -funksjonen på dette resultatsettet. Siden et spørsmål returnerer et resultatsett som ser ut som en virtuell tabell, kan du plassere hele spørringen i FROM -satsen til en annen spørring som dette:

Søket du legger inn i FROM paragraf må ha et tabellalias. I dette eksemplet brukte vi t som alias for tabellen. For å komme med det endelige resultatet utfører SQL Server følgende trinn:

  • Utfør underspørringen i FROM -klausulen.
  • Bruk resultatet av undersøket og utfør det ytre spørringen.

I denne opplæringen har du lært om SQL Server-undersøkekonseptet og hvordan du bruker forskjellige underspørringstyper til å spørre om data.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *