2.GYAKORLAT (ADATBÁZISOK)
Beadandó feladatok beküldése a laborgépekről (zh mappa) -->> gyak.követelm.html
Mi volt az előző gyakorlaton? HF: Válasszon
ki egy saját témát, írja le röviden a témát!
A mai gyakorlaton az egyedhalmazok közül az egyiket kiválasztva hozza azt létre,
töltse fel adatsorokkal, és az egy
táblás lekérdezéseket erre a
táblára próbálja ki!
ORACLE
ADATBÁZIS szerverek elérése -->> adatbazis_eleres.html
Példa-táblák létrehozására a szkriptek -->> adatbazis_scriptek.html
1.rész: SQL feladatsor a 2.gyakorlatra: Egy tábla lekérdezése
Témakör:
Az
SQL SELECT
utasítás
SELECT és WHERE záradékai
>> Oracle Példák:
--
lekérdezésekhez elég
szinonimákat venni: createHRsyn
EA-kieg: lecke01/select-alap.pdf, lecke02/where-feltétel.pdf
>> Dolgozo, Osztaly táblák: createDolg
Dolgozo (dkod, dnev, foglalkozas,
fonoke, belepes, fizetes, jutalek, oazon)
Osztaly (oazon, onev, telephely)
>> Feladatok egytáblás
lekérdezésekre: SELECT lista FROM tábla WHERE feltétel
--- Rel.algebra vetítés művelete (SQL-ben multihalmaz -> rel.alg.-ban halmaz!)
1. Adjuk meg a dolgozók
között
előforduló foglalkozások neveit!
(select lista)
2. Adjuk meg a dolgozók
között
előforduló foglalkozások neveit
(DISTINCT is),
az eredmény halmaz legyen,
vagyis minden foglalkozást csak egyszer írjuk ki!
3. Adjuk meg a dolgozók kódját, nevét
és az éves fizetését,
amikor kifejezést
használunk az oszlopnevek helyén, ott
adjunk új oszlopnevet ("éves fizetés")
--- Rel.algebra kiválasztás művelete és SQL SELECT utasítás WHERE feltétele
4. Kik azok a dolgozók, akiknek a
fizetése
> 2800? (kiválasztás, elemi
feltétel)
5. Írjuk ki a 'KING' nevű dolgozó(k) adatait! (kar.tip.konstans megadása 'KING')
6. Kik azok a dolgozók, akiknek a
fizetése 2000 és 4500 között
van?
(1.mo:
kiválasztás, összetett
feltétel; 2.mo: where-ben: intervallum)
7. Kik azok a dolgozók, akik a
10-es vagy a 20-as osztályon dolgoznak?
(1.mo:
kiválasztás, összetett
feltétel; 2.mo: where-ben: in értékek)
8. Adjuk meg azon dolgozókat, akik
nevének második betűje 'A' (where: like)
9. Kik azok a dolgozók, akiknek a
jutaléka nagyobb, mint 600?
10. Kik azok a dolgozók, akiknek a
jutaléka kisebb-vagy-egyenlő, mint 600?
11. Kik azok a dolgozók, akiknek a
jutaléka ismeretlen (hiányzó adat,
nincs kitöltve)
12. Kik azok a dolgozók, akiknek a
jutaléka ismert (vagyis nem NULL)
--- Köv.itt nem alap relációs algebrai művelet, de SQL lekérdezésekben hasznos
művelet az eredménytábla sorait rendezni (ORDER BY, kiterjesztett rel.algebra)
13. Listázzuk ki a dolgozókat
foglalkozásonként, azon belül
nevenként rendezve.
14. Listázzuk ki a dolgozókat
fizetés szerint csökkenőleg rendezve.
2.rész: SQL feladatsor a 2. és 3.gyakorlatokra (köv.héten is folytatjuk)
Sorfüggvények használata
Témakör:
Az
SQL SELECT
utasítás
SELECT és WHERE záradékaiban szereplő
attribútumok különböző
típusaira kifejezések és a
sorfüggvények
használata:
I. Az Oracle által ismert adattípusok, lásd OracleTipusok.html
II. Beépített függvények
használata, a legfontosabb Oracle függvények:
EA-kieg: lecke03/fuggvenyek.pdf -
sorfüggvények használata
FELADATSOR:
dolgozo, osztaly --- Táblák létrehozása, lásd createDolg (script)
1. Adjuk meg
dolgozók nevét és az
éves fizetését, akik a 10-es
osztályon
dolgoznak.
2. Adjuk meg azon dolgozókat, akik fizetése osztható 15-tel.
3. Adjuk meg a dolgozók fizetéseinek
négyzetgyökét két tizedesre, és ennek
egészrészét.
4. Adjuk meg azon dolgozókat, akik nevének második betűje 'A'.
5. Adjuk meg azon dolgozókat, akik
nevében van legalább két 'L' betű.
(Többféle
megoldást is keressünk
a lekérdezésre, LIKE, INSTR
függvény)
6. Adjuk meg a dolgozók nevének utolsó három betűjét.
7. Adjuk meg azon dolgozókat, akik nevének utolsó előtti betűje 'T'.
8. Kik azok a dolgozók, akik '1982.01.01.'
után léptek be?
(Aktuális dátumformátumot lásd -> SYSDATE fv.)
9. Adjuk meg, hogy hány hete dolgozik a
cégnél ADAMS és milyen
hónapban
és milyen nap
(hétfő, kedd, stb. magyar/angol) lépett be
(dátum formátumok)
10. Adjuk meg azokat a dolgozókat, akik keddi napon
léptek be. (Vigyázzunk a visszaadott
értékkel!)
11. Adjuk meg, hogy hány nap volt KING és JONES belépési dátuma között?
12. Adjuk meg, hogy milyen napra esett KING belépési dátuma hónapjának utolsó napja.
13. Adjuk meg, hogy milyen napra esett KING belépési dátuma hónapjának első napja.
14. Számoljuk ki, egészekre
kerekítve, hogy a mai nap
hány naposak vagyunk,
azt is, hogy hány hetesek,
továbbá hány hónaposak
vagyunk (DUAL tábla)
15. Adjuk meg a dolgozók éves
jövedelmét, ahol a havi jövedelem a
fizetés
és jutalék
összege, ahol nincs jutalék megadva,ott a 0
helyettesítő
értékkel
számoljunk (NVL függvény
alkalmazása).
>> Segédlet:
Examples/Példák: SQL
Language Reference >> 5
Functions:
Sorfüggvények: pl.
Karakteres függvények: SUBSTR, RPAD,
..., INSTR,
...
pl. Dátum
függvények: MONTHS_BETWEEN,
..., pl. Konverziós: TO_DATE,
...
pl. Null
érték kezelése,
helyettesítő érték
megadása: NVL,
COALESCE,
...
Figyelem!
COALESCE
példában: FROM product_information
mivel ez a tábla nem az HR,
hanem OE sémában szerepel, ezért
itt ki kell írni a
táblatulajdonost: FROM OE.product_information
(ugyanis csak a HR owner
tábláihoz hoztuk létre a
szinonimákat).
>> Önálló
gyakorlás: Oracle
Példatár Feladatok.pdf
1.fejezet 1.1.-1.18. feladatok
Megj.: 1.14.feladatban
foglalkozás szerint rendezve (nem csoportosítva)
1.6 feladat (Kende-Nagy)
Listázzuk ki a dolgozók nevét
és fizetését, valamint jelenítsük meg
a fizetést
grafikusan úgy, hogy a fizetést 1000 Ft-ra kerekítve, minden 1000 Ft-ot
egy '#' jel jelöl. (például 5000 -> #####, 800 -> #)
1.8 feladat (Kende-Nagy)
Listázzuk ki azoknak a dolgozóknak a
nevét, fizetését, jutalékát,
és
a jutalék/fizetés
arányát, akiknek a foglalkozása eladó
(SALESMAN).
Az arányt két tizedesen jelenítsük meg.