Adatbázis tartalmának módosítása. SQL DML utasítások

Hasonló dokumentumok
Adatbázis tartalmának módosítása

Adatbázis tartalmának módosítása (DML), az adatbázis-kezelı rendszerek felépítése,

9.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Az adatbázisrendszerek világa

Az SQL adatbázisnyelv: DML

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Bevezetés: az SQL-be

6.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

WHERE záradék (további lehetıségek) SQL specialitások, nem írhatók át relációs algebrába: LIKE. NULL értékek. Az ismeretlen (unknown) igazságérték

SQL DDL-2 (aktív elemek) triggerek

ADATBÁZISOK: TAN7.EA témaköre SQL DDL, DML, DCL, Tranz.kez.

Tankönyv példák kidolgozása

Lekérdezések az SQL-ben 1.rész

SQL DDL-1: táblák és megszorítások

Lekérdezések az SQL-ben 2.rész

SQL DDL: Táblák, megszorítások (constraints), triggerek, nézettáblák

5.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Információs rendszerek Adatbázis-kezelés

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

3.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Lekérdezések az SQL-ben 1.rész

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Bevezetés: Relációs adatmodell

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

Megszorítások. AB1_06A_Megszorítások - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

Bevezetés: Relációs adatmodell

Adatbázisok elmélete 9. előadás

Tranzakciók, nézettáblák, indexek. Párhuzamos folyamatok irányítása Virtuális és materializált nézettáblák Az adathozzáférés felgyorsítása

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Relációs algebra 2.rész példák

ADATBÁZIS-KEZELÉS. Adatbázis-kezelő rendszerek

Adatbázisok elmélete 9. előadás

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Nézetek és indexek. AB1_06C_Nézetek_Indexek - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

2.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

Adatbázis kezelés Delphiben. SQL lekérdezések

Adatbázisok I. Jánosi-Rancz Katalin Tünde 327A 1-1

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Adatbázisok tavaszi félév Vizsgatételsor

Bevezetés: Relációs adatmodell

Tervezés: Egyed-kapcsolat modell és az SQL DDL: táblák, nézetek

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

Több táblára vonatkozó lekérdezések Relációs algebra és SQL SELECT

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

Relációs algebrai lekérdezések átírása SQL SELECT-re (példák)

SQL bevezetés. Select-From-Where záradékok Több relációt tartalmazó lekérdezések Alkérdések

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

Adatbázis használat I. 5. gyakorlat

BEVEZETÉS Az objektum fogalma

B I T M A N B I v: T M A N

Feladatok A mai előadáson: Tankönyv -- Termékek feladatai:

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Relációs algebra 1.rész alapok

Adatbázisok elmélete 10. előadás

Tranzakciók az SQL-ben

Relációs adatbázisok tervezése ---2

A relációs algebra egy speciális algebra, amely néhány egyszerű, de hathatós. operandusok. Egy reláció megadható a nevével vagy közvetlenül, sorainak

Tranzakciókezelés PL/SQL-ben

Adatbázis-kezelés. Harmadik előadás

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

Adatbázis rendszerek SQL nyomkövetés

Programozás. Adatbázis-kezelés (alapok) Fodor Attila

Adatbázisok* tulajdonságai

Adattípusok. Max. 2GByte

Adatbázisok-1 előadás

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

Adattípusok. Max. 2GByte

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

SQL parancsok feldolgozása

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

Adatbázis-kezelés, információs-rendszerek

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Nézetek és indexek. 8. fejezet Nézettáblák

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Csima Judit szeptember 6.

ABR ( Adatbázisrendszerek) 2. Előadás : Műveletek a relációs modellben

Adatbázisok elmélete 1. előadás

Adatbázisok elmélete

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

Adatbázisok elmélete 12. előadás

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

Adatbázisok elmélete 1. előadás

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

Adatbázisok (relációs, objektum relációs, NoSQL) Adatbáziskezelő rendszerek Adatbázisok felépítése Adatbázisok tervezése

Adatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31

Adatbázis-kezelés alapok Adatbázisok című tárgyhoz, ismétlés kapcsán


