Névjegyzék

Metszi az SQL példákat. Operátor az intersect adatkészletekhez. Példa egy kifejezéssel

Az SQL két módot kínál a táblázatok kombinálására:
  • a csatlakoztatott táblák (beleértve a szubkókákat is) meghatározva a kiválasztott utasításból származó mondatból. Először is, a táblák csatlakoztatását elvégzik, és csak a csoport által az aggregációval, az adatok megrendelésével, stb.
  • a kiválasztott állítások feldolgozása során kapott eredmények integrációjának meghatározása. Ebben az esetben a két kiválasztott operátor csatlakozik a kifejezéssel Unió, Metszi., Kivéve vagy megfelelő.

Szakszervezet

Kifejezés Unió Egyesíti a két kérés eredményeit a következő szabályokban:

A szabvány nem írja elő korlátozást az így létrejött készlet streaming soraira. Tehát néhány DBMS először megjeleníti az első kérés eredményét, majd a második lekérdezés eredményét. Az Oracle DBMS automatikusan rendezi a rekordokat az első megadott oszlopon, még akkor is, ha az index nem hozza létre.

Annak érdekében, hogy kifejezetten meghatározza a kívánt rendezési megrendelést, a megrendelést kifejezést kell használni. Ebben az esetben használhatja mind az oszlop nevét, mind számát (4.3. Ábra).


Ábra. 4.3.

Kifejezés Unió Mindegyik az Uniónak ugyanúgy teljesíti, mint az uniós kifejezést a következő kivételekkel:

  • az egybeesési vonalakat nem távolítják el a kapott eredményből;
  • kombinált lekérdezések jelennek meg az eredményül kapott sorrendben megrendelés nélkül.

Ha több mint két kérelmet szeretne kombinálni az egyesítő művelet sorrendjének megváltoztatására, használhatja a zárójeleket (4.4. Ábra).


Ábra. 4.4.

Metszőszövetkezet

Kifejezés Metszi. Lehetővé teszi, hogy csak az egyes egyesített sorozatokban jelen lévő sorokat válasszuk ki. Ábrán. 4.5 A kérelmek kombinálásának példája a metsző készletekként.


Ábra. 4.5.

Az Unió kivételével

Kifejezés Kivéve Lehetővé teszi, hogy csak azokat a vonalakat válasszuk ki, amelyek az első kombinált eredményben vannak jelen, de hiányoznak a második eredménykészletben.

Mondatok Metszi. és Kivéve Csak az SQL-92 szabvány teljes körű megfelelőségi szintjével kell támogatni. Szóval, néhány dbms helyett a kifejezés

Csak egy fontos szabály van annak, hogy a kivéve az utasításokat, amelyeket meg kell emlékezni.

Rend, mennyisége és adattípusok oszlop legyen az azonos típusú valamennyi kérelmet.

Az ANSI szabvány, az üzemeltetők az uniós és Kivéve készletek azonos prioritással, de a metszik állítás előtt végezzük egyéb szolgáltatóknak készletek. Javasoljuk, hogy kifejezetten kezelje a piaci szereplők prioritását a zárójelben. Ez általában nagyon jó gyakorlat.

Az ANSI szabvány szerint csak egy megrendelést használhatunk. Helyezze be a legújabb kiválasztási utasítás legegyszerűbbé tételére. Az oszlopok és táblázatok meghatározásának kétértelműségének elkerülése érdekében győződjön meg róla, hogy ugyanazt az álnevet hozza ki az összes táblázat egymás oszlopaihoz. Például:

Válassza ki az AU_LNAME mint "LASTNAME", AU_FNAME AS "FIRSTNAME" AUT-tól, kivéve az EMP_LNAME "LASTNAME", az EMP_FNAME "TASTNAME" opciót az alkalmazottak sorrendjévé válassza a Lastname, az első név szerint;

Ezenkívül, mivel az oszlopok minden listáján az oszlopok feltüntethetők a kompatibilis adattípusokkal, különböző hosszúságú oszlopokkal való munkavégzéshez különböző lehetőségek fordulhatnak elő a SUBD különböző platformokon. Ha például az előző példa első kérésére az AU_LNAME oszlop sokkal hosszabb, mint az EMP_LNAME oszlop a második kérelemből, akkor a különböző platformok különböző szabályokat alkalmazhatnak a végeredmény hosszának meghatározására. De általában beszélve, a platformok kiválasztják a hosszabb (és kevésbé korlátozott) méretét.

