2.GYAKORLAT (ADATBÁZISOK)
   

   
  I.RÉSZ: RELÁCIÓS ADATMODELL, RELÁCIÓS ALGEBRAI LEKÉRDEZÉSEK
   - Ullman-Widom Tankönyv 2.4. fejezete: UW_24_RelAlg.pdf (alap relációs algebra)
   - Alapok: Relációs algebrához relax környezet táblákkal: dbis uibk github io/relax
   - A fenti linken elérhető DB (ELTE-AB1) táblákat is használjuk a lekérdezésekhez,
     de magunk is létrehozhatunk táblákat: Relax_Szeret.txtRelax_Dolg_Oszt.txt 
   - A relációs algebrai műveletek eredménye halmaz, vagyis ez az implementáció
     minden művelet elvégzése után automatikusan megszünteti az ismétlődéseket.
   - Ez a környezet nem támogatja az alkérdéseket (az később lesz az SQL-ben).,
     vannak különbségek az SQL szintaxisban, olvassák el a használatról a Help-et.
   
  -  Relációs algebrai alapok: Volt az 1.gyak: Vetítés, kiválasztás és halmazműveletek
     Unér műveletek: pi-vetítés, sigma-kiválasztás, rho-átnevezés (táblák v. oszlopok)
     Halmazműveletek: unió (alapműv), halmazműv.különbség (alapműv), és metszet
   - 2.gyak. új anyag: binér műveletek: direkt szorzat, selfjoin (ehhez rho-átnevezés)
     Köv.gyak. folytatjuk még a binér műveletekekkel: az összekapcsolások lesznek.
 
--- Példa: Szeret (nev, gyumolcs) sémájú tábla létrehozása: Relax_Szeret.txt
    Szeret (nev, gyumolcs) tábla sok-sok kapcsolatot ír le, azaz egy vevő
    több gyümölcsöt is szerethet és egy gyümölcsöt több vevő is szerethet.
   
   
 - Volt: Rel.alg.1.rész: egy táblára vonatkozó lekérdezések és a halmazműveletek
 - Emlékeztető, lásd 1.gyak.1f-6f. Adjunk más megoldást is a 3.f. és a 4.feldatatra:
 1. Kik szeretik az almát?
 2. Kik nem szeretik az almát? (de valami mást igen)
 3. Kik szeretik vagy az almát vagy a körtét?
 4. Kik szeretik az almát is és a körtét is?
 5. Kik azok, akik szeretik az almát, de nem szeretik a körtét?
 6. Kik szeretik vagy az almát vagy a körtét, de csak az egyiket?
   
 - Mai anyag: Rel.alg.2.rész: Tábla átnevezése, önmagával vett direkt szorzata
 - Feladatok direkt szorzatra (táblákkal, összesítő függvények nélkül)
 7. Kik szeretnek legalább kétféle gyümölcsöt? (direkt szorzattal)
 8. Kik szeretnek legalább háromféle gyümölcsöt?
 9. Kik szeretnek legfeljebb kétféle gyümölcsöt?
10. Kik szeretnek pontosan kétféle gyümölcsöt?  
   
 - Folyt.köv.: Hányados (minden kifejezése) relációs algebrában
11. Kik szeretnek minden gyümölcsöt?
     (Kik szeretik az összes olyan gyümölcsöt, amit valaki szeret?)
12. Kik azok, akik legalább azokat a gyümölcsöket szeretik, mint Micimackó?
13. Kik azok, akik legfeljebb azokat a gyümölcsöket szeretik, mint Micimackó?
14. Kik azok, akik pontosan azokat a gyümölcsöket szeretik, mint Micimackó?
   

 
    II.RÉSZ: SQL egytáblás lekérdezések, vetítés és kiválasztás műveletei
   - Oracle segédanyagok: SQL02_select_lista.pdf;  SQL03_where_feltetel.pdf
     Az Oracle demo lekérdezésekhez elég szinonimát használni: createHRsyn.txt
--- Gyakorlat példáihoz a táblák létrehozása Oracle SQL-ben: createDolgozo.txt 
     Ma csak a Dolgozo táblát használjuk (egy táblára vonatkozó lekérdezések)
 
     
       Osztaly (oazon, onev, telephely)
       Dolgozo (dkod, dnev, foglalkozas, fonoke, belepes, fizetes, jutalek, oazon)      
       Fiz_Kategoria (kategoria, also, felso)
    
  FELADATOK: Egy tábla lekérdezése (oszlopok vetítése és sorok kiválasztása)
 - SELECT.1.rész: 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 az SQL SELECT utasítás WHERE feltétele
 - NULL hiányzó érték, lásd SQL Lang.Ref. Nulls, 3 értékű logika, lásd igazságtábla
 4. Kik azok a dolgozók, akiknek a fizetése > 2800? (kiválasztás: elemi feltételek)
 5. Adjuk meg azokat a dolgozókat, akiknek a foglalkozása 'MANAGER' (kar.tip.érték)
 6. Kik azok a dolgozók, akiknek a fizetése 2000 és 4500 között van? (dkod, dnev)
     (1.mo: where-ben: intervallum); (HF 2.mo: rel.alg.kiválasztás: összetett feltétel
 7. Kik azok a dolgozók, akik a 10-es vagy a 20-as osztályon dolgoznak?
     (1.mo: where-ben: in feltétel); (HF 2.mo: rel.alg.kiválasztás: összetett feltétel) 
 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. (NULL felt)
12. Kik azok a dolgozók, akiknek a jutaléka ismert (vagyis nem NULL)
   
  - Az eredménytábla sorainak rendezése (SELECT utasítás ORDER BY záradéka)
     (Ez itt nem alap relációs algebrai művelet, de az SQL lekérdezésekben hasznos)
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.
15. Rendezés segítségével az első N sor elérése Oracle 12.2 adatbázisban,
      lásd Row Limiting Examples.html (forrás: Oracle Database SQL Lang. Ref. html)