4. Előadás Az SQL adatbázisnyelv

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

Átírás:

Adatbázis tartalmának módosítása Tankönyv: Ullman-Widom: SQL DML utasítások Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 6.3. Alkérdések a záradékokban (folyt) (where, having és group by) 6.5. Változtatások az adatbázisban: SQL DML adatkezelő utasítások: INSERT, DELETE, UPDATE 1.fejezet: Adatbázis-kezelő rendszerek (alapfogalmak) 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Alkérdések A FROM listán és a WHERE záradékban (valamint a GROUP BY HAVING záradékában) zárójelezett SFW SELECT-FROM-WHERE utasításokat (alkérdéseket) is használhatunk. Szintaktikus alakja: zárójelbe kell tenni a lekérdezést Hol használható? Ott, ahol relációnevet használunk: (1) WHERE és HAVING záradékban: kifejezésekben, feltételekben (2) FROM listában: új listaelem (rel.név változó SQL-ben) (lekérdezés) [AS] sorváltozó Ez felel meg annak, ahogyan a relációs algebrában tetsz.helyen használhattuk a lekérdezés eredményét. 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 2

Alkérdések használata FROM listán FROM záradékban alkérdéssel létrehozott ideiglenes táblát is megadhatunk. Ilyenkor a legtöbb esetben meg kell adnunk a sorváltozó nevét. Szintaktikus alakja: (lekérdezés) [AS] sorváltozó Szemantikája: A FROM záradékban kiértékelődik az alkérdés, utána a sorváltozót ugyanúgy használjuk, mint a közönséges adatbázis relációkat. Példa: Keressük meg a Joe s bár vendégei által kedvelt söröket (a feladatnak sok megoldása van) 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 3

Alkérdések használata FROM listán FROM záradékban alkérdéssel létrehozott ideiglenes táblát is megadhatunk. Ilyenkor a legtöbb esetben meg kell adnunk a sorváltozó nevét. Példa: Keressük meg a Joe s bár vendégei által kedvelt söröket. SELECT sör FROM Szeret, (SELECT név FROM Látogat WHERE bár = Joe s bar )JD WHERE Szeret.név = JD.név; Sörivók, akik látogatják Joe s bárját. 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 4

Ismétlés: Alkérdések a WHERE záradékban Fontos! Ugyanezt használjuk a mai anyagban SQL DML utasítások WHERE záradékában! WHERE és HAVING záradékban: (i) Az alkérdés eredménye egyetlen skalárérték, vagyis az alkérdés olyan, mint a konstans, ami egy új elemi kifejezésként tetszőleges kifejezésben használható. (ii) Skalár értékekből álló multihalmaz logikai kifejezésekben használható: [NOT] EXISTS (lekérdezés) kifejezés [NOT] IN (lekérdezés) kifejezés Θ [ANY ALL] (lekérdezés) (iii) Teljes, többdimenziós tábla a visszatérő érték: [NOT] EXISTS (lekérdezés) (kif 1, kif n ) [NOT] IN (lekérdezés) 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 5

Emlékeztetı: Példa csoportosításra SELECT onev, AVG(fizetes) + 100 emelt FROM dolgozo d, osztaly o WHERE d.oazon=o.oazon AND telephely='bp' GROUP BY o.oazon, onev HAVING COUNT(dkod) > 3 ORDER BY onev; τ onev (π onev,átlagfiz+100 emelt (σ COUNT(dkod)>3 (γ o.oazon,onev, AVG(fizetes), COUNT(dkod) (σ telephely= Bp (d o))))) --- HF: Az operátorok egymás utáni alkalmazását kifejezésfa formájában is rajzolhatjuk fel! 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 6

Példa alkérdésre a HAVING-ben --1 Felszolgál(söröző, sör, ár) és Sörök(név, gyártó) táblák felhasználásával adjuk meg az átlagos árát azon söröknek, melyeket legalább három sörözőben felszolgálnak, vagy Pete a gyártójuk. 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 7