Minden Surgd saját szabályait alkalmazhatja az oszlopnév használatához, ha az oszlopok listáján szereplő nevek eltérnek egymástól. Az általános esetben az első kérési oszlopok nevét használják.

Az adatok típusai nem lehetnek azonosak, de kompatibilisnek kell lenniük. Például a Char és a Varchar típusok kompatibilisek. Alapértelmezés szerint az egyes oszlopokból származó készlet a legnagyobb típusnak megfelelő méretet alkalmazzák minden egyes pozícióban. Például, egy kérést adatok kivonatolása oszlopok tartalmazó típus értékeinek VARCHAR (IO) és VARCHAR (15) fogja használni a típusa és mérete VARCHAR (15).

A platformok egyike sem támogatja a megfelelő ajánlatot))

(Válassza a Statemenr.2 értékeket (expresszionl, expresszion2 [, ...]))

Lehetővé teszi, hogy megadjon egy vagy több kézzel megadott oszlopot, amelyek a végeredménykészletben szerepelnek. (Ezt a sortervezőnek nevezik.) Az értékek értékében pontosan annyi oszlopnak kell lennie, mivel azokat a kivételes operátor lekérdezései tartalmazzák. Bár a különálló utasítások kivételével nem támogatott, a funkcionális ekvivalens kivételével. A megfelelő ajánlat nem támogatott. Továbbá, hosszú vargraphic, hosszú vargraphic, blob, clob, dbclob, datalink, datalink és szerkezeti típusok nem használják a kivéve, de felhasználhatók, kivéve az összes.

Ha az ebből eredő adatkészlet egy olyan oszlop, amely ugyanazt a nevet tartalmazza az összes kiválasztott utasításban, akkor ezt a nevet az utasítás által visszaküldött oszlop végleges nevének használják. Ha ezt az oszlopot különböző válasszon utasításokban másként hívják, akkor az oszlopot minden kérésben át kell neveznie, ugyanaz, mint az összes nadrágnév.

Ha több üzemeltetőt használnak egy lekérdezésben az adatkészletekkel való munkához, akkor az első, amely zárójelben van zárva. Ezt követően a végrehajtás sorrendje jobbra lesz. Mindazonáltal az összes metszőhangot az Unió előtt és az üzemeltetők kivételével végzi. Például:

Válassza ki az EMPNO-t a munkavállalónál, ahol az "E%", kivéve az EMPNO-t az EMP_AKT-ről, ahol a Projno (TF1000 ", TF2000", -ad3110 ")) uniós értékek (" AA0001 "), (" AB0002 ") ");

A fenti példában a munkavállalói táblázatból, az osztályban működő alkalmazottak azonosítók (ID), amelynek neve "E" -vel kezdődik, akkor az IF1000, IF200 projektekben és az AD3110 által az IF1000-ben részt vevő személyek azonosítója kizárásra kerül az EMP_ACT-ből Fiók táblázat. És végül három további azonosítót adunk hozzá - AA0001, AB0002 és AC0003 az uniós készlet üzemeltetőjének felhasználásával.

Mysql

A MySQL-ben a kivételevő kijelentés nem támogatott. Alternatív megoldásként nem használhat olyan műveletekben, vagy nem létezik.

Az interszektív operátor azonos vonalakat extrahat az egy vagy több kérés eredményekből. Bizonyos szempontból a belső csatlakozás nagyon emlékeztet.

A metszés az osztályosztályra utal, hogy dolgozzon az adatkészletekkel (SET operátor). Más ilyen piaci szereplők közé tartozik a kivétel és az Unió. Az adatkészletek valamennyi üzemeltetője egyidejűleg manipulálja a két vagy több kérés eredményeit, innen és nevétől.

SQL2003 szintaxis

A metsző nyilatkozatban szereplő kérelmek számának technikai korlátozásai nem léteznek. Az általános szintaxis a következő.

Metszi.

] Metszi.

Kulcsszavak

Az összes eredménykészletből származó ismétlődő vonalakat tartalmazza.

Különböző.

A párhuzamos húrokat eltávolítják az összes kapott készletből, mielőtt összehasonlítjuk a metszőkezelőt. Az üres (null) értékekkel rendelkező oszlopok kettősnek tekintendők. Ha sem az összes kulcsszó, sem a különállóan nem jelenik meg, akkor az alapértelmezett alapértelmezett.

