Gyakorlati alapok III.
SQL (adatbázis)
SQL - egyéb függvények
Folytatjuk az előző fejezetekben bemutatott SQL-függvények felhasználását egyre bonyolultabb lekérdezések és/vagy több tábla összevonása formájában. Néhány új SQL-függvény is fel fog merülni, ezek az előfordulásuk előtti bekezdésben kerülnek ismertetésre. Továbbra is kiindulópontunk az auto adatbázis, amely egy teljes, átfogó adatszerkezet egy autókereskedés és szervíz komplex, adatbázisos modellezésére.
Az auto adatbázis a következő további komponenesekből áll, ezen komponenseket táblák és a bennük definiált attribútumok (oszlopok) reprezentálják:
-
auto_csop tábla
-
auto_csop_nev
-
km_dij
-
napi_dij
-
-
tipusok tábla
-
tipus_nev
-
auto_csop_nev
-
leiras
-
szerviz_km
-
-
autok tábla
-
rendszam
-
tipus_nev
-
auto_csop_nev
-
vasarlas_datuma
-
ar
-
futott_km
-
ut_szerviz
-
allapot
-
reszleg_kod
-
alk_kod
-
-
rendeles tábla
-
ugyfel_szam
-
rendeles_datum
-
rendelo_szemely
-
kolcson_kezdete
-
napok
-
rendszam
-
tipus_nev
-
km_kezdet
-
km_veg
-
kolcson_dij
-
fizetes
-
-
ugyfelek tábla
-
ugyfel_szam
-
ugyfel_nev
-
cim
-
varos
-
orszag
-
iranyito_szam
-
megbizott
-
fizetesi_mod
-
-
reszleg tábla
-
reszleg_kod
-
reszleg_nev
-
reszleg_cim
-
-
alkalmazott tábla
-
alk_kod
-
alk_nev
-
beosztas
-
belepes
-
fizetes
-
premium
-
reszleg_kod
-
Erősen ajánlom, hogy az alábbi, néha rendkívül bonyolult SQL-lekérdezések előtt nagyon alaposan tanulmányozzuk át az auto adatbázis összes tábláját és rekordjait. Az eredményes SQL-lekérdezésekhez meg kell értenünk az autókereskedés összes modellezett munkakörülményét!
Függvény-előzmények:
-
Alapfüggvények és egyéb nyelvi elemek - CREATE, DROP, DELETE, INSERT, UPDATE, SELECT, COUNT, AVG, SUM, MAX, MIN, BETWEEN, IN, NOT IN, LIKE, NOT LIKE, ORDER BY (ASC, DESC), IS NULL, IS NOT NULL, operátorok, helyettesítő karakterek, egyéb szintaktikai elemek
-
karakteres függvények LOWER, UPPER, LENGTH, SUBSTR, RPAD, LPAD, RTRIM, LTRIM
-
numerikus függvények - ABS, ROUND, TRUNCATE, SQRT, POW, POWER, CEIL, CEILING, FLOOR, MOD, SIGN
-
dátum függvények - LAST_DAY, SYSDATE, DATE_ADD, DATE_FORMAT, PERIOD_DIFF, DAYNAME, STR_TO_DATE
-
Csoport függvények - GROUP BY, HAVING (COUNT, AVG, SUM, MAX, MIN csoport függvényekkel kapcsolatban lásd az Alapfüggvények és egyéb nyelvi elemek című fejezetben)
További függvények:
A függvény visszaadja a paraméterként beadott értékek legnagyobbját. Például:
SELECT GREATEST(2, 12, 5, 42, 96)
Végeredmény:
96
A függvény visszaadja a paraméterként beadott értékek legkisebbjét. Például:
SELECT LEAST(2, 12, 5, 42, 96)
Végeredmény:
2
Ez a komplex függvény az általános if-else elágazás mySQL-megfelelője. Rendezett szintaktikai szerkezete is hozzá hasonló:
CASE
WHEN 1. feltétel THEN 1. eredmény
WHEN 2. feltétel THEN 2. eredmény
WHEN N. feltétel THEN N. eredmény
ELSE eredmény
END
Például keressük ki az AUTOK táblából a NORMAL jelzővel illetett gépjárműveket. Kapjanak ezen autók "MEGÉRI!", a többiek pedig "NEM ÉRI MEG!" minősítést:
SELECT tipus_nev, auto_csop_nev,
CASE
WHEN auto_csop_nev = 'NORMAL' THEN 'MEGERI!'
ELSE 'NEM ERI MEG!'
END FROM autok
Végeredmény:
Feladatok
1 - Irassa ki minden dolgozónál a fizetést, a prémiumot és a kettő közül a nagyobb értéket!
2 - Irassa ki az alkalmazottak beosztását, illetve annak minősítését a következőképpen: igazgató = FŐNÖK, telephelyvezető = KISFŐNÖK, egyéb beosztásúak = BEOSZTOTT!
3 - Irassa ki a telephelyek adatai mellé, hogy FŐVÁROSI, illetve azt, hogy VIDÉKI, ha a cím mezőben BUDAPEST, illetve attól különböző város szerepel!
4 - Irassa ki minden dolgozónál a fizetést, a prémiumot és a kettő közül a kisebb értéket!