Lekérdezések
kifejezése SQL SELECT-tel:
Külső összekapcsolások.
Korrelált
alkérdések.
Emlékeztető az előző gépes
gyakorlatokról,
csatlakozás az Oracle
adatbázishoz: Gépes gyakorlathoz:Oracle
adatbázis elérhetősége
A lekérdezési feldatatok
megoldásához előbb
az alaptáblákat kell létrehoznunk
(aki volt az előző gyakorlatokon, azoknak megvan, aki nem
volt,
most
hozza létre) 1.) Oracle
segédanyag
példáinak
kipróbálása:
- Ehhez előkészítés: HR
séma tábláihoz
készítsük el a
szinonimákat create_synonym
Feladat: Adjuk meg
osztályonként a
dolgozók összfizetését
a
hr.employees és hr.departments
táblák adatai alapján
(department_name,
sum(salary)) formában.
1. Azok az osztályok is jelenjenek meg ahol nem dolgozik
senki,
ott az összfizetés 0 legyen.
2. Ha van olyan dolgozó, akinek nincs osztálya,
azokat
egy 'FIKTIV' nevű osztályon
gyűjtsük
össze.
3. Csak azokat az osztályokat jelenítsük
meg,
amelyek nevében
van 'B' betű, plusz a FIKTIV
osztályt.
-- Megoldás/ellenőrzésként:
lásd itt 1.9.
Alkérdések-II.
Korrelált
alkérdések.
(a) t
in (SFW)
(b) t
theta (SFW)
(c) t
theta ANY/ALL(SFW)
(d) EXISTS
(SFW)
2.)
Az
órai gyakorlatok
példái: Relációs
algebra hányados
kifejezése relációs
algebrában és
SQL-ben
Táblák
és
feladatok:szeret_tabla.txt
-- táblák
létrehozása: create_szeret.txt
A szeret táblára
vonatkozó
relációs algebrai feladatait
nézzük meg SQL SELECT-tel! Feladat: Kik azok, akik legalább azokat a
gyümölcsöket szeretik, mint
Micimackó?
1.mo. Hányados
kifejezése
a relációs algebrai
alapműveletekkel, majd ezt átírva
SQL
SELECT-re (két MINUS
halmazművelet
segítségével)
2.mo. Fejezzük ki először természetes
nyelven:
Kik azok, akik
legalább
azokat a
gyümölcsöket szeretik, mint
Micimackó =
vagyis azok,
akik minden
olyan gyümölcsöt
szeretnek, amit
Micimackó =
vagyis
azok, akikhez nincs
olyan gyümölcs, amit Micimackó
szeret, de Ő nem,
majd
ezt is írjuk
át SQL SELECT-re (két NOT EXISTS
korrelált
alkérdéssel)
3.mo. A fentiek kombinációja
(például egy
NOT EXISTS-en belül egy MINUS), stb.
-- Megoldások/ellenőrzésként:
lásd itt
Fejezd
ki a
lekérdezéseket SQL SELECT-tel! A
gyakorlatok feladatai itt: table_dolgozo.txt
-- táblák
létrehozása: create_dolg
Feladatok
a 6.gyakorlatra
- Kik azok a dolgozók, akiknek a fizetése
nagyobb,
mint 'ALLEN' fizetése?
- Kik azok a dolgozók, és milyen
munkakörben
dolgoznak, akiknek a legkisebb
a fizetésük? (ugyanez a
kérdés a
legnagyobb fizetésre is).
- Osztályonként írjuk ki a
minimális
fizetést, de csak azokat az
osztályokét, ahol
a minimális fizetés nagyobb, mint a
30-as
osztályon dolgozók minimális
fizetése.
- Kik azok a dolgozók, akiknek a fizetése kisebb,
mint
valamelyik hivatalnok ('CLERK')
fizetése. (ugyanez a
kérdés, csak most
minden hivatalnok fizetésénél kisebb)
- Kik azok a dolgozók, akiknek ugyanaz a
főnökük
és ugyanazon az osztályon dolgoznak,
mint 'MARTIN'?
- Melyek azok az osztályok, ahol nem dolgozik senki?
(Nézzük meg OUTER JOIN-nal is
valamint korrelált NOT
EXISTS-el is,
keressünk többféle
megoldást és
vessük
össze!)
- Adjuk meg, hogy az egyes osztályokon hány ember
dolgozik (azt is, ahol 0=senki).
ZH
előtti
összefoglalás,
kérdés-válasz.
Következő héten az
I.ZH:
relációs algebra,
kiterjesztett relációs algebra és SQL
SELECT.