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
IDNEVEVFOLYAMOSZTALYATLAG
1Kis Béla10A4,5
2Kis Boglárka10B3,89
3Aranyos Aladár9A3,48
4Zsuppán Aranka10A5
5Neholovics Béla9A2,89
6Turi Zsófia10B4,29
7Gerő Imola10A5
8Barabás Imre9B4,11
9Kiss Lajos10B3,12
10Nagy Lajos10B3,40
  1. Listázzuk ki neveket, és az átlagokat!
    SELECT nev,atlag FROM tanulok______________________________________________
  2. Melyik évfolyamra jár Turi Zsófia?
    SELECT evfolyam FROM tanulok WHERE nev=”Turi Zsofia”__________________________
  3. Kik a 10.A tanulói?
    SELECT nev FROM tanulok WHERE evfolyam=10 AND osztaly=A______________________
  4. 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____________________
  5. Hány tanuló jár a 9. évfolyamra?
    SELECT COUNT(nev) FROM tanulok WHERE evfolyam=9______________________