Lekérdezések
kifejezése relációs
algebrában és SQL-ben
Egyszerű lekérdezések: SELECT ... FROM ... WHERE
...
A 3-4. gyakorlatokon 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,
valamint a gépnél is
kipróbálni az
Oracle 11g adatbázis környezetben.
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 1982.01.01 után
léptek
be a céghez?
- 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.)
Házi feladatok: Oracle
példatár Feladatok.pdf
HF a 3.gyakorlathoz:
- 1.fejezet: Egyszerű
lekérdezések
(1.1-1.18.feladatok)