MySQL mindenkinek 8

A SELECT-tel már ismerkedtünk az 5. részben, de van jónéhány egyéb parancs és kiegészítés ami gyakran használatos a SELECT utasításokban. Ezek közül küldjük most a boncasztalra azt a párat amit garantáltan minden projektben használni fogunk.

COUNT

Sokszor van szükségünk arra, hogy megszámoljuk, hogy hány elem, vagy hány bizonyos feltételeknek megfelelő elem szerepel egy adattáblában vagy adatkapcsolatban. Mondjuk ha kíváncsiak vagyunk rá, hány fiú tanuló van az iskolában akkor azt így kapjuk meg.

SELECT COUNT(id)
	FROM diakok
	WHERE nem = 0

Ha mondjuk pedig arra a kérdésre keressük a választ, hogy hány lány jár az 1/B-be, akkor a következő parancsot kell kiadnunk.

SELECT COUNT(diakok.id)
	FROM diakok, osztalyok, diak_osztaly
	WHERE osztalyok.osztaly = '1/B'
	AND osztalyok.id = diak_osztaly.osztalyok_id
	AND diakok.id = diak_osztaly.diakok_id
	AND diakok.nem = 1

MAX, MIN

Ki az utolsó az iskola névsorában?

SELECT MAX(diak)
	FROM diakok

A MIN, MAX függvények főleg numerikus adatok kikeresésére szolgálnak, de amint itt a példában látni lehet a sztringekkel is vígan elboldogulnak.

LIMIT

Előfordul, hogy nincs szükségünk az összes eredményre, csak bizonyos számúra, például lapozásnál, stb. A LIMIT paranccsal adhatjuk meg, hogy az eredményből melyik sorok jelenjenek meg.

 SELECT *
	FROM `diakok`
	LIMIT 30 , 30 

Ez a parancs a atlálatok közül a 30-adiktól kezdődően a következő 30-at jeleníti meg.

ORDER BY

Ezzel a paranccsal adhatjuk meg, hogy a találatok milyen sorrendben legyenek megjelenítve. Például ha az iskolába járó diákok névsorára vagyunk kíváncsiak ABC sorrendben akkor a következő parancs fogja megadni nekünk.

SELECT *
	FROM `diakok`
	ORDER BY diak

A DESC paraméterrel csökkenő listát kapunk.

SELECT *
	FROM `diakok`
	ORDER BY diak DESC

GROUP BY

A GROUP BY utasítással alkothatunk csoportokat a lekérdezésben. Ha például arra vagyunk kíváncsiak hogy hány fiú és hány lány jár az 1/B-be, akkor vagy külön-külön lekérdezzük a fentiek szerint, vagy egy GROUP BY utasítással egy lekérdezéssel is megkaphatjuk az információt.

SELECT nem, COUNT(diakok.id)
	FROM diakok, osztalyok, diak_osztaly
	WHERE osztalyok.osztaly = '1/B'
	AND osztalyok.id = diak_osztaly.osztalyok_id
	AND diakok.id = diak_osztaly.diakok_id
	GROUP BY diakok.nem

Ilyen esetekben persze a COUNT mellé érdemes egy másik mezőt is betenni a lekérdezésbe (mint itt a “nem”) mivel e nélkül nem igazán tudjuk eldönteni, hogy melyik eredmény meliykhez tartozik.

LIKE

A LIKE segítségével sztringek részleteiben kereshetünk egyezőségeket. Általában a sztringek feldolgozása sehol sem a leggyorsabb, tehát a LIKE hazsnálata előtt mindenféleképpen érdemes elgondolkozni, hoyg nem lehet-e máshogyan megoldani a problémát. A LIKE túlzott használata teljesítmény problémák felvetődéséhez vezethet.

SELECT *
	FROM diakok
	WHERE diak LIKE '%László%'

Ez a lekérdezés azokat a diákokat litázza ki akiknek a nevében szerepel valahol az, hogy László.

A SELECT-nek van még egypár édi felhasználási lehetősége, de ezekről majd lésőbb beszélünk.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.