Gyakorlati alapok III.
SQL (adatbázis)
SQL - karakteres 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
További függvények:
Kisbetűket nagybetűkké alakít, a nagybetűket változatlanul hagyja. Például listázzuk kisbetűkkel az alkalmazottak nevét és beosztásukat:
SELECT LOWER(alk_nev) AS alkalmazott, LOWER(beosztas) AS beosztasa FROM alkalmazott
Végeredmény:
Nagybetűket kisbetűkké alakít, a kisbetűket változatlanul hagyja.
A Javához hasonlóan ez a függvény visszaadja a paraméterben megadott String hosszát. Például listázzuk ki, hogy az autócsoportnevek hány karakterből állnak:
SELECT auto_csop_nev, LENGTH(auto_csop_nev) AS Hossz FROM auto_csop
Végeredmény:
A Javához hasonlóan ez a függvény a paraméterben megadott hosszban kivág egy alsztringet a megadott sztringből. Például listázzuk ki, hogy az alkalmazottak neveinek első 3 karakterét:
SELECT alk_nev, SUBSTR(alk_nev, 1, 3) AS KivagottString FROM alkalmazott
Végeredmény:
Ez a függvény a megadott rekord mellett jobbra a megadott karakterrel, a megadott hosszban tölti ki az eredeti sztringet (right padding). Például listázzuk az autótípusokat, de úgy, hogy 20 karakter hosszban a maradék helyet * karakterrel töltjük fel:
SELECT RPAD(tipus_nev,20,'*') AS tipus_nev_Feltoltve FROM tipusok
Végeredmény:
Ez a függvény a megadott rekord mellett balra a megadott karakterrel, a megadott hosszban tölti ki az eredeti sztringet (left padding). Például listázzuk az autótípusokat, de úgy, hogy 20 karakter hosszban a maradék helyet * karakterrel töltjük fel:
SELECT LPAD(tipus_nev,20,'*') AS tipus_nev_Feltoltve FROM tipusok
Végeredmény:
Ez a függvény a megadott sztring mellett jobbra lévő szóköz-karaktereket vágja le (left trim):
SELECT LTRIM('Sok szokoz (volt) a jobb oldalon. ')
Végeredmény:
Sok szokoz (volt) a jobb oldalon.
(Ha a fejezetből másoljuk be az SQL-utasítást, akkor a phpMyAdmin nem mindig szereti az onnan másolt szóköz-karaktereket és pirossal aláhúzott hibákat fog jelezni. Ez esetben töröljük a szóköz-karaktereket és közvetlenül billentyűzetből javítsuk ki.)
Ez a függvény a megadott sztring mellett balra lévő szóköz-karaktereket vágja le (left trim):
SELECT LTRIM(' Sok szokoz (volt) a bal oldalon.')
Végeredmény:
Sok szokoz (volt) a bal oldalon.
(Ha a fejezetből másoljuk be az SQL-utasítást, akkor a phpMyAdmin nem mindig szereti az onnan másolt szóköz-karaktereket és pirossal aláhúzott hibákat fog jelezni. Ez esetben töröljük a szóköz-karaktereket és közvetlenül billentyűzetből javítsuk ki.)
Feladatok
1 - Irassa ki az alkalmazottak nevét (alkalmazott nevű
eredményoszlopba) és beosztásukat (beosztasa nevű
eredményoszlopba) csupa kis betűvel!
2 - Irassa ki az AUTOK táblájának minden sorából a típusneveket és a rendszámokat úgy, hogy a típusneveket kisbetűssé konvertálja!
3 - Készítsen listát az összes készpénzzel fizető ügyfélről! Az ügyfél nevét, számát és a fizetési módját a következő szöveg után írja ki: 'ÜGYFÉL:'!
4 - Irassa ki az ügyfelek számát
és nevét kisbetűvel, valamint megbízottját! Ha megbízott nincs kitöltve,
helyén 10 db * szerepeljen!
5 - Alkalmazza a nagybetűssé átalakító függvényt a minden karakter
nagybetuvel karaktersorozatra!
6 - Irassa ki az alkalmazottak beosztását kisbetűvel és azt, hogy az alkalmazott neve hány karakterből áll!
7 - Irassa ki a beosztásokat és a beosztások 4-6. karakterét kisbetűssé alakítva!
8 - Irassa ki az autók típusnevét jobbról a * karakterekkel 20 karakter hosszúra kiegészítve!
9 - Irassa ki az autók típusnevét balról a '-' karakterekkel 20 karakter hosszúra kiegészítve!
10 -
Balról vágja le a felesleges szóköz-karaktereket a ' KAKAS' karaktersorozatról!
11 - Irassa ki az alkalmazottak beosztását jobbról a * karakterekkel 25 karakter hosszúra kiegészítve!
12 - Irassa ki az alkalmazottak beosztását balról a '-' karakterekkel 25 karakter hosszúra kiegészítve!