Adatkezelő utasítások

SELECT utasítás

A SELECT utasítás hatására az adatbázis-kezelő rendszer rekordhalmaz formátumú adatokat ad az adatbázisról.

Szintaxis

SELECT [predikátum] { * | tábla.* | [tábla.]mező1 [AS alias1]
[, [tábla.]mező2 [AS alias2]]} FROM táblanév [, ...] [IN külső adatbázis]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]
[WITH OWNERACCESS OPTION]

A SELECT utasítás részei:

Elem

Leírás

predikátum

A következő predikátumok egyike: ALL, DISTINCT, DISTINCTROW, vagy TOP. A predikátummal a válaszba kerülő rekordok körét tudjuk meghatározni. Az alapértelmezett predikátum az ALL.

*

Használatával a megadott tábla vagy táblák minden rekordját kijelöljük.

tábla

A tábla neve, amely a kiválasztandó rekordok mezőit tartalmazza.

mező1, mező2

A mező neve, amelyben az adatokat keressük. Ha több mezőt jelölünk meg, azok a megjelölt sorrendben lesznek visszakeresve.

alias1, alias2

A tábla eredeti oszlopnevei helyett használandó oszlop fejlécek.

Táblanév

A tábla vagy táblák neve, amelyekből az adatokat vissza szeretnénk keresni.

külső adatbázis

A táblanév tábla adatbázisának neve, ha az nem az aktuális adatbázisban van.

Az utasítás végrehajtásakor az adatbázis-kezelő rendszer megkeresi a meghatározott tábla, vagy táblák megadott oszlopait, kiválasztja a feltételeknek megfelelő sorokat, majd sorba rakja és csoportosítja azokat a megadott sorrendnek megfelelően.

A SELECT utasítás nem változtatja meg az adatbázis adatait.

A SELECT általában az SQL utasítás első szava. Az SQL utasítások közül leggyakrabban a SELECT vagy a SELECT INTO utasítást használjuk.

A SELECT utasítás minimális szintaktikája:

SELECT mezők FROM tábla

A csillag (*) használatával a tábla minden mezőjét kiválasztjuk. A következő utasítás az Alkalmazottak tábla minden mezőjét kijelöli:

SELECT * FROM Alkalmazottak;

Ha a FROM záradékban meghatározott mező több táblában is megtalálható, a mező neve elé írjuk be a tábla nevét és a . (pont) operátort. A következő példában a Részlegek mező mind az Alkalmazottak, mind a Felügyelők táblában megtalálható. Az SQL utasítás kikeresi az Alkalmazottak tábla Részlegek és a Felügyelők tábla Felügyelő nevek mezőit:

SELECT Alkalmazottak.[Részlegek], Felügyelők.[Felügyelő nevek]
FROM Alkalmazottak INNER JOIN Felügyelők
WHERE Alkalmazottak.[Részlegek] = Felügyelők.[Részlegek];

Az tábla objektum létrehozásakor az adatbázis-motor a mező objektum nevének a rekord mezőjének nevét adja. Ha a név nem felel meg, az AS foglalt szóval megváltoztathatjuk. A következő példában a mező objektum neve Születésre változik:

SELECT [Születési dátum] AS Születés FROM Alkalmazottak;

Ha az összesítő függvények vagy lekérdezések használatakor visszakapott mező neve nem egyértelmű, vagy már van ilyen nevünk, a mező objektumot át kell neveznünk az AS záradékkal. A következő példában a mező objektum neve Létszámra változik:

SELECT COUNT(Alkalmazottkód) AS [Létszám] FROM Alkalmazottak;

ALL, DISTINCT, DISTINCTROW, TOP predikátum

SQL lekérdezésben meghatározza, hogy mely rekordok legyenek kiválasztva.

Szintaxis

SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]] FROM tábla

Az adott predikátumokat tartalmazó SELECT utasítás részei:

Elem

Leírás

ALL

Az alapértelmezett érték. Az adatbázis-motor minden olyan rekordot kiválaszt, amely megfelel az SQL utasításban megadott feltételeknek.

