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 tai NOT IN
  • Kanssa ANY tai ALL
  • Kanssa EXISTS tai NOT EXISTS
  • UPDATE -kohdassa DELETE, tai INSERT -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:

  1. Ensinnäkin sisempi kysely palauttaa luettelon luokan tunnistenumeroista, jotka vastaavat nimiä Mountain Bikes ja code maantiepyörät.
  2. 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.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *