210 likes | 310 Views
Adatbázis rendszerek I. Kovács László. Az SQL nyelv speciális elemei. SQL szabványai. Több-lépcsős folyamat a fejlődése. alap DDL, DML, DQL, tranzakció,INDEX. integritási elemek, védelem,VIEW. 1986: ANSI SQL 1987: ISO SQL 1989: ANSI89 1992: SQL92 1999: SQL1999 2003: SQL2003
E N D
Adatbázis rendszerek I Kovács László Az SQL nyelv speciális elemei
SQL szabványai Több-lépcsős folyamat a fejlődése alap DDL, DML, DQL, tranzakció,INDEX integritási elemek, védelem,VIEW 1986: ANSI SQL 1987: ISO SQL 1989: ANSI89 1992: SQL92 1999: SQL1999 2003: SQL2003 2007: ? DOMAIN, CONSTRAINTS, spec. táblák, SELECT-érték OO elemek, aktív elemek,kezelő fv.-ek, programozás, új adattípus SQL OLAP, XML,új adattípus
SQL szabványai Az SQL szabvány több, mint az alap DDL, DML, DQL. modulok SQL/Framework :fogalmi keretek SQL/Foundation :alap utasítá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ő állományok SQL/OLB :beágyazott JSQL SQL/Schemata :séma kezelés SQL/JRT :Java felület SQL/XML :XML felület SQL/MM :multimédia kezelés SQL89: 300 SQL92: 1100 SQL99: 2000 SQL03: 3600 terjedelem
SQL elemei Adat hozzáférés védelem UPDATE .. objektum SELECT .. jog adományozása: GRANT jog ON objektum TO felhasználó jog visszavonása: REVOKE jog ON objektum FROM felhasználó
SQL elemei Objektum azonosítása UPDATE .. objektum SELECT .. séma katalógus adatbázis teljes azonosítás: adatbázis.katalógus.séma.objektum1… ORA1.INFO.TEREMF.ORAK.KEZDES
SQL elemei Hozzáférés hatékonysága UPDATE .. tábla SELECT .. index lehet explicit és implicit index 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)
SQL elemei Beépített függvények név dátum fizetés datum CAST datum AS CHARACTER EXTRACT(YEAR FROM datum) - CURRENT_DATE Numerikus: POSITION(m IN s), CHARAVTER_LENGHT(m), ABS(m) Szöveges: SUBSTRING(m FROM k FOR h), UPPER(m), TRIM(m FROM s)
SQL elemei Speciális elemek A gyakorlat igényel algebrán kívüli elemeket is Dolgozó rendezés: ORDER BY kód név főnök többszintű, hierarchikus lekérdezés: CONNECT BY keresztreferencia előállítása: ROLLUP elágazások: CASE minta illesztés: SIMILAR bővített hivatkozási kör objektum orientált elemek
kép xx (1861-1927): yy (1892)
SQL elemei Séma: objektumok logikai tároló egysége (egy tulajdonosa van) CREATE SCHEMA snév paraméterek DROP SCHEMA snév CASCADE egy felhasználónak több sémája is lehet Katalógus: sémák adminisztrációs egysége tartalmaz egy definíciós és egy információs sémát DEFINITION_SCHEMA: leíró bázistáblák (pl. USERS, SCHEMATA, TABLES, VIEWS, TABLE_PRIVILEGES,…) a rendszernek szól INFORMATION_SCHEMA: információs nézetek (pl. TABLES, VIEWS, COLUMNS,TABLE_CONSTRAINTS,…) a felhasználóknak szól
SQL elemei CATALOG Schema A DEFINITION_SCHEMA INFORMATION_SCHEMA T:ARUK T:TABLES V:TABLES T:VIEWS V:VIEWS USER:U SELECT * FROM INFORMATION_SCHEMA.TABLES
SQL elemei Táblatípusok összefoglalása: tábla alaptábla nézeti CREATE VIEW származtatott CREATE SNAPSHOT deklarált perzisztens CREATE TABLE lokáisan ideiglenes CREATE LOCAL TEMPORARY TABLE globálisan ideiglenes CREATE GLOBAL TEMPORARY TABLE
SQL elemei Az SQL közelít az erősen típusos nyelvekhez DOMAIN: egyedi, megkülönböztető adattípus tábla mezőjéhez rendelhető típusként CREATE DOMAIN dnév AS típus CHECK megkötés előnyei: - automatikus megkötések - jelenté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 jelentősége csökkent
SQL elemei ASSERTION: Az összetett, több-táblás integritási feltételek deklaratív megadási módja CREATE ASSERTION név CHECK (feltétel) a pénztárankénti készletváltozás egyezzen meg a forgalommal CREATE VIEW V1 AS SELECT kód, SUM(COALESCE(F.érték,0)) ossz FROM forgalom F RIGTH OUTER JOIN pénztár P ON P.kód = F.ptár GROUP BY kód; CREATE ASSERTION A1 CHECK ( NOT EXISTS (SELECT P.kód FROM pénztár P INNER JOIN V1 ON V1.kód = P.kód WHERE (P.záró-P.nyitó) <> v1.kód)) pénztár kód nyitó záró ptár érték Uid forgalom időigényes végrehajtás: - minden SQL DML parancs után - csak az érintett táblák DML parancsai után
SQL elemei Hozzáférés védelmi utasítások egy objektum (objektum jog): GRANT SELECT|INSERT|UPDATE|DELETE ON objektum TO felh tetszőleges objektum (privilégium): GRANT művelet TO felh mindenkinek engedélyezve: GRANT művelet ON … TO PUBLIC a kapott jog továbbadható: GRANT … TO … WITH GRANT OPTION | ADMIN OPTION adott jog visszavonása: REVOKE … FROM …
SQL elemei Tranzakció elemei A konzisztens állapot elérésére több műveletnek együttesen kell lefutnia tranzakció: adatbázis műveletek egységként kezelt sora INSERT INTO dolgozo VALUES(1,…); UPDATE dolgozo SET fiz = 0; ROLLBACK; tranzakció COMMIT ROLLBACK egyes műveletek (pl. DDL) rögtön végrehajtódnak elfogad elvet
SQL elemei A feltételes megjelenítésre is igény jelentkezik, ezért pótolták ezt a hiányosságot: CASE WHEN feltétel1 THEN kif1; WHEN feltétel2 THEN kif2; … ELSE kif; END A SELECT parancs projekciós részében használható SELECT név, 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ék kezelésére: COALESCE(kif1,kif2,kif3,…) Az első nem NULL értéket adja vissza
SQL elemei Típus konverzió automatikus konverzió: rokon típusok között (pl. INTEGER-FLOAT) explicit konverzió: átalakítható típusok között CAST (kifejezés AS típus) explicit konverzió OO modellben: konverziós metódusok SQL: CAST (dátum AS CHARACTER) Oracle: TO_CHAR(dátum,’YYYY.MM.DD’) VFP: DTOC(dátum)
kép xx: yy(1916)
A relációs adatmodell Egyedi elemek - összetett kulcsok használata - LOCAL | GLOBAL TEMPORARY TABLE - DOMAIN - CONSTRAINT - DEFFERABLE - INITIALLY DEFERRED - INITIALLY IMMEDIATE - SET CONSTRAINTS IMMEDIATE | DEFFERED - ASSERTION - INDEX - érték megadás SELECT-tel - A SELECT használata a CHECK-ben - REFERENCES tabla(mezo) - REFERENCES t(m) ON DELETE | UPDATE RESTRICT | SET NULL | CASCADE | NO ACTION
kép Rippl-Rónai József: Vörössapkás önarckép (1924)