3.gyak.Lekérdezések
kifejezése relációs
algebrában és SQL-ben
Egyszerű lekérdezések: SELECT ... FROM ... WHERE
...
Feladatok: A
3-4. gyakorlaton az 1-2. gyakorlatok feladatait
oldjuk meg SQL-ben,
célszerű ezeket az SQL megoldásokat
táblánál is felírni
és
megbeszélni,
majd gépnél
is
kipróbálni az
Oracle adatbázis környezetben,
lásd Oracle
adatbázis elérhetősége Ez
az első gépes
gyakorlatunk, csatlakozás az
Oracle
adatbázishoz: Gépes gyakorlathoz:Oracle
adatbázis elérhetősége
A gyakorlat
áttekintése:
A lekérdezési feldatatok
megoldásához előbb
az alaptáblákat kell létrehoznunk: 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
2.) Az
órai gyakorlatok
példái: - Dolgozo
és Osztaly táblák és
kérdések: table_dolgozo.txt
és a táblák
létrehozása
(scriptként futtatva le)
create_dolgozo
- Termékek, lásd table_termekek.txt
és a táblák
létrehozása: create_termekek
Termék(gyártó, modell,
típus)
PC(modell,
sebesség, memória,
merevlemez,
ár)
Laptop(modell,
sebesség,
memória, merevlemez,
képernyő, ár)
Nyomtató(modell,
színes,
típus,
ár)
- Csatahajók, lásd table_csatahajok.txt és
a táblák
létrehozása
create_csatahajok
Hajóosztályok(osztály,
típus,
ország, ágyúkSzáma,
kaliber,
vízkiszorítás)
Hajók(név, osztály,
felavatva)
Csaták(név, dátum)
Kimenetelek(hajó,
csata,
eredmény)
3.) A
példatár feladatai
önálló
gyakorlásra:
-- Lásd Feladatok.pdf (1.1-1.18.feladatok)
és a táblák
létrehozása cr_dept_emp
1.1.
SELECT záradék: Vetítés,
projekció
SELECT *|{[DISTINCT] oszlopnév|kifejezés [alias],...}
FROM táblanév [...];
SELECT és FROM kötelező
záradékok, a többi nem kötelező. SELECT .. FROM .. [WHERE .. ]
alapértelmezése:
A FROM záradékban levő
relációkhoz egy-egy
sorváltozót
rendelünk, amelyek a megfelelő reláció
minden sorát bejárják,
(ha van WHERE záradék, akkor azt az
aktuális sorokra
kiértékeljük és ha helyes,
vagyis a feltétel igazat ad, akkor)
képezzük a SELECT záradékban
szereplő kifejezéseknek
megfelelő eredménysort. Így SQL-ben egy sor az
eredményben
többször is előfordulhat, vagyis az
eredménytábla multihalmaz,
ha halmazt szeretnénk kapni, azt külön
kérni kell: DISTINCT
1.2.
WHERE záradék: Kiválasztás,
szelekció
SELECT *|{[DISTINCT] oszlopnév|kifejezés [alias],...}
FROM táblanév [...];
[WHERE feltétel];
1.2.1. aritmetikai
összehasonlítás: =,
>, >=, <, <=, <>
Hasonlóan, mint a relációs algebra
kiválasztás (szelekció)
feltételében elemi feltételekből
építkezünk. Elemi feltételen
két kifejezés aritmetikai
összehasonlítását értjük, pl.
A<B
1.2.2. logikai műveletekkel AND, OR, NOT és
zárójelekkel
az elemi feltételekből tudjuk felépíteni az
összetett feltételeket,
úgy, mint a relációs algebrában. Itt
is ugyanúgy érvényesek
a precedencia szabályok és
zárójelezés.
1.2.3. egyszerű értékvizsgálat: LIKE, IS NULL
(SQL-ben speciális és ez nem írható
át
relációs algebrára)
- LIKE '_ %' (ez csak sztring típusú
kifejezésekre)
- IS NULL | IS NOT NULL
1.2.4. egyszerű értékek listája: BETWEEN, IN
(SQL-ben speciális, de mind a kettő
átírható relációs algebrába)
- BETWEEN...AND...
- IN (értékhalmaz) | NOT IN (értékhalmaz)
- Feladat: átírni
relációs algebrai
kifejezésekké
(aritmetikai
összehasonlítással és
logikai kifejezésekkel)
1.2.5. Alkérdések használata WHERE-ben
(jön köv.héten)
1.2.6.
ORDER BY záradék: Kiválasztott sorok
rendezése
SELECT *|{[DISTINCT] oszlopnév|kifejezés [alias],...}
FROM táblanév [...];
[WHERE feltétel];
[ORDER BY {oszlopnév [DESC], ...}];
Segédanyag: >>
WHERE
feltétel 21.oldal
példáit
próbáljuk ki!
-- Megj.: Klasszikus relációs
algebrában
nem fejezhető ki,
mert az eredmény lista (nem
halmaz, nem is multihalmaz),
később erre a kiterjesztett
relációs algebránál
visszatérünk.
Fejezd
ki a
lekérdezéseket SQL SELECT-tel és
relációs algebrában! 2.) A
gyakorlatok feladatai itt: table_dolgozo.txt
Feladatok a 3.gyakorlatra
- Adjuk meg a dolgozók között
előforduló
foglalkozások neveit.
- Kik azok a dolgozók, akiknek a fizetése
> 2800?
- Kik azok a dolgozók, akik a 10-es vagy a 20-as
osztályon dolgoznak?
- Adjuk meg azon dolgozókat, akik nevének
második
betűje 'A'.
- Kik azok a dolgozók, akiknek a jutaléka ismert?
(vagyis
nem NULL)
3.)
További
gyakorló feladatok: Oracle
példatár Feladatok.pdf
a 3.gyakorlathoz: 1.fejezet: Egyszerű
lekérdezések
(1.1-1.18.feladatok)
Az önálló gyakorlást
nem-kötelező
beadandóként egy "<ehakod>_3gy.txt"
nevű
szöveges
fájlban legkésőbb a köv.gyakorlat előtt,
kedd 10h-ig küldjék el emailben.
A
beadandó célja
az önálló gyakorlás, lásd Gyakorlati
követelmények #Beadandó.