7.GYAKORLAT (ADATBÁZISOK)
   
   Témakör: Oracle gépes gyakorlat.
   I. SQL DML, táblák tartalmának módosítása: insert, delete, update, illetve
       tranzakció-kezelés utasítások: commit, rollback,
   II. SQL DDL: táblák, megszorítások létrehozása: ceate table, constraints
        módosítható és nem módosítható nézettáblák használata: create view
   > Oracle Példák: DML-hez saját táblaként hozzuk létre: createHRtables (új!!!)
   > SQL segédanyagok:  SQL09_DML.pdf;  SQL10_DDL.pdf;  SQL11_view.pdf
   

   
   I.rész: SQL DML (insert, delete, update)
   FELADATSOR-A/6.rész: dolgozo, osztaly (DML: DELETE, INSERT és UPDATE)
   Előkészítés: Ezekhez a DML feladatokhoz ámenetileg most megszorítások
   (mint például hivatkozási épség) megadása nélkül hozzuk létre a táblákat:
   >> Módosított Dolgozo és Osztaly táblák létrehozása (no constraints) (új!!!)
 
DELETE
  1. Töröljük azokat a dolgozókat, akiknek jutaléka NULL.
  2. Töröljük azokat a dolgozókat, akiknek a belépési dátuma 1982 előtti.
  3. Töröljük azokat a dolgozókat, akik osztályának telephelye DALLAS.
  4. Töröljük azokat a dolgozókat, akiknek a fizetése kisebb, mint az átlagfizetés.
  5. Töröljük ki azokat az osztályokat, akiknek van olyan dolgozója,  aki a 2-es
      fizetési kategóriába esik (vagyis az alkérdésben adjuk meg azon osztályok
      nevét, amelyeknek van olyan dolgozója,  aki a 2-es fizetési kategóriába esik)
  6. Töröljük ki azon osztályokat, amelyeknek 2 olyan dolgozója van, aki a 2-es
      fizetési kategóriába esik.

INSERT
  7. Vigyünk fel egy 'Kovacs' nevű új dolgozót a 10-es osztályra a következő
      értékekkel: dkod=1, dnev='Kovacs', oazon=10, belépés=aktuális dátum,
      fizetés=a 10-es osztály átlagfizetése. A többi oszop legyen NULL.
  8. Több sor felvitele: Hozzunk létre egy UjOsztaly nevű táblát, amelynek
      attribútumai megegyeznek az Osztály tábla oszlopaival, plusz van még egy
      numerikus típusú Letszam nevű attribútuma. Ebbe az UjOsztaly táblába az
      insert utasítás 2. alakjával (alkérdéssel ) vigyünk fel új sorokat az osztály és
      dolgozó táblák aktuális tartalmának felhasználásával minden osztály adatát
      kiegészítve az adott osztályon dolgozók létszámával. Azok az osztályok is
      jelenjenek meg ahol nem dolgozik senki, ott a létszám 0 legyen. Továbbá
      ha vannak olyan dolgozók, akiknek nincs (nem ismert) az osztályuk, azok
      létszámát egy oazon=0, onev= 'FIKTIV' és telephely='ISMERETLEN'
      adatokkal rendelkező sorba írjuk be.
   
UPDATE
  9. Növeljük meg a 20-as osztályon a dolgozók fizetését 20%-kal.
10. Növeljük meg azok fizetését 500-zal, akik jutaléka NULL vagy
      a fizetésük kisebb az átlagnál.
11. Növeljük meg mindenkinek a jutalékát a jelenlegi maximális jutalékkal. 
12. Módosítsuk 'Loser'-re a legrosszabbul kereső dolgozó nevét.
13. Növeljük meg azoknak a dolgozóknak a jutalékát 3000-rel, akiknek
      legalább 2 közvetlen beosztottjuk van.
      Az ismeretlen (NULL) jutalékot vegyük úgy, mintha 0 lenne.
14. Növeljük meg azoknak a dolgozóknak a fizetését, akiknek van olyan
      beosztottja, aki minimális fizetéssel rendelkezik.
15. Növeljük meg a nem főnökök fizetését a saját osztályuk átlagfizetésével.
   

   
   II.rész: SQL DDL. Táblák és megszorítások, nézettáblák
   FELADATSOR-A/7.rész: dolgozo, osztaly (DDL: táblák, nézettáblák)
   > További segédletek: create table, típusok, megszorítások (.txt)
   > Feladatok: Táblák és megszorítások (constraints) létrehozása.
1.) Írjon szkript programot, amely új adattáblát hoz létre az emp és dept táblákból  
    myemp és mydept néven. Ha már léteznek ilyen nevű táblák, akkor előbb
    azokat törölje. Véglegesítse az adattáblákat (commit).
    A létrehozott táblákat lássa el az alábbi megszorításokkal:
    - Legyen az empno elsődleges kulcs a myemp táblában, és
    - legyen a deptno elsődleges kulcs a mydept táblában és idegen kulcs a myemp
       táblában, amely a hivatkozási épséget biztosítja oly módon, hogy egy osztály
       törlése esetén törlődjenek ennek az osztálynak a dolgozói is.
    - Egy új dolgozó csak az adott 700 és 7000 USD értéktartománybeli fizetést
       kaphasson.
2.) Ellenőrizze ezeket a megszorításokat sikeres (megfelelő rekord felvitele)
    és sikertelen (hibás rekord) adatbeviteli kísérletekkel, majd állítsa vissza
    az eredeti táblatartalmakat (rollback). Véglegesítse az adattáblákat (commit).
   
3.) Egyszerű és összetett nézettáblák létrehozása, melyik módosítható és melyik nem?
4.) Adatok karbantartása adattáblán illetve nézeten keresztül, és megfigyelni ezek
     egymásra hatását: Hogyan hat a nézetek adatainak módosítása az adattáblára,
     és a másik irányban, az adatok módosítása hogyan jelenik meg a nézetben?
     Eközben mentési pontokat adjunk meg ahova folyton visszagörgetjük.
     Tranzakciókezelés alapjai, mentési pontok: SAVEPOINT és
     visszagörgetés: ROLLBACK (illetve érvényesítés: COMMIT).
5.) Ellenőrizze ezeket a megszorításokat sikeres (megfelelő rekord felvitele)
     és sikertelen (hibás rekord) adatbeviteli kísérletekkel, majd állítsa vissza az
     eredeti táblatartalmakat (rollback). Véglegesítse az adattáblákat (commit).
   
--  -- --
   > Önálló gyakorlásra: Oracle Példatár Feladatok.pdf 5-6.fejezet feladatai