Access SQL: alapfogalmak, szókészlet és szintaxis
Applies ToMicrosoft 365-höz készült Access Access 2024 Access 2021 Access 2019 Access 2016

Egy adatbázis adatait a Structured Query Language, azaz az SQL nyelv segítségével kérheti le. Az SQL egy olyan programnyelv, amely nagyon hasonlít az angol nyelvhez, azonban ezt az adatbázis-kezelő programok is megértik. Minden futtatott lekérdezés a háttérben SQL-t használ.

Az SQL megértésével sikeresebb lekérdezéseket hozhat létre, emellett egyszerűbben kijavíthatja azokat, amelyek nem a kívánt eredményeket adják.

Ez a témakör az Access SQL használatával foglalkozó témakörsorozatunk része. Ez a cikk az SQL adatkijelöléshez használatos alapvető funkcióit ismerteti, valamint példákkal illusztrálja az SQL szintaxisát.

Tartalom

Az SQL nyelv bemutatása

Az SQL egy programnyelv, amellyel műveleteket végezhet tényhalmazokkal és a közöttük fennálló kapcsolatokkal. A relációsadatbázis-kezelő programok, például az Access, az adatok kezelésére SQL nyelvet használnak. Számos programnyelvvel ellentétben az SQL könnyen olvasható és megérthető még a kezdő felhasználók számára is. Más programnyelvekhez hasonlóan az SQL is nemzetközi szabvány, amelyet az ISO és az ANSI szabványozó testület is elismer.

Az SQL segítségével adathalmazokat írhat le, amelyekkel kérdéseket válaszolhat meg. Az SQL nyelv alkalmazásakor helyes szintaxist kell használni. A szintaxis az a szabálykészlet, amely biztosítja a nyelv elemeinek helyes összetételét. Az SQL szabályai az angol nyelv szabályain alapulnak, és a Visual Basic for Applications (VBA) nyelv számos szintaktikai elemét is tartalmazzák.

Az alábbi például egy egyszerű SQL-utasítás, amely a partnerek közül listába rendezi azokat, akiknek Mary a keresztneve:

SELECT Last_NameFROM ContactsWHERE First_Name = 'Mary';

Megjegyzés: Az SQL nemcsak adatok kezelésére használható, hanem adatbázis-objektumok, például táblák létrehozására és táblatervek módosítására is. Az SQL nyelvnek azt a részét, amelyet adatbázis-objektumok létrehozására és módosítására használnak, adatdefiníciós nyelvnek (DDL) nevezik. Ebben a témakörben nem lesz szó a DDL nyelvről. További információ: Táblák vagy indexek létrehozása, illetve módosítása adatdefiníciós lekérdezéssel.

SELECT utasítások

Ha egy adatkészletet szeretne leírni az SQL nyelv segítségével, ehhez SELECT utasítást kell írnia. Egy SELECT utasítás az adatbázisból kinyerni kívánt adathalmaz teljes leírását tartalmazza. Ez a következőket foglalja magában:

  • Mely táblák tartalmazzák az adatokat.

  • Hogyan kapcsolódnak egymáshoz a különböző forrásokból származó adatok

  • Milyen mezők vagy számítások eredményeképpen jönnek létre az adatok.

  • Feltételek, melyek alapján az adatok bekerülnek az eredmények közé.

  • Szükséges-e az eredményeket rendezni, és ha igen, hogyan.

SQL-záradékok

A mondatokat alkotó mellékmondatokhoz hasonlóan az SQL-utasításokban is vannak záradékok. Minden egyes záradék egy bizonyos funkciót hajt végre az SQL-utasítás számára. Bizonyos záradékokat kötelező megadni a SELECT utasításban. Az alábbi táblázat a leggyakoribb SQL-záradékokat tartalmazza.

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

SQL-kifejezések

A beszédrészekhez hasonlóan mindegyik SQL-záradék kifejezésekből áll. Az alábbi táblázat az SQL-kifejezések típusait mutatja be.

SQL-kifejezés

Megfelelő szófaj a beszédben

Leírás

Példa

identifier

főnév

Az adatbázis-objektum azonosítására szolgáló név, például egy mező neve.

Vásárlók.[Telefonszám]

operator

ige vagy határozószó

Műveletet jelző vagy azt módosító kulcsszó.

AS

constant

főnév

Nem változó érték, például egy szám, vagy a NULL.

42

expression

melléknév

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]

Vissza a lap tetejére

Alapvető SQL-záradékok: SELECT, FROM és WHERE

Egy SQL-utasítás az alábbi általános formában írható fel:

SELECT field_1FROM table_1WHERE criterion_1;

Megjegyzések: 

  • Az Access nem veszi figyelembe az SQL-utasításban elhelyezett sortöréseket. Érdemes azonban minden záradékot új sorban kezdeni az utasítások áttekinthetősége érdekében.

  • Minden SELECT utasítás végén pontosvessző (;) áll. A pontosvesszőt elhelyezheti az utolsó záradék végén vagy új sorban az SQL-utasítás végén.

