Adatok lekérdezése
Az SQL lekérdezések bemutatása
- Főoldal
/
- Kurzusok
/
- SQL
/
- SQL kezdőknek
Adatok lekérdezése
Az adatbázisból az adatok kiolvasását adatok lekérdezésének hívjuk, mivel egy parancsot adunk amelyre kapunk egy listát a visszaérkező adatokkal. Ezt a parancsot hívjuk SELECT-nek.
A SELECT parancs felépítése a következő formában néz ki:
// Adatok lekérdezése esetén
SELECT `oszlop1`, `oszlop2`
FROM `táblázat neve`
WHERE 'szűrési feltételek';
Ez a legegyszerűbb változat, ahol az oszlopokat felsorolhatjuk egymás után vesszővel elválasztva, bármennyit. Amennyiben az összes oszlop adatait szeretnénk lekérni, nyugodtan írhatunk *-t az oszlopok nevei helyett:
// Adatok lekérdezése esetén
SELECT *
FROM `táblázat neve`
WHERE 'szűrési feltételek';
Ehhez a parancshoz még hozza tartozik három lista módosító parancs is: GROUP BY, ORDER BY, LIMIT. Mindeniket lehet használni a többi nélkül is.
1. A GROUP BY parancs:
Arra szolgál, hogy a visszatérítendő adatokat csoportosítsa valamely oszlop(ok) szerint (akár több szerint is lehetséges).
// Növekvő sorbarendezés ASCENDING
SELECT *
FROM `táblázat neve`
WHERE 'szűrési feltételek'
GROUP BY 'oszlop1';
Képzeljünk el egy olyan esetet amikor egy személy kivesz a könyvtárból egyszerre több könyvet, majd a lekérdezésnél nekünk minden személy kellene aki vett ki könyvet, de mivel több könyvet vett ki valaki, ezért a neve többszőr szerepelne a listában. Ilyen esetben a GROUP BY segítségével lehet csoportosítani a nevek alapján, így csak egyszer kapnánk vissza a nevet.
Fontos tudni, hogy csak akkor tudjuk csoportosítani az adatokat, ha az összes lekérdezett oszlop adatai (az adott személynél) egyeznek.
2. Az ORDER BY parancs:
Arra szolgál, hogy a visszatérítendő adatokat sorbarendezze valamely oszlop(ok) szerint (akár több szerint is lehetséges), növekvő, csökkenő vagy véletlenszerű sorrendbe.
// Növekvő sorbarendezés ASCENDING
SELECT * FROM `táblázat neve` WHERE 'szűrési feltételek' ORDER BY 'oszlop1' ASC;
// Csökkenő sorbarendezés DESCENDING
SELECT * FROM `táblázat neve` WHERE 'szűrési feltételek' ORDER BY 'oszlop1' DESC;
// Véletlenszerű sorbarendezés
SELECT * FROM `táblázat neve` WHERE 'szűrési feltételek' ORDER BY 'oszlop1' RAND();
A véletlenszerű sorbarendezésnél a RAND() függvényt kell meghívni, amely generál egy adott sorrendet.
Ha szeretnénk több oszlop szerint is sorbarendezni, csak vesszővel egymás után fel kell sorolni az oszlopokat:
// Növekvő sorbarendezés ASCENDING
SELECT *
FROM `táblázat neve`
WHERE 'szűrési feltételek'
ORDER BY 'oszlop1' ASC, 'oszlop2' DESC, 'oszlop3' RAND();
3. A LIMIT parancs:
A LIMIT parancsot már ismerjük, arra szolgál, hogy az adatokat limitáljuk, hogy maximum hány sor adatot térítsen vissza. Két értéket lehet megadni neki, hogy hány értéket adjon vissza, és hogy hányadik elemtől.
// Egyszerűen megszabjuk a sorok maximum számát
SELECT * FROM `táblázat neve` WHERE 'szűrési feltételek' LIMIT 10;
// Amikor azt is megszabjuk, hányadik elemtől adja vissza a sorokat
SELECT * FROM `táblázat neve` WHERE 'szűrési feltételek' LIMIT 20, 10;
A második példában szintén 10 elemet kérünk le, de az első 20 elemet kihagyjuk, így csak a 20. elemtől kapjuk vissza az adatokat.
Ha ebből a három parancsból egyszerre többet is szeretnénk használni, akkor ebben a sorrendben kell megadnunk őket, ahogy tárgyaltuk az előbb. GROUP BY, ORDER BY, LIMIT
// Adatok lekérdezése esetén
SELECT *
FROM `táblázat neve`
WHERE 'szűrési feltételek'
GROUP BY 'oszlop1'
ORDER BY 'oszlop1'
LIMIT 10;
Célszerű az SQL parancsokat úgy megszerkeszteni, hogy a fontosabb parancsokat új sorban kezdjük, ezáltal sokkal átláhatóbbak lesznek, ahogy a fenti példában is írtuk.
A kiválasztott oszlopok meghatározásánál nyugodtan végezhetünk műveleteket az oszlopokkal, pl. összefűzhetünk két vagy több oszlopot és úgy kérjük le, vagy kicserélhetünk benne karaktert, vagy akár feltételt is írhatunk, hogy annak függvényében kérjünk le adatot egyik vagy másik oszlopból.
1. Oszlopok összefűzése
Parancs: ||
Ebben az esetben eredményként az oszlopok értékeit fűzzük össze, nem az oszlopok neveit:
// Oszlopok összefűzése
SELECT 'oszlop1' || 'oszlop2'
2. Műveletek öszlopokkal
Ebben az esetben valamilyen műveletet hajtunk végre az oszlop értékén mielőtt megkapnánk azt eredményként pl. kicserélünk egy szöveget egy másikra:
// Oszlopok értékein művelet végrehajtása
SELECT REPLACE( 'oszlop neve', 'cserélendő szöveg', 'csere szöveg' )
Az oszlop neve oszlop értékeiben kicseréljük a cserélendő szöveg-t a csere szöveg-re.
Ilyen végrehajtható művelet rengeteg létezik: kisbetűsítés, nagybetűsítés, szöveg csere, dátum formázás, stb.
3. Oszlopok átnevezése
Parancs: AS
Ebben az esetben a lekérdezett oszlopot más néven szeretnénk megkapni:
// Oszlopok átnevezése
SELECT 'oszlop neve' AS 'új név'
3. Feltételes lekérdezés
Parancs: CASE
Ez egy olyan eset, amikor attól függően szeretnénk egyik vagy másik oszlopot lekérdezni, hogy egy felétel teljesül vagy sem.
A CASE parancs felépítése:
CASE
WHEN feltétel1 THEN 'oszlop neve'
WHEN feltétel2 THEN 'oszlop neve'
WHEN feltétel3 THEN 'oszlop neve'
...
ELSE 'oszlop neve'
END
Tehát: a WHEN segítségével mondhatjuk meg, hogy Amikor ez a feltétel teljesül akkor az érték legyen a THEN után szereplő oszlop értéke.
Ha nem teljesül az első WHEN, akkor nézi a következőt, majd a következőt és így tovább. Ha egyetlen WHEN feltétele sem teljesül, akkor ugrik az ELSE (másképp) ágra, és annak az oszlopnak az értékét adja vissza.
A feltételes lekérdezés esetében is nyugodtan adhatunk egy saját nevet az oszlopnak, hogy könnyen férjünk majd hozza az adatokhoz:
CASE
WHEN feltétel1 THEN 'oszlop neve'
WHEN feltétel2 THEN 'oszlop neve'
WHEN feltétel3 THEN 'oszlop neve'
...
ELSE 'oszlop neve'
END AS 'új név'
A feltételek olyanok lehetnek, mint amiket a Szűrési feltételek leckében is tárgyaltunk.
- Előző lecke: Szűrési feltételek
- Következő lecke: Adatok lekérdezése több táblából
Részletek
- Megtekintve: 221
- Haszontalannak jelölve: 0
- Hasznosnak jelölve: 0
- Értékelés: