Ha a lekérdezések nem működnek elég keményen, néhány alapvető SQL utasítás hozzáadása segíthet az eredmények összpontosításában. Vizsgáljuk meg az SQL-utasítások néhány típusát, valamint azokat a záradékokat vagy részeket, amelyeket a kívánt eredmények eléréséhez szerkeszthet.
Tartalom
Select utasítás létrehozása
Minden SQL-utasításhoz két vagy három záradék tartozik. A SELECT záradék tájékoztatja az adatbázist az adatok keresésének helyéről, és megkéri, hogy adjon vissza egy adott eredményt.
Megjegyzés: A SELECT utasításokat mindig pontosvessző (;) zárja le, amely vagy az utolsó záradék végén, vagy az SQL-utasítás utolsó sorát követő külön sorban állhat.
Az alábbi select utasítás arra kéri az Accesst, hogy kérjen le információkat az E-mail cím és a Cég oszlopból a Névjegyek táblából, különösen ott, ahol a Város oszlopban megtalálja a "Budapest" szót.
A fenti lekérdezésnek három záradéka van: SELECT, FROM és WHERE.
1. A SELECT záradék felsorolja azokat az oszlopokat, amelyekben a használni kívánt adat, valamint egy operátor (SELECT) és két ezt követő azonosító található. Ha egy azonosítóban szóközök vagy más speciális karakterek szerepelnek (például az E-mail Address azonosítóban), az azonosítót szögletes zárójelbe kell tenni.
2. A FROM záradék a forrástáblát azonosítja. Ebben a példában egy operátort (FROM) tartalmaz, amelyet egy azonosító (Contacts) követ.
3. A WHERE záradék megadása nem kötelező. A példában egy operátort (WHERE) tartalmaz, amelyet egy kifejezés (City="Seattle") követ.
A lekérdezések kiválasztásával kapcsolatos további információkért lásd: Egyszerű választó lekérdezés létrehozása.
A leggyakoribb SQL-záradékok listája az alábbi:
SQL-záradék neve |
Rendeltetés |
Kötelező ? |
---|---|---|
SELECT |
A vizsgált adatokat tartalmazó mezőket sorolja fel. |
Igen |
FROM |
A SELECT záradékban felsorolt mezőket tartalmazó táblákat sorolja fel. |
Igen |
WHERE |
Meghatározza azokat a mezőfeltételeket, amelyek alapján az egyes rekordok bekerülnek az eredmények közé. |
Nem |
ORDER BY |
Megadja az eredmények rendezésének módját. |
Nem |
GROUP BY |
Az összegző függvényeket tartalmazó SQL-utasításokban felsorolja azokat a mezőket, amelyek a SELECT záradékban nem szerepeltek. |
Csak ha létezik ilyen mező |
HAVING |
Összegző függvényeket tartalmazó SQL-utasításokban megadja a SELECT utasításban összegzett mezőkre vonatkozó feltételeket. |
Nem |
Minden SQL-záradék kifejezésekből áll. Az alábbi lista bemutat néhány gyakori SQL-kifejezést.
SQL-kifejezés |
Definíció |
Példa |
---|---|---|
azonosító |
Egy adatbázis-objektum, például oszlop azonosítására szolgáló név. |
[E-mail cím] és Vállalat |
operátor |
Műveletet jelző vagy azt módosító kulcsszó. |
AS |
állandó (konstans) |
Nem változó érték, például egy szám, vagy a NULL. |
42 |
kifejezés |
Azonosítók, operátorok, állandók és függvények kombinációja, amellyel értéket ad egy számnak. |
>= Termékek.[Egységár] |
A SELECT záradék testreszabása
Testreszabás |
Példa |
---|---|
Csak a különböző értékek megjelenítése. Használja a DISTINCT kulcsszót a SELECT záradékban. |
Ha például vevői különböző fiókirodákból származnak, és közülük többnek megegyezik a telefonszáma, de Ön mindegyik telefonszámot csak egyszer szeretné megjeleníteni, a következőhöz hasonló SELECT záradékot alkalmazhat:
|
Az azonosító megjelenésének módosítása, hogy könnyebben lehessen olvasni az Adatlap nézetben. A SELECT záradékban használja az AS operátort (műveletet megjelenítő vagy módosító kulcsszó) mezőaliasszal. A mezőalias egy név, amelyet az eredmények olvashatóbbá tétele érdekében rendel hozzá a mezőhöz. |
|
A FROM záradék testreszabása
A testreszabás célja |
Példa |
---|---|
Táblaalias, azaz másik név hozzárendelése a táblákhoz a SELECT utasításban. A táblaaliasokat akkor érdemes alkalmazni, ha a táblák nevei hosszúak, de még inkább akkor, ha a különböző táblákban egyező nevű mezők vannak. |
Ha két mezőből szeretné összegyűjteni az adatokat, és mindkét mező neve ID, de az egyik a tblCustomer nevű táblából, a másik a tblOrder nevű táblából származik:
Az AS operátorral táblaaliasokat határozhat meg a FROM záradékban:
Ezeket a táblaaliasokat ezután felhasználhatja a SELECT záradékban az alábbiak szerint:
|
Az illesztésekkel két adatforrásból származó rekordpárokat egyesíthet egyetlen eredményben, vagy megadhatja, hogy bármelyik táblából vegyen-e fel rekordokat, ha a kapcsolódó táblában nincs megfelelő rekord. A táblák összekapcsolása úgy, hogy a lekérdezés kombinálja a táblák elemeit, és kizárja az elemeket, ha a másik táblában nincs megfelelő rekord |
A FROM záradék a következőképpen nézhet ki:
|
Az illesztésekkel kapcsolatos tudnivalók
Az illesztéseknek két típusa létezik: belső és külső illesztés. A lekérdezésekben a belső illesztés gyakoribb. Ha belső illesztéssel futtat egy lekérdezést, az eredmény csak azokat az elemeket jeleníti meg, amelyekben közös érték található mindkét illesztett táblában.
A külső illesztések azt határozzák meg, hogy a lekérdezés figyelembe vegye-e az adatokat, ha nincsenek azonos értékek. A külső illesztések irányítottak, tehát megadható, hogy a lekérdezés az illesztésben megadott első tábla összes rekordját (bal oldali illesztés) vagy az illesztésben megadott második tábla összes rekordját (jobb oldali illesztés) tartalmazza-e. A külső illesztés az alábbi SQL-szintaxist tartalmazza:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2
Az illesztések lekérdezésekben való használatáról további információt a Táblák és lekérdezések összekapcsolása című témakörben talál.
A WHERE záradék testreszabása
A WHERE záradékba olyan feltételek foglalhatók, amelyekkel korlátozható a lekérdezés által visszaadott elemek száma. Ezek leírása és működése a lekérdezésfeltételek példáit bemutató témakörben található.
Az alapszintű WHERE záradék testreszabására példa a lekérdezés eredményeinek korlátozása; Tegyük fel, hogy meg szeretné keresni egy ügyfél telefonszámát, és csak a vezetéknevét tudja megjegyezni Bagel néven. Ebben a példában a vezetéknevek egy Vezetéknév mezőben vannak tárolva, így az SQL szintaxisa a következő:
WHERE [LastName]='Bagel'
A WHERE záradék használatával adatforrásokat is kombinálhat az egyező, de eltérő adattípusú oszlopokhoz. Ez a lehetőség azért hasznos, mert a táblák nem illeszthetők különböző adattípusú mezőkön keresztül. Ilyenkor a LIKE kulcsszóval az egyik mezőt a másik mezőre vonatkozó feltételként határozhatja meg. Ha például egy Assets (Eszközök) és Employees (Alkalmazottak) táblából származó adatokat szeretne használni, akkor csak akkor, ha az Eszközök tábla Eszköztípus mezőjében az eszköz típusa az Alkalmazottak tábla Mennyiség mezőjében a 3-at tartalmazza, a WHERE záradék így nézne ki:
WHERE field1 LIKE field2
Fontos: Ha a mező összesítő függvényben szerepel a WHERE záradékon belül, akkor nem határozhatók meg rá feltételek. Az összesített mezőkön a HAVING záradékot kell alkalmazni.
Testreszabás a UNION operátorral
A UNION operátort akkor kell alkalmazni, ha több hasonló választó lekérdezés eredményét összevontan szeretné megjeleníteni. Ha például az adatbázisnak van egy Termékek és egy Szolgáltatások táblája, és mindkettőnek három mezője: kizárólagos ajánlat, illetve termék vagy szolgáltatás, ár, valamint jótállás, illetve garancia. Ebben az esetben a Termékek tábla jótállás mezője és a Szolgáltatások tábla garancia mezője lényegében ugyanazt az információt tartalmazza. Ekkor a két tábla három mezőjét a következőképpen egyesítheti egy egyesítő lekérdezéssel:
SELECT name, price, warranty, exclusive_offer
FROM Products UNION ALL SELECT name, price, guarantee, exclusive_offer FROM Services;
A lekérdezés futtatásakor az egyes kapcsolódó mezőhalmazok egyetlen kimeneti mezőbe kerülnek. Ha az eredmények között a többször előforduló elemeket is meg szeretné jeleníteni, akkor használja az ALL operátort.
Megjegyzés: A két SELECT utasításban ugyanannyi kimeneti mezőnek kell lennie, ugyanabban a sorrendben, és a mezőpárok adattípusának meg kell egyeznie vagy egymással kompatibilisnek kell lennie. Egyesítő lekérdezésekben a Szám és a Szöveg adattípus kompatibilisnek számít.
Az egyesítő lekérdezésekről a Több lekérdezés eredményének együttes megjelenítése egyesítő lekérdezéssel című témakörben olvashat bővebben.