Egy példa az Access programból

Az alábbi ábra bemutatja, hogy egy egyszerű kiválasztásos lekérdezés hogyan jelenik meg az Access programban:

SQL-objektumlap SELECT utasítással

1. SELECT záradék

2. FROM záradék

3. WHERE záradék

Ez az SQL-utasítás a következőt jelenti: „Válassza ki azokat adatokat, amelyek a Partnerek táblában az E-mail-cím és a Cég nevű mezőben vannak, különösképp azokat a rekordokat, amelyekben a Város mező értéke Seattle.”

Tekintse át a példát, és az egyes záradékokon keresztül figyelje meg, hogyan használható az SQL szintaxisa.

A SELECT záradék

SELECT [E-mail Address], Company

Ez a SELECT záradék. Egy műveletből áll (SELECT), melyet két azonosító ([E-mail-cím] és Cég) követ.

Ha egy azonosítóban szóközök vagy más speciális karakterek szerepelnek (például az E-mail cím azonosítóban), szögletes zárójelbe kell tenni.

A SELECT záradékban nem kell feltétlenül megadni, hogy a mezők melyik táblában vannak, és nem lehet meghatározni, hogy az adatokat milyen feltételek szerint választja ki.

A SELECT záradék mindig a FROM záradék előtt áll a SELECT utasításban.

A FROM záradék

FROM Contacts

Ez a FROM záradék. Egy műveletből áll (FROM), melyet egy azonosító (Partnerek) követ.

A FROM záradék nem sorolja fel a kiválasztandó mezőket.

A WHERE záradék

WHERE City="Seattle"

Ez a WHERE záradék. Egy műveletből áll (WHERE), melyet egy kifejezés követ (City="Seattle").

Megjegyzés: A SELECT és a FROM záradékoktól eltérően a WHERE záradék a SELECT utasításnak nem kötelező része.

Az SQL által felkínált műveletek legnagyobb része elvégezhető a SELECT, FROM és WHERE záradék alkalmazásával. E záradékok használatáról további információt az alábbi cikkekben találhat:

Vissza a lap tetejére

Az eredmények rendezése: ORDER BY

A Microsoft Excelhez hasonlóan az Access lehetővé teszi a lekérdezési eredmények adatlapon történő rendezését. Azt is megadhatja a lekérdezésben, hogy hogyan szeretné rendezni az eredményeket a lekérdezés futtatásakor egy ORDER BY záradékkal. Order BY záradék használata esetén ez az SQL-utasítás utolsó záradéka.

Az ORDER BY záradék tartalmazza a rendezés alapjául szolgáló mezők listáját, mégpedig ugyanabban a sorrendben, amelyben a rendezési műveleteket alkalmazni szeretné.

Tegyük fel például, hogy az eredményeket először a Cég mező értékei szerint csökkenő sorrendbe szeretné rendezni, majd – ha ugyanazon Cég értékeken belül több érték is található – az E-mail cím mezőben szereplő értékek szerint növekvő sorrendbe. Ebben az esetben az ORDER BY záradék a következőképpen néz ki:

ORDER BY Company DESC, [E-mail Address]

Megjegyzés: Alapértelmezés szerint az Access az értékeket növekvő sorrendbe rendezi (A–Z, kisebbtől a nagyobb felé). Ha inkább csökkenő sorrendbe rendezné az elemeket, használja a DESC kulcsszót.

Az ORDER BY záradékról további információt Az ORDER BY záradék című témakörben talál.

Vissza a lap tetejére

Összesített adatok használata: GROUP BY és HAVING

Előfordulhat, hogy összesített adatokat szeretne alkalmazni: ilyen például a havi teljes forgalom vagy a készlet legdrágább árucikke. Ehhez a SELECT záradékban egy összesítő függvény kell alkalmazni a megfelelő mezőn. Ha például azt szeretné, hogy a lekérdezés megmutassa az egyes cégekhez felsorolt e-mail-címek számát, a SELECT záradék a következőképpen néz ki:

SELECT COUNT([E-mail Address]), Company

Az, hogy milyen összesítő függvényeket alkalmazhat, attól függ, hogy a felhasználandó mezőben vagy kifejezésben milyen adattípusok szerepelnek. A rendelkezésre álló összesítő függvényekkel kapcsolatban további információt Az SQL összesítő függvényei című cikkben találhat.

Az összesítő függvényekből kihagyott mezők megadása: a GROUP BY záradék

Ha összesítő függvényeket alkalmaz, általában létre kell hoznia a GROUP BY záradékot is. A GROUP BY felsorolja mindazokat a mezőket, amelyekre nem alkalmazta az összesítő függvényt. Ha az összesítő függvényt az adott lekérdezésben szereplő összes mezőre alkalmazza, nincs szükség a GROUP BY záradékra.

