SQL Server Subquery (Suomi)
Yhteenveto: Tässä opetusohjelmassa opit SQL Server -alikyselystä ja siitä, miten alikyselyä käytetään tietojen kyselyyn.
Johdatus SQL Server -alikyselyyn
Alakysely on kysely, joka on sisäkkäin toisen lauseen sisällä, kuten SELECT
, INSERT
, UPDATE
tai DELETE
.
Katsotaanpa seuraava esimerkki.
Harkitse orders
ja customers
taulukot esimerkkitietokannasta.
Seuraava lause kertoo, kuinka alikyselyä voidaan käyttää WHERE
-lausekkeessa SELECT
-lauseke New York
:
Tässä on tulos:
Tässä esimerkissä seuraava lause on alakysely:
Code language: SQL (Structured Query Language) (sql)
Huomaa, että sinun on aina liitettävä SELECT
suluissa olevan alikyselyn kysely ()
.
Alakysely tunnetaan myös sisäisenä kyselynä tai sisäisenä valintana, kun taas alakyselyä sisältävää lausetta kutsutaan ulompi valinta tai ulompi kysely:
SQL Palvelin suorittaa koko yllä olevan kyselyesimerkin seuraavasti:
Ensinnäkin se suorittaa alikyselyn saadakseen luettelon asiakkaista, jotka löytävät kohteen New York
.
Code language: SQL (Structured Query Language) (sql)
Toiseksi SQL Server korvaa IN
-operaattorissa alikyselyn palauttamat asiakastunnusnumerot ja suorittaa ulomman kyselyn saadakseen lopullisen tuloksen.
Kuten voit s ee, käyttämällä alakyselyä voit yhdistää kaksi vaihetta yhteen. Alakysely poistaa tarpeen valita asiakastunnusnumerot ja liittää ne ulkoiseen kyselyyn. Lisäksi kysely itse säätyy automaattisesti aina, kun asiakastiedot muuttuvat.
Alikyselyn sisäkkäinen
Alakysely voidaan sijoittaa toiseen alikyselyyn. SQL Server tukee jopa 32 sisäkkäisyystasoa. Harkitse seuraavaa esimerkkiä:
Ensinnäkin, SQL Server suorittaa seuraavan alakyselyn saadakseen luettelon tuotemerkkien Strider
ja Trek
tuotemerkkien tunnusluvuista:
Toiseksi SQL Server laskee kaikkien kuuluvien tuotteiden keskimääräisen hinnaston näille tuotemerkeille.
Code language: SQL (Structured Query Language) (sql)
Kolmanneksi SQL Server löytää tuotteet, joiden luettelohinta on suurempi kuin kaikkien tuotteiden, joilla on tai Trek
-merkki.
SQL Server -alikyselytyypit
Voit käyttää alakyselyä monissa paikoissa:
- Lausekkeen sijasta
- Kanssa
IN
taiNOT IN
- Kanssa
ANY
taiALL
- Kanssa
EXISTS
taiNOT EXISTS
-
UPDATE
-kohdassaDELETE
, taiINSERT
-lauseke -
FROM
-lausekkeessa
SQL Server -alikysely käytetään lausekkeen sijasta
Jos alakysely palauttaa yhden arvon, sitä voidaan käyttää missä tahansa lausekkeessa.
Seuraavassa esimerkissä alikyselyä käytetään sarakelauseke nimeltä max_list_price
lausekkeessa SELECT
.
SQL Server -alikyselyä käytetään IN-operaattorin kanssa
Alakysely, jota käytetään IN
-operaattori palauttaa joukon nollia tai enemmän. Kun alikysely palauttaa arvot, ulompi kysely käyttää niitä.
Seuraava kysely löytää kaikkien maastopyörien ja maantiepyörien tuotteiden nimet, joita Pyörämyymälät myyvät.
Tätä kyselyä arvioidaan kahdessa vaiheessa:
- Ensinnäkin sisempi kysely palauttaa luettelon luokan tunnistenumeroista, jotka vastaavat nimiä
Mountain Bikes
jacode
maantiepyörät. - Toiseksi nämä arvot korvataan ulommalla kyselyllä, joka löytää tuotenimet, joilla on luokan tunnusnumero, vastaavat yhtä luettelon arvoista.
SQL Server -alikyselyä käytetään KAIKKI-operaattoreiden kanssa.
Alakysely otetaan käyttöön ANY
-operaattorilla on seuraava syntakse:
Code language: SQL (Structured Query Language) (sql)
Olettaen, että alakysely palauttaa luettelon arvoista v1, v2,… vn. ANY
-operaattori palauttaa TRUE
, jos jokin vertailupareista (scalar_expression
, vi) arvioi kohtaan TRUE
; muuten se palauttaa FALSE
.
Esimerkiksi seuraava kysely löytää tuotteet, joiden luettelohinnat ovat suurempia tai yhtä suuria minkä tahansa tuotemerkin keskimääräisen luettelohinnan kanssa .
Jokaiselle tuotemerkille alakysely löytää enimmäishinnan. Ulompi kysely käyttää näitä enimmäishintoja ja määrittää, minkä yksittäisen tuotteen luettelohinta on suurempi tai yhtä suuri kuin minkä tahansa merkin enimmäishinta.
SQL Server -alikyselyä käytetään KAIKKI-operaattoreiden kanssa
ALL
-operaattorilla on sama syntaksi kuin ANY
-operaattorilla:
Code language: SQL (Structured Query Language) (sql)
ALL
-operaattori palauttaa TRUE
, jos kaikki vertailuparit (scalar_expression
, vi) arvioivat TRUE
; muuten se palauttaa FALSE
.
Seuraava kysely löytää tuotteet, joiden luettelohinta on suurempi tai yhtä suuri kuin alikyselyn palauttama keskimääräinen luettelohinta:
SQL Server -alikyselyä käytetään olemassa olevalla tai EI OLEMASSA
Seuraava kuvaa EXISTS
-operaattorilla esitetyn alakyselyn syntaksia:
Code language: SQL (Structured Query Language) (sql)
EXISTS
-operaattori palauttaa TRUE
, jos alikysely palauttaa tulokset; muuten se palauttaa FALSE
.
Toisaalta NOT EXISTS
on päinvastainen kuin EXISTS
-operaattori.
Seuraava kysely löytää asiakkaat, jotka ostivat tuotteita vuonna 2017:
Jos käytät NOT EXISTS
-tunnusta EXISTS
, löydät asiakkaita, jotka eivät ostaneet tuotteita vuonna 2017.
SQL Server -alikysely FROM-lausekkeessa
Oletetaan, että haluat löytää kaikkien myyntihenkilöstön tilausten keskiarvon. Voit tehdä tämän etsimällä ensin henkilökunnan tilausten määrän:
Sitten voit käyttää AVG()
-funktiota tähän tulosjoukkoon. Koska kysely palauttaa tulosjoukon, joka näyttää virtuaaliselta taulukolta, voit sijoittaa koko kyselyn toisen tällaisen kyselyn lausekkeeseen FROM
:
Kysely, jonka sijoitat kohtaan FROM
-lausekkeella on oltava taulukon alias. Tässä esimerkissä käytimme t: tä alikyselyn taulukon aliaksena. Lopputuloksen aikaansaamiseksi SQL Server suorittaa seuraavat vaiheet:
- Suorita alakysely
FROM
-lausekkeessa. - Käytä alakyselyn tulosta ja suorita ulompi kysely.
Tässä opetusohjelmassa olet oppinut SQL Server -alikyselykonseptista ja siitä, miten erilaisia alikyselytyyppejä käytetään tietojen kyselyyn.