Példa alkérdésre a HAVING-ben --2 SELECT sör, AVG(ár) FROM Felszolgál GROUP BY sör HAVING COUNT(söröző) >= 3 OR sör IN (SELECT név FROM Sörök WHERE gyártó = Pete ); (HAVING ) Sör csoportok, Melyeket legalább három nem-null bárban árulnak, Vagy Pete a gyártójuk. (SELECT ) Sörök, melyeket Pete gyárt (ez az Ullman mo., de H.F.: más mo-okkal 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 8

Adatbázis tartalmának módosítása Tankönyv 6.5. Változtatások az adatbázisban A módosító utasítások nem adnak vissza eredményt, mint a lekérdezések, hanem az adatbázis tartalmát változtatják meg. 3-féle módosító utasítás létezik: INSERT - sorok beszúrása DELETE sorok törlése UPDATE sorok komponensei értékeinek módosítása 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 9

Beszúrás (insert into) Két alakja van: 1.) ha egyetlen sort szúrunk be: INSERT INTO <reláció> VALUES ( <konkrét értékek listája> ); 2.) ha több sort, egy lekérdezés eredményét visszük fel alkérdés segítségével: INSERT INTO <reláció> ( <alkérdés> ); 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 10

Beszúrás, attribútumok megadása Példa: A Szeret táblába beírjuk, Zsu szereti a Bud sört. INSERT INTO Szeret VALUES( Zsu, Bud ); A reláció neve után megadhatjuk az attribútumait. Ennek alapvetően két oka lehet: 1. elfelejtettük, hogy a reláció definíciójában, milyen sorrendben szerepeltek az attribútumok. 2. Nincs minden attribútumnak értéke, és azt szeretnénk, ha a hiányzó értékeket NULL vagy default értékkel helyettesítenék. Példa: INSERT INTO Szeret(sör, név) VALUES( Bud, Zsu ); 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 11

Default értékek megadása A CREATE TABLE utasításban az oszlopnevet DEFAULT kulcsszó követheti és egy érték. Ha egy beszúrt sorban hiányzik az adott attribútum értéke, akkor a default értéket kapja. CREATE TABLE Sörivók( név CHAR(30) PRIMARY KEY, cím CHAR(50) DEFAULT Sesame St telefon CHAR(16) ); INSERT INTO Sörivók(név) VALUES( Zsu ); Az eredmény sor: név cím telefon Zsu Sesame St NULL 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 12

Több sor beszúrása Egy lekérdezés eredményét is beszúrhatjuk: INSERT INTO <reláció> ( <alkérdés> ); A Látogat(név, söröző) tábla felhasználásával adjuk hozzá a LehetBarát(név) táblához Zsu lehetséges barátait, vagyis azokat a sörivókat, akik legalább egy olyan sörözőt látogatnak, ahova Zsu is szokott járni. 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 13

Megoldás: Több sor beszúrása (SELECT) a másik sörivó INSERT INTO LehetBarát (SELECT l2.név FROM Látogat l1, Látogat l2 WHERE l1.név = Zsu AND l2.név <> Zsu AND l1.söröző = l2.söröző ); (FROM) névpárok: az első Zsu, a második nem Zsu, de van olyan bár, amit mindketten látogatnak. 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 14

Tk.Példa INSERT INTO utasításra A lekérdezést teljesen ki kell értékelni, mielőtt a sorokat beszúrnánk. Tankönyv 6.36 példa: új stúdiók beszúrása INSERT INTO Stúdió (név) (SELECT DISTINCT stúdiónév FROM Filmek WHERE stúdiónév NOT IN (SELECT név FROM Stúdió)); 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 15

Törlés (delete) A törlendő sorokat egy WHERE feltétel segítségével adjuk meg: DELETE FROM <reláció> WHERE <feltétel>; Példa: DELETE FROM Szeret WHERE nev = Zsu AND sör = Bud ; Az összes sor törlése: DELETE FROM Szeret; 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 16

Példa: Több sor törlése A Sörök(név, gyártó) táblából töröljük azokat a söröket, amelyekhez létezik olyan sör, amit ugyanaz a cég gyártott. 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 17

