SQL áttekintése, nézetek, inline nézet, with utasítás.
Hierarchikus lekérdezések (CONNECT BY PRIOR)

     
> 1ZH feladatok kiosztása és megbeszélése
> Adatmodellezési feladatok, E/K modell és leképezése relációs modellre
> Oracle SQL áttekintése  -- SQL feladatokat lásd még Példatár 5.fejezet
   >> DML feladatok  -- és itt kötelező házi feladatok: DML_feladatok.txt 
   >> Feladatok nézetekre, inline nézetre és WITH utasításra
   >> Felső-N elemzés ROWNUM segítségével
   >> Hierarchikus lekérdezések (CONNECT BY PRIOR)
     

E/K diagram és leképezése relációs modellre és Oracle megvalósítása
Ullman-Widom: Adatbázisrendszerek. Alapvetés (Második, átdolg.kiad), 2009.
-- E/K modell és leképezése relációs modellre, [UW1] 4.1-4.6.fej., 133-181.o.
-- Megvalósítása az Oracle relációs adatbázis-kezelővel, vagyis
    táblák és megszorítások létrehozása,  [UW1] 2.3., 2.5.fej és 7.1-7.4.fej.
    és táblák feltöltése a megszorításoknak eleget tevő sorokkal, [UW1] 6.5.fej.
-- II.ZH-án várható feladat adott E/K modell (vagyis adott egy E/K diagram)
    ezt kell leképezni relációs modellre (meg kell adni a relációs adatbázissémát)
    Erre a következő héten a 9.gyakorlaton nézzünk majd példákat!
-- II.ZH-n az implementációra is lesz feladat, valamelyik táblát megszorításokkal
    együtt létre kell hozni az Oracle-ben és 2-3 sort kell felvinni a táblába.
   

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 DML (INSERT)
-- A megszorításoknak eleget tevő új adatsorok felvitele,
--  illetve új sorok felvitele meglévő tábla adataiból.
SQL DCL (jogok)  
-- táblákhoz és a nézetekhez jogok kiadása/átadása: GRANT
    és visszavonása: REVOKE
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).
   
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
 

FELADATOK: DML_feladatok.txt (Nikovits Tibor)
 
DELETE
-- Töröljük azokat a dolgozókat, akiknek jutaléka NULL.
-- Töröljük azokat a dolgozókat, akiknek a belépési dátuma 1982 előtti.
-- Töröljük azokat a dolgozókat, akik osztályának telephelye DALLAS.
-- Töröljük azokat a dolgozókat, akiknek a fizetése kisebb, mint az átlagfizetés.
-- Töröljük a jelenleg legjobban kereső dolgozót.
-- 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 még SALGRADE 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)
-- 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
- 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.

UPDATE
-- Növeljük meg a 20-as osztályon a dolgozók fizetését 20%-kal.
-- Növeljük meg azok fizetését 500-zal, akik jutaléka NULL vagy a fizetésük
    kisebb az átlagnál.
-- Növeljük meg mindenkinek a jutalékát a jelenlegi maximális jutalékkal.
    (NULL tekintsük 0-nak)
-- Módosítsuk 'Loser'-re a legrosszabbul kereső dolgozó nevét.
-- 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.
-- Növeljük meg azoknak a dolgozóknak a fizetését, akiknek van beosztottja
    a minimális fizetéssel
-- 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. Adattáblák létrehozása,
módosítása, tranzakciók, megszorítások" DML-utasításokra feladatok


Nézetek, inline nézet, WITH utasítás az Oracle-ben
  
FELADATOK: Nezet_feladatok.txt (Nikovits Tibor)
   
1.feladat:
A lekérdezésekhez NIKOVITS felhasználó tulajdonában levő
táblákat használjuk! Elérése: tulajdonos.táblanév
   
NIKOVITS.CIKK (ckod, cnev, szin, suly)
NIKOVITS.PROJEKT (pkod, pnev, helyszin)
NIKOVITS.SZALLITO (szkod, sznev, statusz, telephely)
NIKOVITS.SZALLIT (szkod, ckod, pkod, mennyiseg, datum)
   