DISTINCT

Kihagyja azokat a rekordokat, amelyek a megadott mezőben azonos értékeket tartalmaznak. Ahhoz, hogy a rekordok bekerüljenek a lekérdezésbe, a SELECT utasításban felsorolt minden mezőnek egyedi értéket kell tartalmaznia.

DISTINCTROW

A lekérdezésből kimaradnak azok a rekordok, amelyeket a tábla többször tartalmaz

TOP n [PERCENT]

A lekérdezésbe a megadott számú rekord kerül be az ORDER BY záradéknak megfelelően a lista elejéről vagy végéről.

tábla

A tábla neve, amelyben rekordokat szeretnénk visszakeresni

 

FROM záradék

Annak a táblának vagy lekérdezésnek a meghatározása, amelyben a SELECT utasításban felsorolt mezők megtalálhatók.

Szintaxis

SELECT mezőlista FROM táblanév [IN külső adatbázis]

A FROM záradékot tartalmazó SELECT utasítás részei:

Elem

Leírás

mezőlista

A keresett mezők listája az alias, nevekkel együtt, az SQL összesítő függvények, az (ALL, DISTINCT, DISTINCTROW vagy TOP) vagy a SELECT utasítás más predikátumai.

táblanév

Egy vagy több táblát meghatározó kifejezés. Megadhatjuk egy tábla nevét, mentett lekérdezés nevét vagy az INNER JOIN, LEFT JOIN, vagy RIGHT JOIN záradékokkal illesztett táblákat.

külsőadatbázis

A táblanév táblákat tartalmazó külső adatbázis teljes hozzáférési útvonala.

  • A FROM záradékot a SELECT utasítással együtt kell használni.
  • A táblanévben a táblák felsorolási sorrendje tetszőleges.
  • Külső adatbázisban történő kereséskor az egyszerűség kedvéért az IN záradék helyett használjunk csatolt táblát.

Példa:

SELECT [Vezetéknév], [Keresztnév] FROM Alkalmazottak;

WHERE záradék

Meghatározza, hogy a FROM záradékban felsorolt táblák mely rekordjait érintik a SELECT, UPDATE vagy DELETE utasítások.

Szintaxis

SELECT mezőlista FROM táblanév WHERE feltétel

A WHERE záradékot tartalmazó SELECT utasítás:

Elem

Leírás

mezőlista

A visszakeresendő mező vagy mezők neve az alias nevükkel együtt, a predikátumai (ALL, DISTINCT, DISTINCTROW és TOP) vagy a SELECT utasítás más beállításai.

táblanév

A tábla vagy táblák neve, amelyekben adatokat szeretnénk visszakeresni.

feltétel

Ez a feltétel-kifejezés szabja meg, hogy melyik rekord kerülhet be a lekérdezés végeredményébe.

Az adatbázis-motor kiválasztja azokat a rekordokat, amelyek megfelelnek a WHERE záradék feltételeinek. Ha nem használjuk a WHERE záradékot, a tábla minden sora bekerül a lekérdezésbe. Ha a lekérdezésben több táblát is megadunk, és nem használjuk a WHERE vagy a JOIN záradékot, akkor a lekérdezés végeredményeként a táblák Descartes-szorzatát kapjuk.

Példa:

SELECT [Név], Fizetés FROM Alkalmazottak WHERE Fizetés > 2000000;

Ha olyan nevet használunk, amely szóközt vagy pontot tartalmaz, zárjuk szögletes zárójelbe ( [ ] ).

GROUP BY záradék

A megadott mezőben az azonos értékű rekordokat egy rekorddá alakítja át. Összesítő érték hozható létre minden rekordról, ha SQL összesítő függvényt, mint például a Sum vagy a Count függvényt, írunk be a SELECT utasításba.

Szintaxis

SELECT mezőlista FROM tábla WHERE feltétel [GROUP BY mezőcsoport]

A GROUP BY záradékot tartalmazó SELECT utasítás részei:

