II. Témakör: SQL DDL, DML, DCL 

Az előző I.Témakör Lekérdezések kifejezése
>> Relációs nyelvek és SQL SELECT (1-4.gyak)

Relációs tervezés és SQL DDL, DML, DCL
>>  9. DDL Adatdefiníciós nyelv (5.gyak.)
>> 10. DCL Adatvezérlő nyelv (6.gyak./A)
>> 11. Tranzakció vezérlés (6.gyak./B)
>> 12. DML Adatkezelő nyelv (6.gyak./C)
_______________________________________________________
5. gyak. (III.12)
 - SQL DDL: CREATE TABLE, CREATE VIEW

-  Lásd Az órai példa-adatbázissémák 4.1.példáját, részletesen: 
    E/K modell, és leképezése relációsémákra.
    SQL DDL.  Táblák és megszorítások (constraints) létrehozása.
    SQL DML. A megszorításoknak eleget tevő adatsorok felvitele.

- Segédanyagok (Márton Ágnes) SQL DDL (PDF)
Oracle Online DocLibrary SQL Reference  HTML     PDF

-  A gépes feladatokhoz lásd Oracle adatbázisok ELTE-s elérése 1.pontja   
    most az sqlplus kliens programot használjuk a panda.inf.elte.hu gépen. 

-- HF.: A tavaszi szünet utánra, a 6.gyak.-ra, márc.26-ra beküldendő HF:
    lásd Az órai mintapélda adatbázissémák 4.2. példa Egyszerűsített egyetemi
    hallgatói rendszer E/K modell "felülvizsgálata", esetleges javítgatása, 
    és leképezése relációs sémákra, hasonlóan, mint az 1.Példában
volt.
    Segítségként a 2.Példa E/K diagramjában nagybetűvel amiből tábla lesz,
    és kicsivel, ami beolvad más táblába
.
-- A megvalósításhoz a
z 1.Példa SQL script alapján készítsük el a 2.Példára
    drop table, create table, insert utasításokból álló beküldendő HF scripttet,
    amely egy egyszerű szövegfájl legyen, a neve: ehakod_datum.txt legyen,
   ahol az ehakod helyére a saját ETR azonosító .ELTE nélkül, a dátumhoz  
    pedig a hhnn, vagyis a hónap számokban és a nap, pl. abckaat.0326.txt,
    vagyis .txt szövegfájl (nem .doc) és kérem, hogy ftp-vel (nem e-mailben).
-- HF beküldéséről a részleteket, lásd Zh feladatok, beadandók beküldése
-- A 5.gyak.HF is a ZH része, ezekben a táblákban lesznek a ZH feladatok:
    zömében lekérdezések (select), de lesz nézetek létrehozása (create view),
    és adatok karbantartása nézeten keresztül (insert, delete, update) feladatok.

"Súgó" a HF megoldáshoz:
1. A create table tanrend ... utasításban összetett elsődleges kulcsot
kell definiálni, de egy táblában csak egyetlen primary key lehet,
ezért mivel a kulcsmegszorítás több oszlopra vonatkozik, azt nem
az oszlopdefinicióknál kell megadni, hanem táblamegszorításként:
PRIMARY KEY ( <column expression> {, <column expression>}... )
a szintaxis, amibe be kell helyettesíteni a megfelelő oszlopneveket.

2. A másik create table eindex ... utasításban a külső kulcs az lehet,
ami a hivatkozott táblában kulcs volt, pl. a hallgato tábla eazon kulcsa,
de a másik tanrend táblanak az összetett kulcsára való hivatkozás
megint több oszlopra vonatkozik, vagyis megint nem oszlop-, hanem
táblamegszorításként kell megadni:
FOREIGN KEY ( <column expression> {, <column expression>}... )
REFERENCES <table identifier> [ ( <column expr> {, <column expr>}... ) ]
a szintaxis, be kell helyettesíteni a megfelelő tábla- és oszlopneveket.

3. Az insert... utasításnál arra kell figyelni, hogy olyan adatsorokat
vigyünk fel a táblákba, amelyek eleget tesznek a create table ...
utasításban megadott megszorításoknak.
_______________________________________________________
6. gyak. (III.26)
 - SQL DDL, DML, DCL

- Segédanyagok (Márton Ágnes)
             SQL SELECT (PDF)
             SQL DDL (PDF)
             SQL DML (PDF)
             SQL DCL (PDF)

- A ZH-n csak az alábbi SQL összefoglaló segédlet használható:
             sql_anyag.txt   (Hajas Csilla)

Témakörök:
SQL DDL
-- folyt. nézettáblák létrehozása, egyszerű és összetett nézetek
SQL SELECT
-- ismétlés - alkérdések használata a WHERE és HAVING
    utasításrészben, korrelált alkérdések egymásba ágyazása
-- INLINE nézet (alkérdések a FROM utasításrészben)
SQL DCL
-- táblákhoz és a nézetekhez jogok kiadása/átadása: GRANT
    és visszavonása: REVOKE
-- tranzakciókezelés alapjai, érvényesítés: COMMIT,
    és visszagörgetés: ROLLBACK
    és mentési pontok: SAVEPOINT
SQL DML
-- adatok karbantartása INSERT, DELETE, UPDATE
    (mentési pontok alkalmazásával, később visszagörgetés)
-- adatok karbantartása nézeteken keresztül
SQL SELECT
-- hierarchikus lekérdezések, a PRIOR művelet, CONNECT BY

Feladatok:
1.feladat: Azoknak a hallgatóknak az adatai, akik legalább azokat
               az  'adatbázis' tárgyat vették fel, amelyet  'Kovács Pál'
               is felvett (minden, vagyis a hányados kifejezése).

2.feladat: Mennyi hallgató van és hány különböző városból jöttek?

3.feladat: Adjuk meg az ösztöndíjak átlagát és összegét, de az összegbe
               számoljuk bele azokat is, akinek ismeretlen az ösztöndíja
               (valamilyen értékkel, ill. H.F. az átlagösztöndíjjal) (NVL)

4.feladat: A tárgyak adatai és az, hogy kik vették fel az adott tárgyat,
               melyek azok a tárgyak, melyeket nem vettek fel hallgatók
               (NOT IN helyett KÜLSŐ JOIN)
 
5.feladat: Melyek azok a tárgyak, amelyet a legtöbben vettek fel?
               a.) NÉZET-tel vagy
               b.) FROM alkérdés -- INLINE nézettel

6.feladat: Egyszerű és összetett nézettáblák létrehozása és használata.
               Adatok karbantartása (INSERT, DELETE, UPDATE)
               adattáblán ill. nézeten keresztül, és nézni ezek egymásra hatását,
               közben mentési pontokat adjunk meg, ahova visszagörgetjük.

7.feladat: Hierarchikus lekérdezések, a PRIOR művelet, CONNECT BY

Megoldásokat lásd 05_sql.txt (jelszóval)
_______________________________________________________
7. gyak. (IV.02)
 - I. ZH (géptermi SQL)

-- A 5.gyak.HF is a ZH része, ezekben a táblákban lesznek a ZH feladatok:
    zömében lekérdezések (select), de lesz nézetek létrehozása (create view),
    és adatok karbantartása nézeten keresztül (insert, delete, update) feladatok.
Segédlet: sql_anyag.txt