Példa: Több sor törlése A Sörök(név, gyártó) táblából töröljük azokat a söröket, amelyekhez létezik olyan sör, amit ugyanaz a cég gyártott. DELETE FROM Sörök s WHERE EXISTS ( SELECT név FROM Sörök WHERE gyártó = s.gyártó AND név <> s.név); (WHERE) azok a sörök, amelyeknek ugyanaz a gyártója, mint az s éppen aktuális sorának, a nevük viszont különböző. 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 18

A törlés szemantikája Tegyük fel, hogy az Anheuser-Busch csak Bud és Bud Lite söröket gyárt. Tegyük fel még, hogy s sorai közt a Bud fordul elő először. Az alkérdés nem üres, a későbbi Bud Lite sor miatt, így a Bud törlődik. Kérdés: a Bud Lite sor törlődik-e? 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 19

A törlés szemantikája Válasz: igen, a Bud Lite sora is törlődik. A törlés ugyanis két lépésben hajtódik végre. 1. Kijelöljük azokat a sorokat, amelyekre a WHERE feltétele teljesül. 2. Majd töröljük a kijelölt sorokat. 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 20

Módosítás (update) Bizonyos sorok bizonyos attribútumainak módosítása. UPDATE <reláció> SET <attribútum értékadások listája> WHERE <sorokra vonatkozó feltétel>; Fecó telefonszámát 555-1212-re változtatjuk (Fecó itt egy sörivó neve): UPDATE Sörivók SET telefon = 555-1212 WHERE név = Fecó ; 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 21

Példa: Több sor módosítása Legfeljebb 4 dollárba kerülhessenek a sörök: UPDATE Felszolgál SET ár = 4.00 WHERE ár > 4.00; Olcsó sörök árát duplázzuk UPDATE Felszolgál SET ár = 2 * ár WHERE ár < 1.00; 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 22

Tk.Példa UPDATE utasításra Tankönyv 6.39 példa: UPDATE GyártásIrányító SET név = Ig. név WHERE azonosító IN (SELECT elnökazon FROM Stúdió) 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 23

Adatbázis-kezelı rendszerek felépítése Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 1.fejezet: Az adatbázis-kezelő rendszerek (DBMS) felépítése, alapfogalmak, ACID tranzakciók 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 24

Az adatbázisrendszerek világa Tk.1.fejezete Az adatbázis-kezelő rendszerek áttekintése Adatbázisok-1 kurzuson mit láttunk eddig és mit fogunk venni az adatbázisrendszerek világából? Adatbázist, adatok gyűjteményét kezeli, relációs modell típus: sortípus, gyűjtemény: reláció Hogyan tervezzük meg milyen gyűjteményünk legyen? Lesz majd tervezés: E/K modell, UML diagramok, Relációs adatbázis sématervezés (FF, TÉF, NF) Metaadatok kezelése: DDL sémaleíró nyelv Táblák tartalmának lekérdezése (select) és módosítása: insert-delete-update: DML adatkezelő nyelv Lekérdezések feldolgozása: alap és kiterjesztett relációs algebra, SQL: SELECT, program (SQL/PSM, PL/SQL) 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 25

Adatbázis-kezelés: (1) Adatbázis-kezelés (1) Háttértárolón tárolt, nagy adatmennyiség hatékony kezelése (lekérdezése, módosítása) (2) Adatmodell támogatása (3) Adatbázis-kezelő nyelvek támogatása (4) Több felhasználó támogatása (5) Adatvédelem, adatbiztonság (6) Tranzakció-kezelés (7) Konkurencia-kezelés (8) Naplózás és helyreállíthatóság (9) Lekérdezések végrehajtásának optimalizálása 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 26