-- Melyik cikket szállítják a legtöbb projekthez?
   
A lekérdezést adjuk meg nézettáblák létrehozásával valamint úgy is, hogy
ne kelljen nézetet létrehozni, a "nézet" csak a lekérdezés idejére jön létre:
adjuk meg a lekérdezést INLINE nézettel, majd ugyanez WITH-del is.
 
Figyelem! Ez az Oracle WITH utasítás nem ugyanaz, mint az előadáson
és a kék-Tk 10.2 fejezetében szereplő WITH RECURSIVE utasítás!
Rekurzió az SQL-ben feladatokra a 9.gyakorlaton nézzünk példákat!

   
2.feladat:
DOLGOZO (dkod, dnev, foglalkozas, fonoke, belepes, fizetes, jutalek, oazon)
OSZTALY (oazon, onev, telephely)
   
Képezzük osztályonként az összfizetést, vegyük ezen számok átlagát, és adjuk
meg, hogy mely osztályokon nagyobb ennél az átlagnál az összfizetés.
 
További gyakorló feladatok: lásd Példatár "6.fejezet. Nézettáblák" feladatai
valamint "3.fejezet. Allekérdezések a FROM utasításrészben" feladatai illetve
összetett feladatai és a "7.fejezet. Összetett SQL-feladatsorok" feladatai 
     

Felső-N elemzés ROWNUM segítségével ("toplista" készítése)
  
Felső-N elemzés (például a ZH-n is hasznos, amikor túl nagy az eredménytábla
és csak az első 5 sorát kell beküldeni). a felső 5 sor kiíratása az alábbi módon:

  SELECT  *  FROM 
       (SELECT... FROM ...WHERE... ORDER BY <oszlop> DESC)
       WHERE  ROWNUM  <= 5
 
Megj: Példatár 6.fejezet elméleti összefoglalóban szerepel: "felső-N analízis"
         
Hierarchikus lekérdezések az Oracle-ben (CONNECT BY PRIOR)
      Családfák. SFW START WITH ... CONNECT BY PRIOR ...
 
Segédanyagok:
>> hiera_lekerd.txt (Nikovits Tibor) valamint AB1_Hierarch.pdf (Kiss Attila)
>> Hierarchikus.pdf  (jelszavas anyag) példáit is próbáljuk ki az Oracle-ben!
     -- ehhez a HR séma tábláihoz készítsük el a szinonimákat create_synonym
 
Feladatok a hierarchikus lekérdezésekhez
- Táblák és feladatok:  dolgozo_tabla.txt  Ehhez a táblák létrehozása:  create_dolgozo.txt
- Listázzuk ki az dolgozo tábla alapján a főnökökhöz tartozó beosztottak nevét és osztályukat.
   a.) A dolgozo tábla önamagára való hivatkozásával (többtáblás lekérdezés sorváltozókkal).
   b.) A CONNECT BY utasításrész használatával, a hierarchikus szerkezetet 'KING'-től
        felülről lefelé bejárva.
   c.)  Alulról felfelé járjuk be a hierarchikus szerkezet egy ágát 'SMITH'-től kezdve.
 
Megj: Példatár 3.fejezet elméleti összefoglalóban "Hierarchikus adatszerkezet megjelenítése"
       
Kötelező házi feladat: DML_feladatok.txt 
A hallgatóknak minél több tapasztalatot kell szerezniük az önálló munkában, ezért
kérem, hogy a mai gyakorlat órai feladatainak a megoldását a gyakorlat végén vagy
legkésőbb a következő gyakorlatig  küldje be emailben "<ehakod>_8gy.txt" nevű
szöveges fájlban (ahol az <ehakod> helyére a saját ETR azonosító kerüljön).  
      
Vissza az AB1 gyakorlat oldalára             Vissza a Kezdőlapra