7.gyak. SQL DDL és DML áttekintés/1.rész 
     
Előző 6.gyak: I.ZH                Következő 8.gyak
   
Feladatok:  Táblák tartalmának módosítása: insert, delete, update 
Táblák és megszorítások megvalósítása, nézettáblák create table/view
-- I.ZH feladatok és tapasztalatok megbeszélése
-- Gépes gyakorlat: Oracle: SQL teljes áttekintés 
2.1. DML: insert, delete, update  -- create table-no-constraints
> 2.2. Relációsémák és megszorítások definiálása SQL-ben
> 2.3. Nézettáblák létrehozása és használata
   
ORACLE SQL ÁTTEKINTÉSE:
SQL DDL (CREATE TABLE, CREATE VIEW)
-- Táblák és megszorítások (constraints) létrehozása.
-- Egyszerű és összetett nézettáblák létrehozása. 
SQL tranzakciókezelés
-- tranzakciókezelés alapjai, érvényesítés: COMMIT,
    és visszagörgetés: ROLLBACK
    és mentési pontok: SAVEPOINT
SQL DML (INSERT, DELETE, UPDATE) 
-- 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 (visszaállítjuk a táblák eredeti állapotát).
SQL lekérdezések: Oracle specialitások
-- Felső-N elemzés ROWNUM segítségével  
-- Hierarchikus lekérdezések CONNECT BY PRIOR 
-- Rekurzió az SQL-ben WITH utasítás
 

2.1. Adattáblák tartalmának módosítása (DML)
   
Demo példák:
> AB1EA: SQL1 - DML Tk. 6.5. Táblák tartalmának módosítása
Oracle - DML  Oracle példák táblák tartalmának módosítása
-- Az Oracle dokumentációban szereplő példák kipróbálásához:
    >> Lekérdezésekhez: createHRsyn (elég volt a szinonimákat használni)
    >> Módosításhoz: createHRtables (de most saját táblaként hozzuk létre)
  
Feladatok: DML_feladatok.txt -- Előkészítés: Ezekhez a DML feladatokhoz
átmenetileg most 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)
  
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 (lásd FizFokozat táblát, 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.
   
További gyakorló feladatok: lásd Példatár "5.fejezet. DML-utasítások"
      

2.2. Relációsémák és megszorítások definiálása SQL-ben
   
CREATE TABLE -
Relációsémák és megszorítások megadása
   
Demo példák:
> AB1EA: SQL3 - DDL1/ táblák, megszorítások Tk.7.1.-7.3. Megszorítások
Oracle - DDL1tabla Oracle példák táblák, megszorítások létrehozására
-- Az Oracle dokumentációban szereplő példák kipróbálásához:
    >> Lekérdezésekhez: createHRsyn (elég volt a szinonimákat használni)
    >> Módosításhoz: createHRtables (de most saját táblaként hozzuk létre)
   
További példák és feladatok:
> Táblák létrehozása, Oracle típusok
> Megszorítások példák
> Ullman (Stanford): Constraints and Triggers
   
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).
   
További gyakorló feladatok: lásd Példatár "5.fejezet. Adattáblák létrehozása,
módosítása, tranzakciók, megszorítások" DML- és DDL- utasításokra feladatok
      

2.3. Nézettáblák létrehozása és használata
   
CREATE VIEW -
Nézettáblák létrehozása
      
Demo példák:
> AB1EA: SQL5 - DDL3/ nézetek Tk.8.fej. Nézettáblák
Oracle - DDL2nezet Oracle példák nézettáblák létrehozására, használatára
-- Az Oracle dokumentációban szereplő példák kipróbálásához:
    >> Lekérdezésekhez: createHRsyn (elég volt a szinonimákat használni)
    >> Módosításhoz: createHRtables (de most saját táblaként hozzuk létre)
    
Feladatok:
1.) Egyszerű és összetett nézettáblák létrehozása, melyik módosítható és melyik nem?
2.) 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?
3.) 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).
   
További gyakorló feladatok: lásd Példatár "6.fejezet. Nézettálblák létrehozása"

Fel a lap tetejére                          Vissza az AB1gyak oldalára (főmenü)