Elem

Leírás

mezőlista

A visszakeresendő mező vagy mezők neve az alias nevükkel együtt, az SQL összesítő függvények, az (ALL, DISTINCT, DISTINCTROW és TOP) predikátumok vagy a SELECT utasítás más beállításai.

tábla

A tábla vagy táblák neve, amelyekből adatokat szeretnénk visszakeresni. További információkat a FROM záradék címszó alatt találhatunk.

feltétel

A kiválasztás feltételei. Ha az utasítás tartalmazza a WHERE záradékot, az adatbázis-motor összekapcsolja az értékeket, miután a rekordokon alkalmazta a WHERE záradék feltételeit.

mezőcsoport

Maximum 10 mező neve, melyeknek rekordjait csoportosítani szeretnénk. A mezők sorrendje meghatározza a csoportosítás szintjeit a legmagasabbtól a legalacsonyabbig.

Ha nincs SQL összesítő függvény a SELECT utasításban, akkor nem hozunk létre összesítő értéket.
A Null értékű mezők is csoportosítva lesznek, és nem maradnak ki. Mindamellett az SQL összesítő függvények nem veszik figyelembe a Null értéket.
Használjuk a WHERE záradékot azon sorok kizárására, amelyeket nem szeretnénk csoportosítani, a HAVING záradékkal pedig csoportosítás után szűrhetjük meg a rekordokat.

HAVING záradék

A záradékban megadhatjuk, hogy a SELECT utasítás GROUP BY záradékával csoportosított rekordok közül melyek legyenek megjelenítve. Miután a GROUP BY csoportosítottuk a rekordokat, a HAVING záradékban megadott feltételeknek megfelelő összes rekord megjelenik a képernyőn.

Szintaxis

