SQL Server subquery (Magyar)
Összefoglalás: ebben az oktatóanyagban megismerheti az SQL Server subquery-t és az allekérdezés adat lekérdezéséhez való felhasználását.
Bevezetés az SQL Server allekérdezésbe
Az allekérdezés egy másik utasításba beágyazott lekérdezés, például SELECT
, INSERT
, UPDATE
, vagy DELETE
.
Lássuk a következő példát.
Vegye figyelembe a orders
és customers
táblák a mintaadatbázisból.
A következő utasítás bemutatja, hogyan kell használni egy részlekérdezést egy WHERE
záradékban. div id = “3eb7f9a1d0”> utasítás az New York
helyen található ügyfelek értékesítési rendeléseinek megkereséséhez:
Íme az eredmény:
Ebben a példában a következő utasítás egy al lekérdezés:
Code language: SQL (Structured Query Language) (sql)
Ne feledje, hogy mindig be kell csatolnia a SELECT
zárójelben lévő részlekérdezés lekérdezése ()
.
Az allekérdezést belső lekérdezésnek vagy belső kiválasztásnak is nevezik, míg az allekérdezést tartalmazó utasítást külső választás vagy külső lekérdezés:
SQL A kiszolgáló a fenti lekérdezési példát a következőképpen hajtja végre:
Először az allekérdezést hajtja végre, hogy megkapja az New York
helyen található ügyfelek ügyfél-azonosítóinak listáját.
Code language: SQL (Structured Query Language) (sql)
Másodszor, az SQL Server helyettesíti a IN
operátorban az al lekérdezés által visszaküldött ügyfél-azonosító számokat, és végrehajtja a külső lekérdezést, hogy megkapja a végeredményt.
Ahogy tudsz s ee, az allekérdezés használatával két lépést kombinálhat. Az allekérdezés feleslegessé teszi az ügyfél-azonosító számok kiválasztását és a külső lekérdezésbe történő bedugását. Ezenkívül maga a lekérdezés is automatikusan igazodik, amikor az ügyféladatok megváltoznak.
Allekérdezés beágyazása
Az allekérdezés beágyazható egy másik allekérdezésbe. Az SQL Server akár 32 beágyazási szintet is támogat. Tekintsük a következő példát:
Először is, Az SQL Server a következő allekérdezést hajtja végre a Strider
és Trek
márkák márkaazonosítóinak felsorolásához:
Másodszor, az SQL Server kiszámítja az összes hozzá tartozó termék átlagos árlistáját ezekre a márkákra.
Code language: SQL (Structured Query Language) (sql)
Harmadszor, az SQL Server megtalálja azokat a termékeket, amelyek listaára magasabb, mint az összes olyan termék átlagos listaára, amelynek Strider
vagy Trek
márka.
SQL Server allekérdezéstípusok
Egy részlekérdezést sok helyen használhat:
- Kifejezés helyett
-
IN
vagyNOT IN
-
ANY
vagyALL
-
EXISTS
vagyNOT EXISTS
-
UPDATE
,DELETE
vagyINSERT
utasítás - A
FROM
záradékban
SQL Server subquery egy kifejezés helyett használatos
Ha egy részlekérdezés egyetlen értéket ad vissza, akkor bárhol használható, ahol egy kifejezést használnak.
A következő példában allekérdezést használunk max_list_price
nevű oszlopkifejezés egy SELECT
utasításban.
Az SQL Server allekérdezést az IN operátorral használják
A IN
operátor nulla vagy annál több értéket ad vissza. Miután az allekérdezés visszaadja az értékeket, a külső lekérdezés felhasználja azokat.
A következő lekérdezés megtalálja az összes hegyikerékpár és országúti kerékpár termék nevét, amelyet a Kerékpárüzletek értékesítenek.
Ezt a lekérdezést két lépésben értékelik:
- Először a belső lekérdezés egy kategóriaazonosító számok listáját adja vissza, amelyek megfelelnek a
Mountain Bikes
és acode
országúti kerékpár neveknek. - Másodszor, ezeket az értékeket a külső lekérdezés helyettesíti, amely megtalálja azokat a termékneveket, amelyeknek a kategóriaazonosító száma megegyezik a lista egyik értékével.
Az SQL Server allekérdezést MINDEN operátorral együtt használják
Az allekérdezést az ANY
operátor a következő szintaxissal vezeti be:
Code language: SQL (Structured Query Language) (sql)
Feltételezve, hogy az alkérdezés visszaadja a v1, v2,… vn értékek listáját. A ANY
operátor visszaadja az TRUE
operátort, ha az összehasonlító párok valamelyike (scalar_expression
, vi) értékeli TRUE
; ellenkező esetben a következő értéket adja vissza: FALSE
.
Például a következő lekérdezés megtalálja azokat a termékeket, amelyek listaára nagyobb vagy egyenlő bármely termékmárka átlagos listaárával .
Minden márka esetében az allekérdezés megtalálja a maximális listaárat. A külső lekérdezés ezeket a maximális árakat használja, és meghatározza, hogy melyik egyedi termék listaára nagyobb vagy egyenlő bármely márka maximális listaárával.
Az SQL Server allekérdezést az ALL operátorral használják
A ALL
operátor szintaxisa megegyezik az ANY
operátorral:
Code language: SQL (Structured Query Language) (sql)
A ALL
operátor visszaadja a TRUE
operátort, ha az összes összehasonlító pár (scalar_expression
, vi) TRUE
; ellenkező esetben visszaadja a következőt: FALSE
.
A következő lekérdezés megtalálja azokat a termékeket, amelyek listaára nagyobb vagy egyenlő az allekérdezés által visszaadott átlagos listaárral:
Az SQL Server allekérdezést a LÉTEZIK vagy NEM LÉTEZIK
Az alábbiak szemléltetik egy EXISTS
operátorral bevezetett részlekérdezés szintaxisát:
Code language: SQL (Structured Query Language) (sql)
A EXISTS
operátor visszaadja az TRUE
operátort, ha az alkérdezés visszatér; különben a FALSE
értéket adja vissza.
Másrészt a NOT EXISTS
ellentétes a EXISTS
operátor.
A következő lekérdezés megtalálja azokat az ügyfeleket, akik 2017-ben vásároltak termékeket:
Ha a NOT EXISTS
-t használja a EXISTS
, megtalálja azokat az ügyfeleket, akik 2017-ben nem vásároltak termékeket.
SQL Server allekérdezés a FROM záradékban
Tegyük fel, hogy meg szeretné találni az összes értékesítő megrendelésének átlagát. Ehhez először megtalálja a személyzet által leadott megrendelések számát:
Ezután alkalmazhatja a AVG()
függvényt erre az eredménykészletre. Mivel egy lekérdezés olyan eredménykészletet ad vissza, amely virtuális táblának tűnik, a teljes lekérdezést elhelyezheti egy másik ilyen lekérdezés FROM
záradékában:
A FROM
záradéknak tartalmaznia kell egy tábla álnevet. Ebben a példában a t-t használtuk az allekérdezés táblaaliasaként. A végeredmény előállításához az SQL Server a következő lépéseket hajtja végre:
- Végezze el az alkérdezést a
FROM
záradékban. - Használja az allekérdezés eredményét, és hajtsa végre a külső lekérdezést.
Ebben az oktatóanyagban megismerkedett az SQL Server allekérdezés fogalmával, valamint arról, hogyan használhat különféle allekérdezéstípusokat az adatok lekérdezéséhez. >