(2) Adatmodell támogatása Az adatmodell a valóság fogalmainak, kapcsolatainak, tevékenységeinek magasabb szintű ábrázolása File-kezelés indexekkel együtt, ezt váltotta fel a CODASYL szabvány, hálós adatmodell (hatékony keresés) Hierarchikus adatmodell (apa-fiú kapcsolatok gráfja) Ted Codd - Relációs adatmodell (táblák rendszere, könnyen megfogalmazható műveletek) Objektum-orientált adatmodell (az adatbázis-kezelés funkcionalitásainak biztosítása érdekében gyakran relációs adatmodellre épül), + Objektum-relációs adatmodell Logikai adatmodell (szakértői rendszerek, tények és következtetési szabályok rendszere) Dokumentumok - Félig strukturált adatmodell, az XML (szabvány adatcsereformaként jelent meg) 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 27

(3) Adatbázis-kezelı nyelvek támogatása SQL relációs (és objektum-relációs) adatbázis-kezelő szabvány nyelv, fontosabb szabványok: SQL86, SQL89, SQL92 (SQL2), SQL:1999 (SQL3), SQL: 2003, SQL:2006, SQL:2008 DDL (Data Definition Language) adatdefiniáló (sémaleíró) nyelv: sémák, adatstruktúrák megadása, objektumok létrehozása, módosítása, törlése: CREATE, ALTER, DROP DML (Data Manipulation Lang.) adatkezelő és lekérdező nyelv: INSERT, DELETE, UPDATE és SELECT DCL (Data Control Lang.) adatvezérlő nyelv, jogosultságok kiosztása és visszavonása: GRANT, REVOKE Tranzakció-kezelés: COMMIT, ROLLBACK 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 28

(4) Több felhasználó támogatása Felhasználói csoportok. Kulcsemberek: DBA adatbázis-rendszergazda felügyeli az adatbázis-példányokat és adatbázis-szervereket felépíti a rendszert, implementálja és optimális adatbázis-megoldást biztosít Adatbázis-tervező (sématervezés) Alkalmazás-fejlesztő, programozó (kódolás) Felhasználók (akik használják a rendszert) 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 29

(5) Adatvédelem, adatbiztonság Jogosultságok (objektumok olvasása, írása, módosítása, készítése, törlése, jogok továbbadása, jogok visszavonása) GRANT és REVOKE utasítás Jogosultságok tárolása rendszertáblákban történik Jogosultságok kezelése, felhasználók, jelszavak, hozzáférési jogok Adatbázissémák korlátozása (virtuális) nézettáblák segítségével Tárolt adatok, hálózati adatforgalmak titkosítása (nagy prímszámok, RSA, DES) 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 30

(6) Tranzakció-kezelés Tranzakció: adatkezelő műveletekből (adategység írása, olvasása) álló sorozat Cél: tranzakciók párhuzamos végrehajtása T1: T2: Read S S:= S+1 Write S idő Read S S:= S-1 Write S Tranzakció = olyan folyamat, ami adatbázis lekérdezéseket, módosításokat tartalmaz. Az utasítások egy értelmes egészt alkotnak. Egyetlen utasítást tartalmaznak, vagy az SQL-ben explicit módon megadhatóak. 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 31

(6) Miért van szükség tranzakciókra? Az adatbázis rendszereket általában több felhasználó és folyamat használja egyidőben. Lekérdezések és módosítások egyaránt történhetnek. Az operációs rendszerektől eltérően, amelyek támogatják folyamatok interakcióját, az adatbázis rendszereknek el kell különíteniük a folyamatokat. 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 32

(6) Példa: rossz interakció Egy időben ketten töltenek fel 100 dollárt ugyanarra a számlára ATM-en keresztül. Az adatbázis rendszernek biztosítania kell, hogy egyik művelet se vesszen el. Ezzel szemben az operációs rendszerek megengedik, hogy egy dokumentumot ketten szerkesszenek egyidőben. Ha mind a ketten írnak, akkor az egyik változtatás elvész (elveszhet). 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 33

(6) Tranzakciók Tranzakció = olyan folyamat, ami adatbázis lekérdezéseket, módosításokat tartalmaz. Az utasítások egy értelmes egészt alkotnak. Egyetlen utasítást tartalmaznak, vagy az SQLben explicit módon megadhatóak. 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 34

