Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaKornélia Fehérné Megváltozta több, mint 10 éve
1
1 Sramó András 2000. Adatbázis-technológia V. előadás Adatbázis-technológia 5. előadás Az SQL
2
2 Sramó András 2000. Adatbázis-technológia V. előadás Az előadás célja ismertetni az SQL jelentőségét; bemutatni az SQL kialakulásának történetét; bemutatni az adatdefiniálás módját az SQL-ben; bemutatni a különböző adatkezelési módokat, úgymint adatfelvitel, adatmódosítás és -lekérdezés; bemutatni az adatelérési jogok korlátozásának lehetőségeit az SQL-ben; megmutatni, hogy az SQL hogyan használható egy harmadik generációs programnyelven belül.
3
3 Sramó András 2000. Adatbázis-technológia V. előadás Az előadás vázlata Az SQL története. Előnyök és hátrányok. Adatdefiniálás. Adatkezelés. Adatlekérdezés. Adatvezérlés: az adatelérés korlátozása.
4
4 Sramó András 2000. Adatbázis-technológia V. előadás Történet SEQUEL (Structured English QUEry Language): az IBM kísérleti relációs adatbázis-kezelő rendszerének (System R) relációs nyelve. SQL (Structured Query Language): az IBM kereskedelmi adatbázis-kezelő rendszereinek (DB2, SQL/DS) relációs nyelve SQL1: ANSI 1986 SQL2: ISO 1992 SQL3: tervezés alatt
5
5 Sramó András 2000. Adatbázis-technológia V. előadás Az SQL felépítése SQL Adatdefiní- ciós nyelv Adatke- zelő nyelv Adatve- zérlő nyelv CREATE ALTER DROP SELECT UPDATE INSERT DELETE GRANT REVOKE
6
6 Sramó András 2000. Adatbázis-technológia V. előadás Az SQL 1992-es szabványa már egységes lekérdező nyelv SQL Adatdefiní- ciós nyelv Adatke- zelő nyelv Adatve- zérlő nyelv CREATE ALTER DROP SELECT UPDATE INSERT DELETE GRANT REVOKE
7
7 Sramó András 2000. Adatbázis-technológia V. előadás Adatbázis létrehozása CREATE SCHEMA kölcsönző; létrehozza a “kölcsönző” nevű adatbázist. CREATE SCHEMA kölcsönző AUTHORIZATION Fruzsina; létrehozza a “kölcsönző” nevű adatbázist, és ezt az adatbázist a “Fruzsina” azonosítójú felhasználó használhatja. (SQL1: CREATE DATABASE kölcsönző; )
8
8 Sramó András 2000. Adatbázis-technológia V. előadás Adattípusok FLOAT(p) REAL DOUBLE PRECISION INTEGER SMALLINT DECIMAL(p,s) BIT(n) CHARACTER(n) DATE TIME TIMESTAMP
9
9 Sramó András 2000. Adatbázis-technológia V. előadás Táblázat definiálása CREATE TABLE ügyfél ( ügyfélkódCHAR(8)NOT NULL, ügyfélnévCHAR(30)NOT NULL, ügyfélcímCHAR(40), telefonCHAR(10), szdátumDATE, belépésDATE, PRIMARY KEY (ügyfélkód)); CREATE TABLE kölcsönző.ügyfél (...
10
10 Sramó András 2000. Adatbázis-technológia V. előadás Táblázat definiálása idegen kulccsal CREATE TABLE kölcsönzés ( szszámCHAR(6)NOT NULL, ügyfélCHAR(8)NOT NULL, dátumDATENOT NULL, időpontTIMENOT NULL, kidőINT(2), kdíjDEC(10,2), CONSTRAINT f1 PRIMARY KEY (szszám), CONSTRAINT f2 FOREIGN KEY (ügyfél) REFERENCES ügyfél(ügyfélkód)) ON DELETE CASCADE ON UPDATE CASCADE;
11
11 Sramó András 2000. Adatbázis-technológia V. előadás További táblázatok I. CREATE TABLE kazetta ( kazettakódCHAR(10)NOT NULL, kategóriaCHAR(2)NOT NULL, kazettacímCHAR(30)NOT NULL, évINT(4), rendező CHAR(6), PRIMARY KEY (kazettakód), FOREIGN KEY (rendező) REFERENCES személy(személykód));
12
12 Sramó András 2000. Adatbázis-technológia V. előadás További táblázatok II. CREATE TABLE szereplő ( kazettakódCHAR(10)NOT NULL, személykód CHAR(6) NOT NULL, PRIMARY KEY (kazettakód,személykód), FOREIGN KEY (személykód) REFERENCES személy(személykód)); Összetett kulcs
13
13 Sramó András 2000. Adatbázis-technológia V. előadás Adatbázis törlése DROP SCHEMA kölcsönző CASCADE; a “kölcsönző” nevű adatbázis törlése minden tartozékával együtt. DROP SCHEMA kölcsönző RESTRICT; a “kölcsönző” nevű adatbázis törlése csak akkor történik meg, ha az adatbázis üres.
14
14 Sramó András 2000. Adatbázis-technológia V. előadás Táblázat törlése DROP TABLE kölcsönzés CASCADE; a “kölcsönzés” nevű táblázat törlése minden hivatkozásával együtt. DROP TABLE kölcsönzés RESTRICT; a “kölcsönzés” nevű táblázat törlésére csak akkor kerül sor, ha semmilyen hivatkozás nem vonatkozik rá.
15
15 Sramó András 2000. Adatbázis-technológia V. előadás Táblázat módosítása ALTER TABLE kölcsönző.ügyfél ADD t INT(1) DEFAULT 0; a “kölcsönző” nevű adatbázis “ügyfél” nevű táblázatát kiegészítjük egy “t” nevű oszloppal a törzstagság jelzésére. Ennek az oszlopnak az alapértéke 0. ALTER TABLE kölcsönző.ügyfél DROP belépés CASCADE; a “kölcsönző” nevű adatbázis “ügyfél” nevű táblázatából töröljük a “belépés” nevű oszlopot.
16
16 Sramó András 2000. Adatbázis-technológia V. előadás Adatok táblázatba írása INSERT INTO ügyfél VALUES (‘92051802’,’Kiss Pál’, ’József u. 23.’,’454454’); INSERT INTO ügyfél(ügyfélkód, ügyfélnév) VALUES (‘94022303’,’Kiss Katalin’); INSERT INTO ügyfél(ügyfélnév, ügyfélcím) VALUES (’Szabó Sándor’,’Mária u. 16.’);
17
17 Sramó András 2000. Adatbázis-technológia V. előadás Adatok táblázatba írása INSERT INTO ügyfél VALUES (‘92051802’,’Kiss Pál’, ’József u. 23.’,’454454’); INSERT INTO ügyfél(ügyfélkód, ügyfélnév) VALUES (‘94022303’,’Kiss Katalin’); INSERT INTO ügyfél(ügyfélnév, ügyfélcím) VALUES (’Szabó Sándor’,’Mária u. 16.’); Ez az utasítás nem lesz végrehajtva, mert a “szám” nevű mező nem kapott értéket, holott “nemnulla” kulcsként definiáltuk.
18
18 Sramó András 2000. Adatbázis-technológia V. előadás Táblázatsor(ok) törlése DELETE FROM ügyfél WHERE ügyfélnév=‘Szabó János’; DELETE FROM kölcsönzés WHERE dátum<‘1996-01-01’; DELETE FROM kölcsönzés;
19
19 Sramó András 2000. Adatbázis-technológia V. előadás Táblázatsor(ok) módosítása UPDATE kölcsönzés SET ügyfélcím=‘Mária u. 20’ WHERE ügyfélkód=‘92051802’; UPDATE ügyfél SET t=1 WHERE ügyfélkód<‘96010100’;
20
20 Sramó András 2000. Adatbázis-technológia V. előadás A SELECT utasítás általános szerkezete SELECT FROM [ WHERE ] [ GROUP BY ] [ HAVING ] [ ORDER BY ];
21
21 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P0) SELECT * FROM ügyfél; A teljes “ügyfél” táblázat megjelenítése.
22
22 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P1) SELECT * FROM ügyfél WHERE t = 1; Az “ügyfél” táblázatból megjeleníti a törzstagokat. (Relációs algebra: SELECT )
23
23 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P2) SELECT * FROM ügyfél WHERE ügyfélkód>‘95010100’ AND ügyfélkód<‘96010100’; Az “ügyfél” táblázatból az 1995-ben belépett ügyfelek minden adatát megjeleníti. (Relációs algebra: SELECT )
24
24 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P3) SELECT ügyfélnév, ügyfélkód FROM ügyfél; Az “ügyfél” táblázatból az ügyfelek nevét és azonosító kódját jeleníti meg. (Relációs algebra: PROJECT )
25
25 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P4) SELECT ügyfélnév, ügyfélkód FROM ügyfél WHERE t = 1; Az “ügyfél” táblázatból a törzstagok nevét és azonosító kódját jeleníti meg. (Relációs algebra: PROJECT+SELECT )
26
26 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P5) SELECT szszám, kdíj FROM kölcsönzés WHERE ügyfél=‘92051802’ AND dátum<‘1996-03-31’; A “kölcsönzés” táblázatból a 92051802 azonosítójú ügyfél 1996 március 31. előtti kölcsönzéseinek számlaszámát és a kölcsönzési díjat jeleníti meg. (Relációs algebra: PROJECT+SELECT )
27
27 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P6) SELECT ügyfél FROM kölcsönzés; A “kölcsönzés” táblázatból megjeleníti az ügyfél azonosító kódját. (Minden ügyfél annyiszor szerepel, ahányszor kazettát kölcsönzött!)
28
28 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P7) SELECT DISTINCT ügyfél FROM kölcsönzés; A “kölcsönzés” táblázatból megjeleníti az ügyfél azonosító kódját. (Minden ügyfél csak egyszer szerepel!)
29
29 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P8) SELECT * FROM kölcsönzés, ügyfél WHERE ügyfél=ügyfélkód; A “kölcsönzés” táblázatot kiegészíti az “ügyfél” táblázatból az ügyfél minden adatával. (Relációs algebra: NATURAL JOIN ).
30
30 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P9) SELECT szszám, ügyfélnév FROM kölcsönzés, ügyfél WHERE ügyfél=ügyfélkód AND kidő=4; A “kölcsönzés” és “ügyfél” táblázat összekapcsolá- sával azokat a számlaszámokat és ügyfélneveket jeleníti meg, ahol a kölcsönzés 4 órára szólt. (Relációs algebra: NATURAL JOIN+SELECT+PROJECT ).
31
31 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P10) SELECT kölcsönzés.szszám, ügyfél.ügyfélnév FROM kölcsönzés, ügyfél WHERE kölcsönzés.ügyfél=ügyfél.ügyfélkód AND kölcsönzés.kdíj=4; Ugyanazt az eredményt adja, mint az előző példa, csak jobban kihangsúlyoztuk, hogy egy tulajdonság melyik táblázatban található.
32
32 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P11) SELECT DISTINCT dátum FROM kölcsönzés WHERE ügyfél IN (SELECT ügyfélkód FROM ügyfél WHERE szdátum<‘1937-01-01’); Milyen napokon voltak kölcsönözni az 1937 előtt született ügyfelek.
33
33 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P12) SELECT SUM(kdíj), MAX(kdíj), MIN(kdíj), AVG(kdíj) FROM kölcsönzés; A “kölcsönzés” táblázat alapján kiszámolja és megjeleníti a kölcsönzési díjak összegét, a kölcsönzési díjak maximális, minimális és átlagos értékét.
34
34 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P13) SELECT SUM(kdíj), MAX(kdíj), MIN(kdíj), AVG(kdíj) FROM ügyfél, kölcsönzés WHERE ügyfél=ügyfélkód AND t=1; A “kölcsönzés” táblázat alapján kiszámolja és megjeleníti a törzstagok által fizetett kölcsönzési díjak összegét, maximális, minimális és átlagos értékét.
35
35 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P14) SELECT COUNT(*) FROM ügyfél; Az “ügyfél” táblázat sorainak számát, azaz az ügyfelek számát adja.
36
36 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P15) SELECT COUNT(DISTINCT ügyfél) FROM kölcsönzés WHERE dátum=>‘1997-02-01’ AND dátum=<‘1997-02-28’ ; 1997 februárjában hány ügyfél kölcsönzött kazettát.
37
37 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P16) SELECT * FROM kazetta GROUP BY rendező; A “kazetta” táblázat megjelenítése úgy, hogy az filmek a rendezők szerint vannak csoportosítva.
38
38 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P17) SELECT rendező, COUNT(*) FROM kazetta GROUP BY rendező; A “kazetta” táblázat alapján az jelenik meg, hogy egy rendezőnek hány filmje található a kölcsönző-ben.
39
39 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P18) SELECT * FROM kazetta ORDER BY rendező, kazettacím; A “kazetta” táblázat megjelenítése úgy, hogy az azonos rendezőjű filmek egymás után, betűrend-ben jelennek meg, és a rendezők is betűrendben szerepelnek.
40
40 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P19) SELECT ügyfélnév FROM ügyfél WHERE (SELECT COUNT(*) FROM kölcsönzés WHERE ügyfél=ügyfélkód)>=20; A legalább 20 kölcsönzést teljesítő ügyfelek nevét jeleníti meg.
41
41 Sramó András 2000. Adatbázis-technológia V. előadás Példa a SELECT utasításra (P20) SELECT ügyfélnév, COUNT(*) FROM ügyfél, kölcsönzés WHERE ügyfél=ügyfélkód GROUP BY ügyfélkód HAVING COUNT(*)>20; A húsznál több kölcsönzést lebonyolító ügyfelek nevét és kölcsönzéseinek számát jeleníti meg.
42
42 Sramó András 2000. Adatbázis-technológia V. előadás Virtuális táblázatok (látványok, nézetek) definiálása CREATE VIEW teljes kölcsönzés AS SELECT * FROM kölcsönzés, ügyfél WHERE ügyfél=ügyfélkód; A (P8) eredményét virtuális táblázatként definiáljuk. Az így létrehozott nézetek táblázatként viselked-nek, és ugyanúgy használhatók SQL utasítások-ban, kivéve az adatmódosításokat.
43
43 Sramó András 2000. Adatbázis-technológia V. előadás Példa virtuális táblázatra (P21) CREATE VIEW ügyfél95 AS SELECT ügyfélkód, ügyfélnév FROM kölcsönzés, ügyfél WHERE ügyfél=ügyfélkód AND dátum>=1995-01-01 AND dátum<=1995-12-31; Az 1995-ben kölcsönzést teljesítő ügyfelek kódját és nevét tartalmazó nézet létrehozása.
44
44 Sramó András 2000. Adatbázis-technológia V. előadás Példa virtuális táblázatra (P22) CREATE VIEW ügyfél96 AS SELECT ügyfélkód, ügyfélnév FROM kölcsönzés, ügyfél WHERE ügyfél=ügyfélkód AND dátum>=1996-01-01 AND dátum<=1996-12-31; Az 1996-ben kölcsönzést teljesítő ügyfelek kódját és nevét tartalmazó nézet létrehozása.
45
45 Sramó András 2000. Adatbázis-technológia V. előadás Táblázatok egyesítése (P23) SELECT * FROM ügyfél95 UNION SELECT * FROM ügyfél96 ORDER BY ügyfélnév; Az 1995-1996-os kétéves időszakban kölcsönzést teljesítő ügyfelek kódját és nevét tartalmazó lekérdezés. (Relációs algebra: UNION )
46
46 Sramó András 2000. Adatbázis-technológia V. előadás Táblázatok különbsége (P24) SELECT * FROM ügyfél95 EXCEPT SELECT * FROM ügyfél96 ORDER BY ügyfélnév; Azoknak az ügyfeleknek kódját és nevét adja meg az ügyfélnév szerint rendezve, akik 1995-ben kölcsönöztek kazettát, de 1996-ban már nem. (Relációs algebra: DIFFERENCE )
47
47 Sramó András 2000. Adatbázis-technológia V. előadás Táblázatok metszete (P25) SELECT * FROM ügyfél95 INTERSECT SELECT * FROM ügyfél96 ORDER BY ügyfélnév; Azoknak az ügyfeleknek kódját és nevét adja meg az ügyfélnév szerint rendezve, akik 1995-ben is és 1996-ban is kölcsönöztek kazettát. (Relációs algebra: INTERSECTION )
48
48 Sramó András 2000. Adatbázis-technológia V. előadás Adatelérés korlátozása I. Az SQL lehetővé teszi, hogy megfelelő felhasználó- azonosítás mellett az egyes felhasználóknak kü- lönböző jogokat adjunk az adatbázisban tárolt adatok elérését illetően. Az adatelérési privilégiumok a következőek: –SELECT –INSERT –UPDATE –DELETE –REFERENCES
49
49 Sramó András 2000. Adatbázis-technológia V. előadás Adatelérés korlátozása II. A REFERENCES privilégium megengedi a fel- használónak, hogy olyan táblázatot hozzon létre, amely a megnevezett oszlopra hivatkozik. Az INSERT, UPDATE és REFERENCES privilégiumok megadása vonatkozhat egy egész táblázatra, vagy egy táblázat néhány oszlopára. Jogosultság megadása: GRANT utasítás. Jogosultság visszavonása: REVOKE utasítás.
50
50 Sramó András 2000. Adatbázis-technológia V. előadás Példák jogosultság megadására GRANT ALL PRIVILEGES ON ügyfél TO Fruzsina, Viktor; Az ügyfél táblázaton minden jogosultság megadása a Fruzsina és Viktor azonosítójú felhasználóknak. GRANT SELECT ON kazetta TO PUBLIC; A kazetta táblázatban mindenki szabadon kereshet. GRANT UPDATE (év, rendező) ON kazetta TO Fruzsina; A kazetta táblázatban Fruzsina módosíthatja az év és rendező oszlopokat.
51
51 Sramó András 2000. Adatbázis-technológia V. előadás Példák jogosultság visszavonására REVOKE ALL PRIVILEGES ON szereplő FROM Viktor; A szereplő táblázaton minden jogosultság vissza- vonása a Viktor azonosítójú felhasználótól. REVOKE INSERT ON kazetta FROM Viktor; A kazetta táblázatba Viktor nem írhat be új sort. REVOKE UPDATE (kdíj) ON kölcsönzés FROM PUBLIC; A kölcsönzés táblázatban senkisem módosíthatja a kölcsönzési díj értékét.
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.