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



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

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

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

Adattípusok. Max. 2GByte

BEVEZETÉS Az objektum fogalma

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

Adatbázisok I A relációs algebra

Adatbázisok* tulajdonságai

Adattípusok. Max. 2GByte

Adatbázisok I. Az SQL nyelv

LEKÉRDEZÉSEK SQL-BEN. A relációs algebra A SELECT utasítás Összesítés és csoportosítás Speciális feltételek

Adatbázis rendszerek SQL nyomkövetés

Adatbázis használat I. 5. gyakorlat

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

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

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

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

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

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

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

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

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

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

SQL parancsok feldolgozása

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

ADATBÁZISOK I. Az esetleges hibákat kérlek a csongor@csongorbokay.com címen jelezd! Utolsó módosítás: március 20.

Bevezetés: az SQL-be

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

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

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

Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány)

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

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

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

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

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

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

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

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

Adatbázis Rendszerek II. 8. Gyakorló környezet

SQL gyakorló feladatok. 6. Adatbázis gyakorlat április 5.

Adatbázis rendszerek Ea: Esqúel. Structured Query Language


5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

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

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ÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

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

A könyv tartalomjegyzéke

Beszerzési logisztika támogatása az optimális beszállító kiválasztása révén

3. Előadás. Az SQL adatbázisnyelv (Tartalom) Az SQL története. Az SQL felépítése. Adattípúsok. SQL utasítások

Adatbázisok biztonsága


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

LOGISZTIKAI ADATBÁZIS RENDSZEREK BEVEZETÉS

GEIAL Kovács László. GEIAL Kovács László

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

Adatbázis rendszerek Ea: Eskúel. Structured Query Language

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

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

Készítette: Szabóné Nacsa Rozália

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

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

Keskeny Zoltán 2007/08 SQL. Structured Query Language. (gyakorlat az SQL2 szabvány alapján) Keskeny Zoltán tanév

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

Az SQL nyelv. SQL (Structured Query Language = Strukturált Lekérdező Nyelv).

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

ADATBÁZISKEZELÉS ADATBÁZIS

Óravázlat. az ECDL oktatócsomaghoz. 5. modul. Adatbáziskezelés. Krea Kft Budapest, Szőlő u 21. Tel/fax: / krea@krea.

