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.
   
Ez az első gépes gyakorlatunk, 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:
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 [...];
   
Segédanyag: >> SELECT lista példáit próbáljuk ki!
   
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];
 
Segédanyag: >> WHERE feltétel példáit próbáljuk ki!
 
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) 
   
Vissza az AB1 gyakorlat oldalára             Vissza a Kezdőlapra