|
Adatkezelő
utasítások |
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 |
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;
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 ( [ ]
).
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.
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*";
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.
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.
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.
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.
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.
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.
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.
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.

|
|
|