ADATB`ZIS-KEZEL S. SegØdanyag a gyakorlathoz. sszeæll totta: VÆrady Lajos varadyl@math.klte.hu

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

GEIAL Kovács László. GEIAL Kovács László GEIAL Kovács László

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Adatbázis-kezelés. Második előadás

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

1.óra. Bevezetés. Adatmodellezés, elméleti háttér

BEVEZETÉS Az objektum fogalma

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

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


Adatbázis Rendszerek II. 2. Gyakorló környezet

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

Adatbázis Rendszerek II. 3. SQL alapok

Táblakezelés: Open SQL Internal table. Tarcsi Ádám: Az SAP programozása 1.

ADATBÁZIS RENDSZEREK I BEADANDÓ

Tranzakciókezelés PL/SQL-ben

Elemi alkalmazások fejlesztése IV.

Az SQL adatbázisnyelv: DML

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

Debreceni Egyetem Informatikai Kar TANULÓI NYILVÁNTARTÓ SZOFTVER FIREBIRD ADATBÁZIS ALKALMAZÁSÁVAL

Adatbázis-kezelés alapjai SQL 1: DDL, DML. v: B IT MAN 92/1B IT MAN

Dolgozó Kód Név Város Beosztás Belépés Fizetés Osztály. Adatbázis-kezelés alapjai SQL 2: DQL. v: B IT MAN 169/1

Adatok szűrése, rendezése

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

GEIAL Kovács László. GEIAL Kovács László

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

Átírás:

8. Gyakorlat SQL SQL: Structured Query Language; a relációs adatbáziskezelők szabványos, strukturált lekérdező nyelve SQL szabványok: SQL86, SQL89, SQL92, SQL99, SQL3 Az SQL utasításokat mindig pontosvessző határolja, zárja le. Az utasítás több soron keresztül is folytatódhat, csak a pontosvessző jelzi az utasítás végét. Adatbáziskezelők utasításainak csoportosítása: DDL (Data Definition Language) adatdefiníciós nyelv DML (Data Manipulation Language) adatkezelő nyelv DQL (Data Query Language) adatlekérdező nyelv DCL (Data Control Language) adatvezérlő nyelv DDL (Data Definition Language) adatdefiníciós nyelv utasításai: CREATE adatbázis objektum létrehozása (TABLE, VIEW, SNAPSHOT, USER, stb.) Tábla létrehozása: CREATE TABLE tnev (m1 t1 [lok.integ.felt.], m2 t2 [lok.integ.felt],, [glob.integ.felt.]); A táblák létrehozásának sorrendjét a hivatkozások (idegen kulcsok) határozzák meg. Csak már létező táblára lehet hivatkozni! Tábla létrehozása másik táblából történő lekérdezés eredménye alapján: CREATE TABLE tnev AS SELECT ; Ebben az esetben az első tábla integritási feltételei nem kerülnek átmásolásra az újonnan létrehozott táblába. Azokat utólag, a táblaszerkezet módosításával lehet kijelölni. Oracle típusok: number (n [, m]), char (n), date Lokális (egy mezőt érintő) integritási feltételek : PRIMARY KEY elsődleges kulcs REFERENCES tnev kapcsolókulcs valamely másik táblára NOT NULL a mező értékét nem hagyhatjuk üresen UNIQUE mezőérték a táblában egyedi CHECK (feltétel) mezőre megadott ellenőrző feltétel pl. CHECK (ar > 0) DEFAULT ertek alapértelmezett értéket rendelünk a mezőhöz Globális (több mezőt érintő) integritási feltételek: PRIMARY KEY (mezo1, mezo2,..) összetett kulcs FOREIGN KEY (mezo1, mezo2,..) REFERENCES tnev összetett idegen kulcs CHECK (feltétel) több mezőre vonatkozó értékellenőrzés pl. CHECK (netto < brutto) DROP adatbázis objektum megszűntetése DROP TABLE tnev; A táblák törlésének sorrendje a hivatkozások miatt a táblák létrehozási sorrendjének fordítottja!

ALTER adatbázis objektum módosítása ALTER TABLE tnev ADD (ujmezo tipus integ.felt.); - tábla szerkezet módosítása, új mező hozzáadása ALTER TABLE tnev MODIFY (újdefiníció); - tábla egy mezőjének módosítása (neve, típusa, integritási feltétele módosítható) ALTER USER unev IDENTIFIED BY uj_jelszo; - jelszó megváltoztatása Figyelem! A megadott új jelszót a rendszer nem rejti el, begépeléskor kiírja a képernyőre. DML (Data Manipulation Language) adatkezelő nyelv utasításai: INSERT rekord felvitel (egyszerre csak egy rekordot lehet felvinni) INSERT INTO tnev VALUES (ertek1, ertek2, ertek3, ); - a mezők sorrendje meg kell, hogy egyezzen a sémadefinícióban megadott sorrenddel, minden mezőhöz kell értéket rendelni (üres érték = NULL), szigorú típusellenőrzés van INSERT INTO tnev VALUES (m1 = e1, m3 = e3, m2 = e2, ); a mezők sorrendje tetszőleges, minden mezőnek kell értéket adni, szigorú típusellenőrzés INSERT INTO tnev (SELECT ); - a lekérdezés eredménye kerül a táblába, így egy utasítással több rekord is felvihető DELETE rekord törlés DELETE FROM tnev; - minden rekordot törlünk a táblából DELETE FROM tnev WHERE feltetel; - csak a feltételnek megfelelő rekordokat töröljük UPDATE rekord mezőértékeinek módosítása UPDATE tnev SET mezo1 = e1, mezo2 = e2 [WHERE feltetel]; - feltételnek megfelelő rekordok megadott mezőértékeit módosítja (a feltétel megadása opcionális, elhagyásával a tábla összes rekordjában módosul a megadott mező(k) értéke) DQL (Data Query Language) adatlekérdező nyelv: Utasítása: SELECT SELECT [DISTINCT] projekciós rész FROM alapreláció [ WHERE szelekció GROUP BY csoportképző kif. HAVING csoport szelekció ORDER BY mezo1 [ASC/DESC], mezo2 [ASC/DESC] ]; DISTINCT kulcsszó: eredménytáblában ne legyen ismétlődés a mezőértékek között Kérdezzük le a piros autók típusát: SELECT tipus FROM auto WHERE szin= piros ;

Kérdezzük le a piros autók típusát ismétlődés nélkül: SELECT DISTINCT tipus FROM auto WHERE szin= piros ; Projekciós részben megadható: mezőlista, * (minden mező), aggregációs kifejezés, származtatott értékek, konstansok Alapreláció: alaptábla vagy több tábla join-ja Szelekciós feltételben használható: Rekordokra kiértékelhető logikai kifejezés, konstansok Relációs jelek: =, <, >, <> Operátorok: logikai operátorok: AND, OR, NOT halmazműveletek: x BETWEEN a AND b x IN (erteklista), x IN (SELECT ) x Θ ALL (erteklista), x ALL (SELECT ) x Θ ANY (erteklista), x ANY (SELECT ) x IS NULL, x IS NOT NULL EXISTS (SELECT ) x LIKE sztringminta % - tetszőleges számú karakter helyett állhat a sztringmintában _ - egyetlen karakter helyett állhat a sztringmintában Eredményrekordok rendezése: alapértelmezés szerint az adott mező szerinti növekvő (ASC) sorrendben történik A relációs algebra műveleteinek SQL megfelelői: Relációs algebra: Π projekciós rész (reláció) Π projekciós rész (σ feltétel (reláció)) Π projekciós rész (σ feltétel ( r1 join feltétel r2)) Γ projekciós rész csop.képz.alapja (σ feltétel (reláció)) σ csoport szelekció (Γ projekciós rész csop.képz.alapja (σ feltétel (reláció))) Kivonás: r1 \ r2 Metszet: r1 r2 Unió: r1 + r2 SQL SELECT: SELECT projekciós rész FROM reláció WHERE feltétel AND join feltétel GROUP BY csoportképzés alapja HAVING csoport szelekció (SELECT ) minus (SELECT ); (SELECT ) intersect (SELECT ); (SELECT ) union (SELECT ); Feladatok DDL, DML gyakorlására: Adott két reláció: EMBER [id, név, város] AUTO [rsz, tulaj, tipus, szin, ar] Adjuk meg az alábbi SQL utasításokat: 1. Hozzuk létre a táblákat. 2. Módosítsuk az autó tábla szerkezetét, vigyünk fel egy évjárat mezőt.

3. Vigyünk fel 2-2 rekordot a táblákba. 4. Hozzunk létre egy MISKOLCIEMBEREK táblát, ahová átmásoljuk az emberek táblából a miskolciakat. A táblaszerkezet módosításával adjuk meg az integritási feltételeket. 5. Hozzunk létre egy MISKOLCIAUTO táblát az autó táblával azonos szerkezettel. A tábla feltöltését úgy végezzük el, hogy a miskolci emberek autóit vigyük fel. 6. Növeljük a piros autók árát 10%-al. 7. Töröljük a piros autókat. 8. Töröljük a táblákat. 1. CREATE TABLE ember ( id char(8) primary key, nev char(15) not null, varos char(20) ); CREATE TABLE auto ( rsz char(6) primary key, tulaj references ember, tipus char(10), szin char(10), ar number(8) check (ar > 0) ); 2. ALTER TABLE auto ADD ( evjarat number(4) ); 3. INSERT INTO ember VALUES ( 111111AA, Kiss Ferenc, Miskolc, ); INSERT INTO ember VALUES ( 222222BB, Nagy Lajos, null ); INSERT INTO auto VALUES ( 111aaa, 111111AA, Skoda, piros, 2500000, 2005 ); INSERT INTO auto VALUES ( 222aaa, 111111AA, VW, fekete, 3000000, 2007 ); 4. CREATE TABLE miskolciember AS SELECT * FROM ember WHERE varos= Miskolc ; ALTER TABLE miskolciember ADD ( primary key(id) ); ALTER TABLE miskolciember ADD ( not null(nev) ); 5. CREATE TABLE miskolciauto ( rsz char(6) primary key, tulaj references miskolciember, tipus char(10), szin char(10), ar number(8) check (ar > 0) ); INSERT INTO miskolciauto ( SELECT * FROM auto WHERE tulaj IN ( SELECT id FROM miskolciember )); 6. UPDATE auto SET ar = ar*1.1 WHERE szin= piros ; 7. DELETE FROM auto WHERE szin= piros ; 8. DROP TABLE miskolciauto; DROP TABLE auto; DROP TABLE miskolciember; DROP TABLE ember; Megjegyzés: A WHERE feltételben megadott SELECT utasítást al-select-nek nevezzük.

Feladatok DQL gyakorlására: Adott két reláció: EMBER [id, név, város] AUTO [rsz, tulaj, tipus, szin, ar] 1. A Fiat típusú autók átlagára. SELECT AVG(ar) FROM auto WHERE tipus= Fiat ; 2. Azon emberek neve ábécé sorrendben, akiknek van Fiat autója. SELECT nev FROM ember e, auto a WHERE e.id=a.tulaj AND tipus= Fiat ORDER BY nev; SELECT nev FROM ember WHERE id IN (SELECT tulaj FROM auto WHERE tipus= Fiat ) ORDER BY nev; 3. Kik azok az emberek, akiknek nincs Fiat autója. SELECT nev FROM ember WHERE id NOT IN (SELECT tulaj FROM auto WHERE tipus= Fiat ); (SELECT nev FROM ember) MINUS (SELECT nev FROM ember e, auto a WHERE e.id=a.tulaj AND tipus= Fiat ); 4. A Fiat autók átlagáránál olcsóbb autók darabszáma. SELECT COUNT(*) FROM auto WHERE ar < (SELECT AVG(ar) FROM auto WHERE tipus= Fiat ); 5. A Fiat autók átlagáránál drágább autók tulajdonosainak a neve. SELECT nev FROM ember e, auto a WHERE e.id=a.tulaj AND ar > (SELECT AVG(ar) FROM auto WHERE tipus= Fiat ); 6. A legolcsóbb Fiat típusú autó tulajdonosának neve és címe. SELECT nev, varos FROM ember e, auto a WHERE e.id=a.tulaj AND ar = (SELECT MIN(ar) FROM auto WHERE tipus= Fiat ); 7. Mely városokban van 2-nél kevesebb Fiat autó. SELECT varos, COUNT(*) db FROM auto a, ember e WHERE e.id=a.tulaj AND tipus= Fiat GROUP BY varos HAVING COUNT(*)<2; DCL (Data Control Language, adatvezérlő nyelv) utasítások Tranzakciókezelő utasítások: COMMIT; - műveletek eredményének véglegesítése ROLLBACK; - műveletek eredményének visszagörgetése

A DDL utasítások nem tranzakció hatáskörben hajtódnak végre, azaz azonnal véglegesítődnek. Az RDBMS rendszer beállításától függően lehet, hogy minden utasítás automatikusan véglegesítődik (AUTOCOMMIT). Védelemmel, jogosultságokkal kapcsolatos utasítások: GRANT müvelet ON objektum TO felhaszn. [WITH GRANT OPTION]; adott felhasználónak (PUBLIC = mindenki) a megadott adatbázis objektumra valamilyen jog adása. Jogok: SELECT (olvasási), UPDATE (módosítási), INSERT (beszúrási), DELETE (törlési) WITH GRANT OPTION: felhasználó a kapott jogot továbbadhatja másoknak. REVOKE jog ON objektum FROM felhasználó; jog visszavonása felhasználótól, (ALL = minden jog) Kérdés: Tegyük fel, hogy Peter felhasználó engedélyezi az Auto táblájának módosítását Feri felhasználónak, és Feri ezt a jogát továbbadhatja és tovább is adja Laci felhasználónak. Ekkor ha Peter vissza akarja vonni az Auto tábla módosítási jogát: 1) kitől tudja visszavonni, egyáltalán tudja-e, hogy Feri ki(k)nek adta tovább a megkapott jogot és 2) a visszavonás után tudja-e Laci módosítani a táblát?