SELECT mezőlista FROM tábla WHERE feltétel GROUP BY mezőcsoport
[HAVING csoportfeltétel

A HAVING záradékot tartalmazó SELECT utasítás részei:

Elem

Leírás

mezőlista

A visszakeresendő mező vagy mezők neve az alias nevükkel együtt, az SQL összesítő függvények, az (ALL, DISTINCT, DISTINCTROW vagy TOP) predikátumok vagy a SELECT utasítás más beállításai.

tábla

A tábla neve, amelyben rekordokat szeretnénk visszakeresni. További információ a FROM záradék leírásában található.

feltétel

A kiválasztás feltétele. Ha az utasítás tartalmazza a WHERE záradékot, a Microsoft Jet adatbázis-motor csak a feltételeknek megfelelő rekordokat csoportosítja.

mezőcsoport

Maximum 10 mező neve, amelyek rekordjait csoportosítani szeretnénk. A mezők sorrendje meghatározza a csoportosítás szintjeit a legmagasabbtól a legalacsonyabb szintig.

csoportfeltétel

A kifejezés, amely megadja, hogy a csoportosított rekordok közül melyek legyenek megjelenítve.

A HAVING záradék hasonlít a WHERE záradékra, amelyben a rekordok kiválasztásának feltételeit adhatjuk meg. Miután a rekordokat csoportosítottuk a GROUP BY záradékkal, a HAVING záradékkal megadhatjuk, hogy mely rekordok legyenek megjelenítve:

Példa:

SELECT Kategóriakód, Sum([Raktáron]) FROM Termékek
GROUP BY [Kategóriakód] HAVING Sum([Raktáron]) > 100 And Like "BOS*";

ORDER BY záradék

A lekérdezés eredményeként kapott rekordok megadott mezőit növekvő vagy csökkenő sorrendbe rendezi.

Szintaxis

SELECT mezőlista FROM tábla WHERE feltétel
[ORDER BY
mező1 [ASC | DESC ][, mező2 [ASC | DESC ][, ...]]]

Az ORDER BY záradékot tartalmazó SELECT utasítás részei:

Elem

Leírás

mezőlista

A visszakeresendő mező vagy mezők neve az alias nevükkel együtt, az SQL összesítő függvények, az (ALL, DISTINCT, DISTINCTROW és a TOP) predikátumok vagy a SELECT utasítás más beállításai.

tábla

A tábla neve, amelyben rekordokat szeretnénk visszakeresni. További információk a FROM záradék leírásában találhatók.

feltétel

A kiválasztás feltétele. Ha az utasítás tartalmazza a WHERE záradékot, az adatbázis-motor csak a kritériumoknak megfelelő rekordokat csoportosítja.

mező1, mező2

A mezők neve, amelyek alapján a rekordokat sorba rendezzük.

Az ORDER BY záradék használata nem kötelező, ha azonban az adatokat rendezett sorrendben szeretnénk megjeleníteni, használnunk kell a záradékot.
Az alapértelmezett rendezési sorrend növekvő (A-Z, 0-9

Példa:

SELECT Vezetéknév, Keresztnév FROM Alkalmazottak ORDER BY Vezetéknév;

Ha csökkenő sorrendbe szeretnénk rendezni az adatokat (Z-A, 9-0), a csökkenő sorrendű mező neve után írjuk be a DESC foglalt szót. A következő példában kiválasztjuk a fizetéseket, majd csökkenő sorrendbe rendezzük azokat:

Példa:

SELECT Vezetéknév, Fizetés FROM Alkalmazottak
ORDER BY Fizetés DESC, Vezetéknév;

Az ORDER BY záradékban több mező nevét is megadhatjuk. A rekordok először az első mező alapján lesznek sorba rendezve. Azok a rekordok, amelyek ebben a mezőben azonos értékeket tartalmaznak, a következő mező értékei alapján lesznek sorba rendezve.

SELECT...INTO utasítás

Táblakészítő lekérdezést hoz létre. A meglévő lekérdezés eredményének objektumából új táblát létrehozó módosító lekérdezés.

Szintaxis

SELECT mező1[, mező2[, ...]] INTO új tábla [IN külső adatbázis] FROM forrás

A SELECT...INTO utasítás a következő részekből áll:

Elem

Leírás

mező1, mező2

Az új táblába másolandó mezők neve.

új tábla

A létrehozandó tábla neve, amelynek meg kell felelnie az elnevezési konvenciónak. Ha az új tábla ugyanaz, mint egy létező táblanév, akkor kezelhető hiba lép fel.

külső adatbázis

Külső adatbázis elérési útja.

forrás

Egy létező tábla neve, melyből a rekordokat válogatjuk. Lehet egy vagy több tábla, illetve egyetlen lekérdezés.

Táblakészítő lekérdezéssel archiválhatunk rekordokat, biztonsági mentést készíthetünk a táblákról, más adatbázisba exportálandó táblákat állíthatunk elő, vagy átmeneti adathalmazt gyűjthetünk össze, amelyre a jelentéseket alapozzuk bizonyos ideig.

Figyelem:

Elsődleges kulcsot is definiálhatunk az új táblához. Új tábla készítésekor az új tábla örökli a lekérdezés által használt táblákból a mezők adattípusát és méretét, de más mező- vagy táblatulajdonságot nem.

INSERT INTO utasítás

Egy vagy több rekordot ad hozzá a táblához. Ezt hozzáfűző lekérdezésnek hívják.

Szintaxis

Több rekordot létrehozó hozzáfűző lekérdezés:

INSERT INTO cél [IN külső adatbázis] [(mező1[, mező2[, ...]])]
SELECT [forrás.]mező1[, mező2[, ...] FROM
táblakifejezés

Egyetlen rekordot létesítő hozzáfűző lekérdezés:

INSERT INTO cél [(mező1[, mező2[, ...]])] VALUES (érték1[, érték2[, ...])

Az INSERT INTO utasítás a következő részekből áll:

Elem

Leírás

cél

A tábla neve, melyhez hozzá szeretnénk fűzni az új rekordokat.

külsőadatbázis

A külső adatbázis elérési útja.

forrás

A tábla vagy lekérdezés neve, melyből a rekordokat át szeretnénk másolni.

mező1, mező2

Ha cél argumentum után szerepelnek, az új rekordban kitöltendő mezők nevei, ha forrás argumentum után szerepelnek, akkor ezekből a mezőkből veendők az adatok.

táblakifejezés

Azon tábla vagy táblák neve, amelyekből származnak a beillesztett rekordok. Ez az argumentum lehet egyetlen tábla, INNER JOIN, LEFT JOIN, vagy RIGHT JOIN eredményeképp született kombináció, vagy tárolt lekérdezés.

érték1, érték2

Az új rekord egyes mezőibe írandó értékek. Minden érték a vele a listában azonos pozíción szereplő mezőbe kerül: az érték1 a mező1-be, az érték2 a mező2-be, és így tovább. Az értékeket vesszővel választjuk el és a szöveges értékeket idézőjelbe (" ") tesszük.

A fenti szintaxis szerinti INSERT INTO utasítással adhatunk egyetlen rekordot egy táblához. Ez esetben a kód a rekord minden mezőjének nevét és értékét megadja. Minden olyan mezőt ki kell írni, amelynek értéket szeretnénk adni, s ezekhez az értéket is meg kell adni. Ha nem adunk meg minden mezőt, a kihagyottak a Null alapértéket kapják. Az új rekord a tábla végére kerül.

Az INSERT INTO utasítással több másik táblából vagy lekérdezésből származó rekord is hozzáfűzhető a táblához, ahogy fentebb a több rekordot hozzáfűző lekérdezés SELECT ... FROM záradéka mutatja. Ez esetben a SELECT záradék jelöli ki, mely mezőket használjuk a céltáblához fűzéshez.
A forrás és a céltábla jelenthet táblát is, lekérdezést is. Ha lekérdezést adunk meg, a Microsoft Jet adatbázis-motor a lekérdezésben szereplő minden táblához hozzáfűzi a rekordokat.

Ha a céltábla elsődleges kulcsot tartalmaz, akkor biztosítsuk, hogy az ilyen mezők egyedi értéket kapjanak. Ellenkező esetben az adatbázis-motor nem adja hozzá az új rekordokat.
Ha Számláló mezőt tartalmazó rekordokat hozunk létre, és az új rekordokat újra szeretnénk számozni, a lekérdezésben ne írjuk be a Számláló mezőt.

UPDATE utasítás

Frissítő lekérdezést hoz létre, amely a megadott tábla mezőit módosítja a megadott feltétel alapján.

Szintaxis

UPDATE tábla SET új érték WHERE feltétel;

Az UPDATE utasítás a következő részekből áll:

Elem

Leírás

tábla

Azon tábla neve, amelynek adatait módosítani szeretnénk.

új érték

Az a kifejezés, amely meghatározza, milyen érték kerül be a módosítandó rekordok egyes mezőibe.

feltétel

Az a kifejezés, amely meghatározza, mely rekordok módosulnak. Csak a kifejezésnek eleget tevő rekordok változnak.

Az UPDATE különösen akkor hasznos, amikor sok rekordot szeretnénk módosítani, vagy amikor a módosítandó rekordok több különböző táblában vannak.

Egyszerre több mezőt is módosíthatunk.

Példa:

UPDATE Rendelések
SET Rendelt mennyiség = Rendelt mennyiség * 1.1,
SzállításiKöltség = SzállításiKöltség * 1.03
WHERE Ország = 'UK';

Fontos:
Az UPDATE nem hoz létre eredményhalmazt. Ha a rekordokat frissítő lekérdezéssel módosítjuk, a műveletet nem lehet visszavonni. Az adatokról mindig legyen másolatunk. Ha rossz rekordokat módosítunk, a másolatból helyreállíthatjuk az eredeti adatokat.

DELETE utasítás

Létrehoz egy törlő lekérdezést, amely a FROM záradékban felsorolt táblákból törli azokat a rekordokat, amelyek eleget tesznek a WHERE záradék feltételének.

Szintaxis

DELETE [tábla.*] FROM tábla WHERE feltétel

A DELETE utasítás három részből áll:

Elem

Leírás

tábla

A táblanév megadása nem kötelező. Kijelöli a táblát, amelyből törölni kell a rekordokat.

tábla

A tábla neve, amelyből a rekordokat törölni kell

feltétel

A törlendő rekordokat kijelölő kifejezés

A DELETE különösen hasznos, ha sok rekordot szeretnénk törölni.
Ha az egész táblát töröljük a DROP utasítással, akkor annak szerkezete is elvész. Ezzel szemben a DELETE használatakor csak az adatok törlődnek, a tábla szerkezete és minden jellemzője (például a mezőnevek, az indexek) érintetlen marad.
A DELETE segítségével olyan táblákból is törölhetünk rekordokat, amelyek más táblákkal egy-a-többhöz kapcsolatban állnak. Kaszkádolt törlésnél a kapcsolat "több" oldalán levő rekordok is törlődnek, ha a kapcsolat "egy" oldalán levő rekordot törli a lekérdezés.
A törlő lekérdezés nem egyes mezők adatait törli, hanem a teljes rekordokat. Ha egyes mezők adatait szeretnénk törölni, használjunk frissítő lekérdezést (UPDATE), ami a mezők értékét Null értékre változtatja.

Fontos:
A törlő lekérdezés nem vonható vissza, a törölt rekordok elvesznek. Mindig legyen biztonsági mentés az adatokról. Így ha rossz rekordokat töröltünk, ezek visszanyerhetők.

INNER JOIN művelet

Egyesíti két tábla rekordjait, ha azok közös mezőjében azonos érték szerepel.

Szintaxis

FROM tábla1 INNER JOIN tábla2
ON
tábla1.mező1 hasonlító művelet tábla2.mező2

Az INNER JOIN művelet a következő részekből áll:

Elem

Leírás

tábla1, tábla2

A két tábla neve, melyek rekordjaiból az egyesített rekordok készülnek.

mező1, mező2

Az egyesítendő mezők neve. Ha a mezők nem szám típusúak, ugyanolyan adattípushoz kell tartozniuk, ugyanolyan jellegű adatokat kell tartalmazniuk, de a nevük lehet különböző.

hasonlító művelet

Bármely összehasonlító művelet: "=", "<", ">", "<=", ">=" vagy "<>".

Az INNER JOIN művelet bármely FROM záradékban használható. Ez az illesztés leggyakoribb fajtája. Egyesíti két tábla rekordjait, ha azok közös mezőjében azonos érték szerepel.
Ha Feljegyzést vagy OLE objektumot tartalmazó mezőket próbálunk illeszteni, hiba lép fel.
Hasonló típusú szám mezők illeszthetők. Például illeszthető Számláló és Hosszú egész mező, mert ezek hasonló típusúak. Ugyanakkor Egyszeres és Dupla mező nem illeszthető.

Példa:

SELECT Kategórianév, Terméknév
FROM Kategóriák INNER JOIN Termékek
ON Kategóriák.Kategóriakód = Termékek.Kategóriakód;
Több ON záradékot is írhatunk egy JOIN utasításba a következő szintaxis szerint:

Példa:

SELECT mezők
FROM tábla1 INNER JOIN tábla2
ON tábla1.mező1 hasonlító művelet tábla2.mező1 AND
ON tábla1.mező2 hasonlító művelet tábla2.mező2) OR
ON tábla1.mező3 hasonlító művelet tábla2.mező3)];

LEFT JOIN vagy RIGHT JOIN szerepelhet INNER JOIN utasításon belül, INNER JOIN azonban nem írható LEFT JOIN vagy RIGHT JOIN utasításba.

LEFT JOIN, RIGHT JOIN művelet

FROM záradékban kombinálják a forrástáblák rekordjait.

Szintaxis

FROM tábla1 [ LEFT | RIGHT ] JOIN tábla2
ON
tábla1.mező1 hasonműv tábla2.mező2

A LEFT JOIN és a RIGHT JOIN műveletnek a következők a részei:

Elem

Leírás

tábla1, tábla2

A két tábla neve, melyek rekordjaiból az egyesített rekordok készülnek.

mező1, mező2

Az egyesítendő mezők neve. Ha a mezők nem szám típusúak, akkor ugyanolyan adattípushoz kell tartozniuk, ugyanolyan jellegű adatokat kell tartalmazniuk, de a nevük lehet különböző.

hasonlító művelet

Bármely összehasonlító művelet: "=," "<," ">," "<=," ">=," vagy "<>."

A LEFT JOIN művelettel bal oldali laza illesztést hozhatunk létre. A bal oldali laza illesztésben a két tábla közül az elsőnek (a bal oldalinak) minden rekordja megjelenik, akkor is, ha nem illeszkedik hozzájuk érték a második (jobb oldali) táblában.
A RIGHT JOIN művelet létesít jobb oldali laza illesztést. A jobb oldali laza illesztésben a két tábla közül a másodiknak (a jobb oldalinak) minden rekordja megjelenik, akkor is, ha nem illeszkedik hozzájuk érték az első (bal oldali) táblában.

Példa:

SELECT Kategórianév, Terméknév FROM Kategóriák LEFT JOIN Termékek
ON Kategóriák.Kategóriakód = Termékek.Kategóriakód;

Figyelem:

  • Ha csak azokat a rekordokat szeretnénk kiválogatni, amelyek az illesztett mezőben azonos értéket tartalmaznak, használjuk az INNER JOIN műveletet.
  • A LEFT JOIN vagy RIGHT JOIN szerepelhet INNER JOIN utasításon belül, INNER JOIN azonban nem írható LEFT JOIN vagy RIGHT JOIN utasításba. Az INNER JOIN művelet leírásából tudhatjuk meg, hogyan ágyazhatók egymásba különböző illesztő műveletek.
  • Több ON záradék is összekapcsolható. Evvel kapcsolatban bővebb információt kaphatunk az INNER JOIN művelet leírásában.
  • Ha Feljegyzés vagy OLE objektumot tartalmazó mezőket próbálunk illeszteni, hiba lép fel.
UNION művelet

Egyesítő lekérdezést hoz létre, amely két vagy több lekérdezés, illetve tábla adatait egyesíti.

Szintaxis

[TABLE] lekérdezés1 UNION [ALL] [TABLE] lekérdezés2
[UNION [ALL] [TABLE] lekérdezésn [ ... ]]

A UNION művelet a következő részekből áll:

Elem

Leírás

lekérdezés1-n

SELECT utasítás, tárolt lekérdezés neve vagy (TABLE kulcsszó után) tárolt tábla neve.

Egyetlen UNION utasítással akármennyi lekérdezés, tábla és SELECT utasítás eredményét egyesíthetjük. A következő példa a már létező [Új számlák] táblát egyesíti egy SELECT utasítás eredményével:

TABLE [Új számlák] UNION ALL
SELECT * FROM Vevők WHERE Rendelt mennyiség > 1000;

Alapértelmezés szerint a UNION művelet eredményében nem szerepelnek ismétlődő rekordok, de az ALL állítással elérhetjük, hogy minden rekord megjelenjen. Ez egyúttal gyorsítja a lekérdezést.

A UNION műveletben szereplő összes lekérdezésben és táblában ugyanannyi mezőnek kell lennie, de a mezők méretének és adattípusának nem kell azonosnak lenni.

Csak az első SELECT utasításban használjunk aliast, mert az összes továbbiban hatástalan. Az ORDER BY záradékban olyan névvel hivatkozzunk a mezőkre, ahogy az első SELECT utasításban szerepelnek.

Figyelem:

  • A GROUP BY vagy HAVING záradékkal csoportosíthatjuk az összes lekérdezés eredményét.
  • Az utolsó lekérdezés végén elhelyezett ORDER BY záradékkal rendezhetjük sorba az összes megjelenő adatot.

 

Összeállította:

Ajánlott felbontás:
800 x 600