Adatbázisok 8. gyakorlat SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT 2015. október 26. 2015. október 26. Adatbázisok 1 / 17
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óak az utasításai DDL (Data Denition Language) - adatstruktúra deniáló utasítások DML (Data Manipulation Language) - adatokon végezhet utasítások 2015. október 26. Adatbázisok 2 / 17
SQL szintaxis Kisbet k és nagybet k egyenérték ek a nyelv alapszavaiban Az utasítások sorfolytonosan írhatóak, az utasítások végét a ; jelzi Változók nincsenek, tábla- és oszlopnevekre lehet hivatkozni Pl. tábla.oszlop Alias név megadása: régi_név AS új_név Szövegkonstansok a 'jelek között' Relációjelek, logikai m veletek lsd. el adás 2015. október 26. Adatbázisok 3 / 17
Adatbázis létrehozása CREATE DATABASE adatbazis_neve Az adatbázis használata pl. MySQL adatbáziskezel rendszernél mysql> use adatbazis_neve Innent l kezdve az összes SQL utasítás ezen az adatbázison lesz értelmezve 2015. október 26. Adatbázisok 4 / 17
Relációsémák deniálása CREATE TABLE táblanév ( oszlopnév adattípus [feltételek],......, oszlopnév adattípus [feltételek], [táblafeltételek] ); Az adattípushoz a DEFAULT érték megadásával alapértelmezett érték deniáható (egyébként alapértelmezetten NULL) 2015. október 26. Adatbázisok 5 / 17
Adattípusok INT(n): egész szám, n darab számjegy CHAR(hossz): hossz hosszú karaktersorozat, x hosszú VARCHAR(hossz): változó hosszú, de maximálisan hossz hosszú karaktersorozat DATE: dátum: pl. '1988-12-21' TIME: id pont (óra, perc, másodperc) pl. 8:18:22 REAL: valós szám BIT(hossz): hossz darab bit 2015. október 26. Adatbázisok 6 / 17
Feltételek Egy adott oszlopra vonatkozó feltételek: PRIMARY KEY: els dleges kulcs UNIQUE: kulcs REFERENCES tábla(oszlop)[on-feltételek]: küls kulcs Táblafeltételek: PRIMARY KEY: els dleges kulcs UNIQUE: kulcs FOREIGN KEY(oszloplista) REFERENCES tábla(oszloplista): küls kulcs Ha a (küls ) kulcs több oszlopból áll, akkor csak táblafeltétel formájában adható meg! 2015. október 26. Adatbázisok 7 / 17
ON-feltételek A tábla módosításakor a deniált kulcsfeltételek automatikusan ellen rzésre kerülnek Küls kulcsok esetén szabályozható a rendszer viselkedése: Legyen T 1 a hivatkozó tábla, T 2 a hivatkozott tábla ON UPDATE CASCADE = ha T 2 egy sorában változik a a kulcs értéke, akkor a rá való T 1 -beli hivatkozások is megfelel en módosulnak ON DELETE CASCADE = ha T 2 -ben törlünk egy sort, akkor T 1 -ben is törl dnek a rá hivatkozó sorok ON UPDATE SET NULL = ha T 2 egy sorában változik a a kulcs értéke, akkor T 1 -ben a rá való küls kulcs hivatkozások értéke NULL lesz ON DELETE SET NULL = mint a CASCADEm csak NULL-ra állítja 2015. október 26. Adatbázisok 8 / 17
Táblák módosítása Új oszlop hozzáadása ALTER TABLE táblanév ADD(oszlopnév típus[táblafeltétel]); Oszlop módosítása ALTER TABLE táblanév MODIFY(oszlopnév típus[táblafeltétel]); Oszlopok törlése ALTER TABLE táblanév DROP(oszlop, oszlop,..., oszlop); Tábla törlése DROP TABLE táblanév; 2015. október 26. Adatbázisok 9 / 17
Új rekord felvétele INSERT INTO táblanév[(oszloplista)] VALUES (értéklista); Két fajtája: Ismerünk minden adatot és abban a sorrendben adjuk meg, ahogy a táblában a mez nevek egymás után következnek: INSERT INTO Dolgozo VALUES(1111, 'Tóth Aladár', 'Szeged, Kálvária tér 2.', '12'); A mez k számától függetlenül, csak néhány mez t kitöltve adjuk meg INSERT INTO Dolgozo(nev, adoszam) VALUES ('Tóth Aladár', 1111); (a mez k értéke, melyek nem szerepelnek, NULL lesz) 2015. október 26. Adatbázisok 10 / 17
Adatok módosítása UPDATE táblanév SET oszlop 1 = kifejezés 1,..., oszlop n = kifejezés n [WHERE feltétel]; Az értékadás minden olyan soron végrehajtódik, amely eleget tesz a WHERE feltételnek (ennek hiányában az össze sorra) Pl.: UPDATE Dolgozo SET lakcim = 'Szeged', Rózsa u. 5.' WHERE nev = 'Tóth Aladár'; 2015. október 26. Adatbázisok 11 / 17
Adatok törlése DELETE FROM táblanév [WHERE feltétel]; Hatására azon sorok törl dnek, amelyek eleget tesznek a WHE- RE feltételnek (ennek hiányában pedig az összes sor törl dik a táblában, de a séma megmarad!) Pl.: DELETE FROM Dolgozo WHERE adoszam = 1111; 2015. október 26. Adatbázisok 12 / 17
SQL SELECT Lekérdezésre a SELECT utasítás szolgál, mely egy vagy több adattáblából egy eredménytáblát állít el Szintaxis: SELECT [DISTINCT] oszloplista FROM táblanévlista [WHERE feltétel]; Ha a SELECT utáni oszloplista helyére *-ot írunk, akkor az összes oszlop értéke lesz lekérdezhet A FROM utáni táblanév listában több tábla is szerepelhet, ilyenkor ezek Descartes-szorzata képz dik WHERE feltétellel a számunkra relevánsak kiválasztása 2015. október 26. Adatbázisok 13 / 17
SQL SELECT Kib vített szintaxis: SELECT [DISTINCT] oszlop 1,..., oszlop n FROM tábla 1,..., tábla n [WHERE feltétel] [GROUP BY oszlop 1,..., oszlop n ] [HAVING feltétel] [ORDER BY oszlop 1,..., oszlop n ] 2015. október 26. Adatbázisok 14 / 17
Példák Legegyszer bb SELECT utasítás egy tábla teljes tartalmának lekérdezése: SELECT * FROM Fuvar; Ha csak bizonyos adatokra vagyunk kíváncsiak (sofor_id, cel_cim, utvonal_ideje): SELECT sofor_id, cel_cim, utvonal_ideje FROM Fuvar; A WHERE feltétel megadásával a sorokra adhatunk meg sz rési feltételeket Pl.: az összes sof r id kiliestázása, ahol a tarifa azonosító nagyobb, mint 1 SELECT DISTINCT sofor_id FROM Fuvar WHERE tarifa_azon > 1; DISTINCT - az azonos sorok közül csak egyet jelenít meg 2015. október 26. Adatbázisok 15 / 17
Függvények Összesít függvények COUNT (oszlop): sorok számát adja vissza (oszlop helyett * is szerepelhet, ilyenkor nem lehet DISTINCT) SUM (oszlop): adott oszlopban szerepl értékek összegét adja vissza MIN (oszlop): adott oszlopban szerepl értékek minimumát adja vissza MAX (oszlop): adott oszlopban szerepl értékek maximumát adja vissza AVG (oszlop): adott oszlopban szerepl értékek átlagát adja vissza Az oszlopnév el tt szerepelhet a DISTINCT kulcsszó 2015. október 26. Adatbázisok 16 / 17
Függvények Logikai függvények: AND - és kapcsolat OR - vagy kapcsolat NOT - negáció, tagadás Speciális logikai függvények: x IS NULL - igaz, ha az x mez értéke NULL x BETWEEN a AND b - igaz, ha a x b x IN halmaz - igaz, ha x megegyezik a halmaz egy elemével x LIKE minta - igaz, ha az x karaktersorozat megfelel a megadott mintának _ : egy tetsz leges karakter % : tetsz leges szám tetsz leges karakter 2015. október 26. Adatbázisok 17 / 17