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
  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______________________