Adatbázis rendszerek I Kovács LászlL szló Az SQL nyelv speciális elemei SQL szabványok Több bb-lépcs pcsős s folyamat a fejlődése alap DDL, DML, DQL, tranzakció,index 1986: ANSI SQL 1987: ISO SQL 1989: ANSI89 1992: SQL92 1999: SQL1999 2003: SQL2003 2007:? integritási elemek, védelem,view DOMAIN, CONSTRAINTS, spec. táblt blák, SELECT-ért rték OO elemek, aktív elemek,kezelő fv.-ek ek, programozás, új adattípus SQL OLAP, XML,új adattípus 1
SQL szabványai Az SQL szabvány több, t mint az alap DDL, DML, DQL. modulok SQL/Framework :fogalmi keretek SQL/Foundation :alap utasítások sok SQL/Bindings :beágyazott SQL SQL/CLI :ODBC SQL/PSM :tárolt eljárások SQL/OLAP :elemzési funkciók SQL/Transaction :tranzakció menedzser SQL/Temporal :ideiglenes adatok SQL/Objects :OO elvek SQL/MED :küls lső állom llományok SQL/OLB :beágyazott JSQL SQL/Schemata Schemata :séma kezelés SQL/JRT :Java felület let SQL/XML :XML felület let SQL/MM :multimédia kezelés SQL89: 300 SQL92: 1100 SQL99: 2000 SQL03: 3600 terjedelem SQL használata Az SQL több, t mint a SELECT parancs - tábla - view - domain interaktív program - snapshot - trigger - job CLI-SQL - tárolt eljárás SQL E-SQL - tárolt függvf ggvény - felhasználó - profile - role - schema - database link PL-SQL - replication T-SQL - cluster - lock... Oracle SQL referencia: www-db.iit.uni db.iit.uni-miskolc.hu miskolc.hu/ 2
SQL táblat blatípusok Az adatok tárol t rolása eltérő módokon, eltérő céllal törtt rténhet tábla alaptábla nézeti CREATE VIEW származtatott CREATE SNAPSHOT deklarált lt perzisztens CREATE TABLE lokáisan ideiglenes CREATE LOCAL TEMPORARY TABLE globálisan lisan ideiglenes CREATE GLOBAL TEMPORARY TABLE SQL VIEW objektum Származtatott táblt blák haszna: - parancs egyszerűsítés - egyszerűbb végrehajtv grehajtás - védelemv CREATE VIEW vnév (mnév1, ) AS SELECT ; CREATE VIEW BETEGSZAB AS SELECT nev, beosztas, reszleg FROM dolgozok WHERE status = 2; Csak az előáll llító SQL parancs tárolt rolódik, az adattábla nem Hivatkozáskor áll elő a tartalom - aktuális - lassú lehet 3
SQL VIEW objektum VIEW módos m dosításra sra 4
SQL snapshot Hozzáférés hatékonys konysága SQL hatékonys konysági elemei UPDATE.. tábla index SELECT.. lehet explicit és implicit index létrehoz l trehozás CREATE TABLE t1 (m1 Number(3) PRIMARY KEY, m2 ) CREATE INDEX i1 ON t1(m2 ASC DESC) CREATE INDEX NEVEK ON DOLGOZOK(NEV) 5
INDEX Explicit implicit Adat hozzáférés védelemv SQL védelmi elemei UPDATE.. objektum SELECT.. jog adományoz nyozása: GRANT jog ON objektum TO felhasználó jog visszavonása: sa: REVOKE jog ON objektum FROM felhasználó 6
Hozzáférés védelmi v utasítások sok SQL védelmi v elemei egy objektum (objektum jog): GRANT SELECT INSERT UPDATE DELETE ON objektum TO felh tetszőleges objektum (privilégium): GRANT művelet m TO felh mindenkinek engedélyezve: GRANT művelet m ON TO PUBLIC a kapott jog továbbadhat bbadható: GRANT TO WITH GRANT OPTION ADMIN OPTION adott jog visszavonása: sa: REVOKE FROM Objektum azonosítása sa SQL séma elemei UPDATE.. objektum séma SELECT.. katalógus adatbázis teljes azonosítás: s: adatbázis.katal zis.katalógus.s gus.séma.objektum1 ma.objektum1 ORA1.INFO.TEREMF.ORAK.KEZDES 7
SQL séma s elemei Séma: objektumok logikai tárolt roló egysége ge (egy tulajdonosa van) CREATE SCHEMA snév paraméterek DROP SCHEMA snév CASCADE egy felhasználónak nak több t sémája s is lehet Katalógus: sémák s adminisztráci ciós egysége ge tartalmaz egy definíci ciós és egy informáci ciós sémáts DEFINITION_SCHEMA: leíró bázist zistábl blák (pl. USERS, SCHEMATA, TABLES, VIEWS, TABLE_PRIVILEGES, ) a rendszernek szól INFORMATION_SCHEMA: informáci ciós nézetek n (pl. TABLES, VIEWS, COLUMNS,TABLE_CONSTRAINTS, ) a felhasználóknak szól SQL séma s elemei CATALOG Schema A T:ARUK DEFINITION_SCHEMA T:TABLES INFORMATION_SCHEMA V:TABLES T:VIEWS V:VIEWS USER:U SELECT * FROM INFORMATION_SCHEMA.TABLES 8
SQL elemei Az SQL közel k zelít az erősen típusos t nyelvekhez DOMAIN: egyedi, megkülönb nböztet ztető adattípus tábla mezőjéhez rendelhető típusk pusként CREATE DOMAIN dnév AS típus t CHECK megkötés előnyei: - automatikus megkötések - jelentésk sközeli nevek CREATE DOMAIN eletkor AS INTEGER CHECK (VALUE BETWEEN 18 AND 120); CREATE TABLE DOLGOZO (kod ( INTEGER PRIMARY KEY,.., kor eletkor,..) Az OO elemek bevonásával val jelentősége csökkent SQL elemei ASSERTION: Az összetett, többt bb-tábl blás integritási feltételek telek deklaratív megadási módjam CREATE ASSERTION név n CHECK (feltétel) tel) pénzt nztár kód nyitó záró ptár ért rték Uid forgalom a pénzt p nztárank rankénti nti készletvk szletváltoz ltozás egyezzen meg a forgalommal CREATE VIEW V1 AS SELECT kód, k SUM(COALESCE(F.ért rték,0)) ossz FROM forgalom F RIGTH OUTER JOIN pénzt p nztár P ON P.kód = F.ptár GROUP BY kód; k CREATE ASSERTION A1 CHECK ( NOT EXISTS (SELECT P.kód FROM pénztp nztár P INNER JOIN V1 ON V1.kód = P.kód WHERE (P.záró-P.nyit P.nyitó) <> v1.kód)) időig igényes végrehajtv grehajtás: - minden SQL DML parancs után - csak az érintett táblt blák DML parancsai után 9
Tranzakció elemei SQL tranzakció elemei A konzisztens állapot elérésére re több t műveletnek m együttesen kell lefutnia tranzakció: adatbázis műveletek m egységk gként kezelt sora tranzakció INSERT INTO dolgozo VALUES(1, ); UPDATE dolgozo SET fiz = 0; ROLLBACK; COMMIT elfogad ROLLBACK elvet egyes műveletek m (pl. DDL) rögt gtön végrehajtv grehajtódnak SQL lekérdez rdezés elemei A feltételes teles megjelenítésre is igény jelentkezik, ezért pótolt tolták ezt a hiányoss nyosságot: CASE WHEN feltétel1 tel1 THEN kif1; WHEN feltétel2 tel2 THEN kif2; ELSE kif; END A SELECT parancs projekciós részr szében használhat lható SELECT név, n fiz * (CASE WHEN fiz<1000 THEN 0.1; WHEN fiz BETWEEN 1000 AND 5000 THEN 0.2; ELSE 0.3; END) adó FROM dolgozok; A NULL ért rték kezelésére: COALESCE(kif1,kif2,kif3, ) Az első nem NULL ért rtéket adja vissza 10
NULL ért rték kezelése NULL ért rték NVL 11