Megfelelő

Jelzi, hogy csak azokat az oszlopokat, amelyek mindkét kérelemben egy névvel rendelkeznek, akkor is, ha a szimbólumot (*) mindkét kérelemben használják.

Jelzi, hogy csak ezek az oszlopok kerülnek vissza, még akkor is, ha a kérelmek más oszlopokat észlelnek a megfelelő nevekkel. Ezt a javaslatot a megfelelő kulcsszóval kell használni.

Általános szabályok

Csak egy fontos szabály, amelyet meg akarsz emlékezni a metszőkezelővel való együttműködés során.

Az oszlopok sorrendje és száma minden kérésnek ugyanúgy kell lennie. A megfelelő oszlopok adattípusai is kompatibilisnek kell lenniük.

Például a Char és a Varchar típusok kompatibilisek. Alapértelmezés szerint az egyes oszlopokból származó készlet a legnagyobb típusnak megfelelő méretet alkalmazzák minden egyes pozícióban.

A platformok egyike sem támogatja a megfelelő ajánlatot.

Az ANSI szabvány szerint a metszőbb kijelentés magasabb prioritást élvez a többi üzemeltetőhöz képest, hogy dolgozzon a készletekkel, bár különböző platformokon az ilyen üzemeltetők prioritását más módon feldolgozzák. A szereplők prioritását a zárójelben kifejezetten kezelheti. Ellenkező esetben a DBMS a balról jobbra vagy az elsőtől az elsőig tart.

Az ANSI szabvány szerint csak egy megrendelést használhatunk. Helyezze be a legújabb kiválasztási utasítás legegyszerűbbé tételére. Az oszlopok és táblázatok meghatározásának kétértelműségének elkerülése érdekében győződjön meg róla, hogy ugyanazt az álnevet hozza ki az összes táblázat egymás oszlopaihoz. Például:

Olyan platformokon, amelyek nem támogatják a metsző nyilatkozatot, akkor helyettesítheti a teljes csatlakozással.

Válassza ki az A.AU_LNAME-t "LASTNAME", A.AU_FNAME AS "CSIVASSÁGÁNAK" A SZERKÉSZEKBEN SZÁMÁRA VÁLASZTOTT E.EMP_LNAME AS "LASTNAME", E.EMP_FNAME "SALAK "MINDENNAME MINDEN LASTNAME, ELSŐNAME;

Mivel az oszlop adattípusai a metszőkezes operátorban különböző kérelmekben kompatibilisek lehetnek, különböző lehet különböző hosszúságú oszlopokkal való munkavégzésre különböző SURBD platformokon. Például, ha az előző példa első kérésére az AUJNAME oszlop sokkal hosszabb, mint az EMPJNAME oszlop a második lekérdezésből, akkor a különböző platformok különböző szabályokat alkalmazhatnak a végeredmény meghatározására. De általában beszélve, a platformok kiválasztják a hosszabb (és kevésbé korlátozott) méretét.

Minden Surgd saját szabályait alkalmazhatja az oszlopnév használatához, ha az oszlopok listáján szereplő nevek eltérnek egymástól. Az első kérés oszlopok nevét általában használják.

DB2.

A DB2 platform támogatja a metsző kulcsszavakat és metszi az Alsi szabványt, valamint az értékek értékét.

(Utasítás._select_7 | értékek (expresszálás7 [, ...])) metszi

] (Inschround_SCJ_2 | Értékek (2 [, ...])) metszés

Bár a metszéskülönbség nem támogatott, a funkcionális ekvivalens metszés. A megfelelő ajánlat nem támogatott.

Ezenkívül hosszú vargraphic, hosszú vargraphic, blob, clob, dbclob, datalink és szerkezeti típusok nem használják a metsző ajánlatban, de használhatsz metszeteket.

Ha az ebből eredő adatkészlet egy olyan oszlop, amely ugyanazt a nevet tartalmazza az összes kiválasztott utasításban, akkor ezt a nevet az utasítás által visszaküldött oszlop végleges nevének használják. Ha különböző neveket használnak az oszlop lekérdezésében, a DB2 platform új nevet eredményez a kapott oszlophoz. Ezt követően alkalmatlanná válik a megrendeléshez és a frissítési ajánlatokhoz.