A GROUP BY záradék közvetlenül a WHERE záradékot követi, vagy ha ilyen nincs, akkor a FROM záradékot. A GROUP BY záradék annak megfelelően sorolja fel a mezőket, ahogyan a SELECT záradékban azt megadta.

Az előző példát folytatva, ha a SELECT záradékban összesítő függvényt alkalmaz az [E-mail-cím] mezőre, de a Cég mezőre nem, a GROUP BY záradék a következőképpen alakul:

GROUP BY Company

A GROUP BY záradékkal kapcsolatban további információt A GROUP BY záradék című témakörben talál.

Az összegző értékek korlátozása csoportos feltételek használatával: a HAVING záradék

Ha az eredményeket bizonyos feltételek szerint szeretné megjeleníteni, de az adott mezőt, amelyre a feltételek vonatkoznak, egy összesítő függvényben használja, a WHERE záradék nem használható. Ehelyett a HAVING záradékot kell alkalmazni. A HAVING záradék funkciója hasonlít a WHERE záradékhoz, de ez összesített adatok esetében használható.

Tegyük fel például, hogy az AVG függvényt alkalmazza (átlagértéket számít) a SELECT záradékban megadott első mezőn:

SELECT COUNT([E-mail Address]), Company

Ha a lekérdezés eredményeit a COUNT függvény értékeinek alapján szeretné korlátozni, a WHERE záradékban nem adhat meg feltételt az adott mezőre vonatkozóan. A feltételeket ehelyett a HAVING záradékban kell megadni. Ha például azt szeretné, hogy a lekérdezés csak olyan sorokat adjon vissza, amelyeknél egy céghez több e-mail-cím is társítható, a HAVING záradék a következőképpen néz ki:

HAVING COUNT([E-mail Address])>1

Megjegyzés: Egy lekérdezésben egyaránt szerepelhet WHERE záradék és HAVING záradék – az összesítő függvényekben nem használt mezőkre vonatkozó feltételek a WHERE záradékban vannak, a többi mezőre vonatkozó feltételek pedig a HAVING záradékban szerepelnek.

A HAVING záradékról további információt A HAVING záradék című témakörben talál.

Vissza a lap tetejére

A lekérdezések eredményeinek összefűzése: UNION

Ha egyszerre szeretné áttekinteni az összes adatot, amelyet több hasonló, választó lekérdezés adott vissza, akkor használja a UNION műveletet.

A UNION művelet több SELECT utasítást egyesít. Az egyesítendő SELECT utasításoknak ugyanannyi kimeneti mezővel, ugyanolyan sorrenddel és ugyanolyan vagy kompatibilis adattípussal kell rendelkezniük. A lekérdezés futtatásakor az egyes kapcsolódó mezőhalmazok adatai egyetlen kimeneti mezőbe kerülnek, ezért a lekérdezés eredménye mindig ugyanannyi mezőt tartalmaz, mint az egyes SELECT utasításoké.

Megjegyzés: Egyesítő lekérdezések esetében a Szám és a Szöveg adattípus kompatibilis egymással.

A UNION művelet alkalmazásakor azt is megadhatja, hogy a lekérdezési eredmények között megjelenjenek-e az ismétlődő sorok (ha a lekérdezés ilyen eredményt adott). Ehhez használja az ALL kulcsszót.

Az egyesítő lekérdezések SQL-alapszintaxisa a következő (két SELECT utasítás egyesítése):

SELECT field_1FROM table_1UNION [ALL]SELECT field_aFROM table_a;

Tegyük fel, hogy van egy Termékek és egy Szolgáltatások nevű táblája. Mindkét tábla rendelkezik olyan mezőkkel, amelyek a termék vagy szolgáltatás nevét, árát, jótállását, garanciális lehetőségeit, illetve a termék vagy szolgáltatás kizárólagos értékesítési állapotát tartalmazzák. Bár a Termékek tábla jótállási adatokat, míg a Szolgáltatások tábla garanciális adatokat tartalmaz, a lényeg ugyanaz (rendelkezik-e az adott termék vagy szolgáltatás minőségi szavatossággal). A két tábla négy mezőjének egyesítéséhez használjon az alábbihoz hasonló egyesítő lekérdezéseket:

SELECT name, price, warranty_available, exclusive_offerFROM ProductsUNION ALLSELECT name, price, guarantee_available, exclusive_offerFROM Services;

A SELECT utasítások egyesítéséről és a UNION művelet használatáról további tudnivalókat a Több választó lekérdezés eredményének egyesítése egyesítő lekérdezéssel című cikkben találhat.

Vissza a lap tetejére

További segítségre van szüksége?

További lehetőségeket szeretne?

Fedezze fel az előfizetés előnyeit, böngésszen az oktatóanyagok között, ismerje meg, hogyan teheti biztonságossá eszközét, és így tovább.

A közösségek segítségével kérdéseket tehet fel és válaszolhat meg, visszajelzést adhat, és részletes ismeretekkel rendelkező szakértőktől hallhat.