(6) A tranzakciók ACID tulajdonságai Atomiság (atomicity): a tranzakció egységesen lefut vagy nem, vagy az összes vagy egy utasítás sem hajtódik végre. Konzisztencia (consistency): a tranzakció futása után konzisztens legyen az adatbázis, megszorításokkal, triggerekkel biztosítjuk. Elkülönítés (isolation): párhuzamos végrehajtás eredménye egymás utáni végrehajtással egyezzen meg Tartósság (durability): a befejezett tranzakció eredménye rendszerhiba esetén sem veszhet el 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 35

(6) COMMIT és ROLLBACK A COMMIT utasítás a tranzakció sikeres befejeződését eredményezi. Egy sikeresen befejeződött tranzakció a kezdete óta végrehajtott utasításainak módosításait tartósan rögzíti az adatbázisban vagyis a módosítások véglegesítődnek. A ROLLBACK utasítás megszakítja a tranzakció végrehajtását, és annak sikertelen befejeződését eredményezi. Az így befejezett tranzakció SQL utasításai által végrehajtott módosításokat a rendszer meg nem történtekké teszi Vagyis az összes utasítás visszagörgetésre kerül, a módosítások nem jelennek meg az adatbázisban. 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 36

(7) Konkurencia-kezelés Zárolások (Lock, Unlock) T1: (Lock S, Read S, S:=S+1, Write S, Unlock S) T2: (Lock S, Read S, S:=S-1, Write S, Unlock S) A zár kiadásához meg kell várni a zár feloldását. Csökken a párhuzamosíthatóság Zárak finomsága (zárolt adategység nagysága, zárolás típusa) növeli a párhuzamosíthatóságot Holtpont probléma: Lock A Read A Lock B Read B C:=A+B. Lock B Read B Lock A Read A D:=A+B.. T1 vár T2-re B miatt T2 vár T1-re A miatt 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 37

(8) Naplózás és helyreállítás Szoftver- vagy hardverhiba esetén az utolsó konzisztens állapot visszaállítása Rendszeres mentések Statikus adatbázis (módosítás nem gyakori) Dinamikus adatbázis (módosítás gyakori) Naplóállományok Összefügg a tranzakció-kezeléssel 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 38

(9) Lekérdezések végrehajtása optimalizálás SQL lekérdezés elemzés átalakítás szabályok alkalmazása várható méretek becslése fizikai tervek készítése {FT1,FT2,...} költségek becslése {(FT1,K1),(FT2,K2),...} FTi Elemző fa logikai lekérdező terv javított logikai lekérdező terv logikai lekérdező terv és méretek Statisztikák a legjobb kiválasztása végrehajtás eredmény

Adatbázis-kezelık részei Lekérdezés-feldolgozó Lekérdezés szintaktikai ellenőrzése Adatbázis-objektumok létezésének, és a hozzáférési jogoknak az ellenőrzése (metaadatbázis, rendszertáblák) Lekérdezés optimális átfogalmazása Végrehajtási tervek készítése Az adatstruktúrák, méretek statisztikái alapján várhatóan minimális költségű végrehajtási terv kiválasztása Az optimális végrehajtási terv lefuttatása Tranzakció-kezelő: Tranzakciók párhuzamos végrehajtásának biztosítása (atomosság, következetesség, elkülönítés, tartósság) Tárkezelő és pufferkezelő fizikai adatstruktúrák, táblák, indexek, pufferek kezelése 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 40

Adatbázis-kezelı rendszer felépítése Forrás: Elmasri-Navathe: Fundamentals of Database Systems 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 41

Adatbázis-kezelı rendszer felépítése Ullman-Widom Tankönyv 1.1. ábra Egy adatbázis-kezelő rendszer részei 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 42

Kérdés/Válasz Köszönöm a figyelmet! Kérdés/Válasz? Gyakorlás a 5EA-hoz: Több táblára (DEPT és EMP tábla) vonatkozó lekérdezésekre példák, összekapcsolások. Házi feladat: Oracle Példatár 3.fejezet feladatai, összekapcsolások és alkérdések használata, de a hierarchikus és rekurzív lekérdezések még nem: http://people.inf.elte.hu/sila/eduab/feladatok.pdf 05ea_Attekintes // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 43