Ha több üzemeltetőt használnak egy lekérdezésben az adatkészletekkel való munkához, akkor az első, amely zárójelben van zárva. Ezt követően a végrehajtás sorrendje jobbra lesz. Mindazonáltal az összes metszésről szóló nyilatkozatot az Unióra és a kijelentések kivételével, például:

Válassza ki az EMPNO-t a munkavállalóból, ahol az "E%" -ot érinti (válassza az EMPNO EMPNO-t az EMP_ACT-től, ahol a Projno ("IF1000", "IF2000", "AA0001") uniós értékek ("AA0001"), ("AA0001") "AC0003")))))

A fenti példában a tanszéken működő valamennyi munkavállaló azonosítók (ID), akinek a neve az "E" -al kezdődik, a munkavállalói asztalról kerül. Azonban az azonosítók csak akkor kerülnek letöltésre, ha az Emp_Act néven is léteznek, és részt vesznek az IF1000, IF200 és az AD3110 projektekben.

Ebben a bemutatóban megtanulod, hogyan kell használni az SQL Server operátor kivételével (Tranact-SQL) szintaxissal és példákkal.

Leírás

Az SQL Server operátor kivételével (Transact-SQL), amelyet az első kiválasztott utasításban az összes sor visszaadására használnak, amelyeket a második kiválasztott utasítás nem ad vissza. Minden egyes kiválasztási utasítás meghatározza az adatkészletet. Az operátor kivételével az összes rekordot az első adatkészletből kivonja, majd törölje az összes rekordot a második adatkészletből az eredményekből.

A kérés kivételével

Magyarázat: A kérés kivételével a szürke árnyékolt területen felveszi a felvételt. Ezek a kiválasztott 1-es rekordok, és nem a kiválasztott 2.
A lekérdezés kivételével minden egyes kiválasztott kijelentésnek azonos számú mezővel kell rendelkeznie az eredményeknél hasonló adattípusokkal.

Szintaxis

Az SQL Server (Tranact-SQL) operátorszintaxis kivételével:

Paraméterek vagy argumentumok

kifejezések - Oszlopok vagy számítások, amelyeket összehasonlítani szeretne két kiválasztó operátor között. Nem lehetnek ugyanazok a mezők a kiválasztott állítások mindegyikében, de a megfelelő oszlopoknak hasonló adattípusokkal kell rendelkezniük.
táblázatok - táblázatok, amelyekből rekordokat szeretne kapni. Legalább egy táblázat van felsorolva a mondatból.
Ahol a feltételek - opcionális. A kiválasztott bejegyzésekhez ki kell tölteni.

jegyzet

  • Mindkét kiválasztott operátornál azonos számú kifejezésnek kell lennie.
  • A kiválasztott állítások megfelelő oszlopai hasonló adattípusokkal rendelkeznek.
  • A kezelő kivételével az összes rekordot az első kiválasztott kijelentésből adja meg, amely nem szerepel a második kiválasztási utasításban.
  • Az SQL Server üzemeltetője megegyezik az Oracle mínusz operátorával.

Példa egy kifejezéssel

Nézzük meg egy példát az SQL Server (Tranact-SQL) operátor kivételével, amely egy mezőt ugyanazzal az adattípussal adja meg.
Például:

Tranzakciós-sql.

Válassza a PRODUCT_ID termékeket a termékektől, kivéve a terméket a leltárból;

Válassza a PRODUCT_ID lehetőséget.

Termékekből.

Válassza a PRODUCT_ID lehetőséget.

A készletből;

Ez a példa egy kivételes operátorra visszaadja az összes terméktáblázat, amely a termékasztalban van, és nem a készletasztalon. Ez azt jelenti, hogy ha a termék_ID érték létezik a termékasztalban, és létezik a készletasztalban is, akkor a termék_ID érték nem jelenik meg a kivéve a lekérdezési eredményeket.

Példa több kifejezéssel

Ezután fontolja meg egy példát az SQL Server (Tranzact-SQL) lekérdezésére, amely egynél több oszlopot ad vissza.
Például:

Tranzakciós-sql.

Ebben a példában a kivételevő kérés visszaadja a névjegyzék rekordokat a névjegykártyával, a Last_Name és a First_Name névvel, amely nem felel meg a munkavállalóknak, a Last_Name és a First_Name-nek a munkatársai táblázatban.



Tetszett a cikket? Oszd meg