SQL – Választó lekérdezések
Az SQL (Structured Query Language) egy olyan nyelv, aminek segítségével az adatbázisunkat tudjuk kezelni. Több „nyelvjárása” van, itt most a MySQL és a Microsoft ACCESS „tájszavait” ismertetjük.
Listázás adatbázisból
Akkor, ha adatokat szeretnénk kinyerni egy adatbázisból, akkor a SELECT parancsot hívjuk segítségül.
Általános használata:
SELECT mező1, mező2, … FROM tábla1, tábla2, … WHERE feltétel HAVING feltétel ORDER BY mezőnév [ASC, DESC]
A mező1, mező2, …: azokat a mezőneveket jelenti, amelyeket szeretnénk kilistázni. Legalább egyet kel írnunk. Ha minden mezőben levő adatot szeretnénk kilistázni, akkor a mezőnevek felsorolása helyett használhatjuk a *-t.
A mezőneveken használhatunk függvényeket, például, ha összesíteni szeretnénk.
A tábla1, tábla2, …: azokat a táblákat jelenti, amelyek szerepelni fognak a lekérdezésben. Csak annyi táblanevet soroljunk fel, amennyire feltétlenül szükség van!
WHERE feltétel: Ide írjuk a szűrési feltételeinket. Ne felejtsük el miden esetben közölni, hogy melyik mezőre vonatkozik a szűrés!
HAVING feltétel: A HAVING-et akkor használjuk, ha olyan mezőre szeretnénk feltételt adni, ami összesítésben szerepel. Például listázzuk ki azokat az évfolyamokat, ahol több, mint 4,5 az átlagok átlaga!
ORDER BY: Sorbarendezve a mező[k] szerint. A felsorolt mezőnevek hierarchiát jelentenek. Az ASC a növekvő , a DESC a csökkenő sorrendet jelenti. Alapértelmezett az ASC, ezért azt elhagyhatjuk.
Visszatérési érték: Amennyiben nem szeretnénk minden rekordot megjeleníteni, akkor ACCESS esetén a TOP, MySQL esetén a LIMIT parancsot alkalmazzuk. A TOP a SELECT után közvetlenül, a LIMIT a lekérdezés végén szerepel. Limit esetén a hanyadiktól, hányat paramétereket használhatjuk. A sorszámozás 0-val kezdődik.
Példa:
Adott egy tanulok nevű adattábla:
tanulok | ||||
ID | NEV | EVFOLYAM | OSZTALY | ATLAG |
---|---|---|---|---|
1 | Kis Béla | 10 | A | 4,5 |
2 | Kis Boglárka | 10 | B | 3,89 |
3 | Aranyos Aladár | 9 | A | 3,48 |
4 | Zsuppán Aranka | 10 | A | 5 |
5 | Neholovics Béla | 9 | A | 2,89 |
6 | Turi Zsófia | 10 | B | 4,29 |
7 | Gerő Imola | 10 | A | 5 |
8 | Barabás Imre | 9 | B | 4,11 |
9 | Kiss Lajos | 10 | B | 3,12 |
10 | Nagy Lajos | 10 | B | 3,40 |
- Listázzuk ki neveket, és az átlagokat!
SELECT nev,atlag FROM tanulok______________________________________________ - Melyik évfolyamra jár Turi Zsófia?
SELECT evfolyam FROM tanulok WHERE nev=”Turi Zsofia”__________________________ - Kik a 10.A tanulói?
SELECT nev FROM tanulok WHERE evfolyam=10 AND osztaly=A______________________ - Kinek az átlaga a legjobb?
ACCESS: SELECT TOP 1 nev FROM tanulok ORDER BY atlag DESC______________________
MySQL: SELECT nev FROM tanulok ORDER BY atlag DESC LIMIT 0,1____________________ - Hány tanuló jár a 9. évfolyamra?
SELECT COUNT(nev) FROM tanulok WHERE evfolyam=9______________________