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

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

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

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

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

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

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

Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte

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

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

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

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

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

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

BEVEZETÉS Az objektum fogalma

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

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

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

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

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

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.

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

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

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

Adatbázis rendszerek SQL nyomkövetés

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* tulajdonságai

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

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

Adatbázisok I A relációs algebra

Java és web programozás

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

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

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

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

SQL parancsok feldolgozása

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

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

Adatbázis használat I. 5. gyakorlat

Bevezetés: az SQL-be

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

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

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 alapok Adatbázisok című tárgyhoz, ismétlés kapcsán

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 II. 8. Gyakorló környezet

Elemi alkalmazások fejlesztése IV.

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

Webfejlesztés 4. alkalom

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:

Több tábla összekapcsolásán alapuló lekérdezések

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

Relációsémák létrehozása SQL nyelvben

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

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

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

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

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

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

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

Több tábla összekapcsolásán alapuló lekérdezések. Copyright 2004, Oracle. All rights reserved.

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

Többtáblás lekérdezések megjelenítése

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

Adatbázisok I. Az SQL nyelv

Adatbázis használat I. 2. gyakorlat

Az SQL adatbázisnyelv: DML

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

Java és web programozás

Funkcionális függések lekérdezések feldolgozása, kifejezésfák

Adatbázis I. 11. előadás. Kulcsok az SQL ben. Hivatkozásépségi megszorítások és idegen kulcsok.

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

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

Az SQL lekérdeznyelv

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

BEVEZETÉS Az objektum fogalma

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

Adatbázis, adatbázis-kezelő

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

JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Bódy Bence Az SQL egy újabb példán keresztül

Adatbázis használat I. 2. gyakorlat

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

2. Az adatbázis-kezelés alapjai

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

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

ALAPOK. 0 és 255 közé eső számértékek tárolására. Számértékek, például távolságok, pontszámok, darabszámok.

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

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

SELECT. SELECT(projekció) FROM(forrás) WHERE(szűrés) GROUPBY(csoportosítás) HAVING(csoportok szűrése) ORDERBY(rendezés)

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

LOGISZTIKAI ADATBÁZIS RENDSZEREK UNIÓ, ALLEKÉRDEZÉSEK

(Cikksorozat a portálról. Átszerkesztette és kiegészítette: Szentendrey Péter) TARTALOM

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

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

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

Csoportosított adatok megjelenítése összesítı függvények használatával. Copyright 2004, Oracle. All rights reserved.

LBRA6i integrált rendszer

Adatok szűrése, rendezése

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

Átírás:

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

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 2016. november 12. Adatbázisok 2 / 31

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 2016. november 12. Adatbázisok 3 / 31

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 2016. november 12. Adatbázisok 4 / 31

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) 2016. november 12. Adatbázisok 5 / 31

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 2016. november 12. Adatbázisok 6 / 31

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! 2016. november 12. Adatbázisok 7 / 31

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 2016. november 12. Adatbázisok 8 / 31

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; 2016. november 12. Adatbázisok 9 / 31

Ú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) 2016. november 12. Adatbázisok 10 / 31

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'; 2016. november 12. Adatbázisok 11 / 31

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; 2016. november 12. Adatbázisok 12 / 31

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 2016. november 12. Adatbázisok 13 / 31

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 ] 2016. november 12. Adatbázisok 14 / 31

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 2016. november 12. Adatbázisok 15 / 31

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ó 2016. november 12. Adatbázisok 16 / 31

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 2016. november 12. Adatbázisok 17 / 31

Függvények Összesít függvények - Ismétlés 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ó 2016. november 12. Adatbázisok 18 / 31

Példák Sof rök számának lekérdezése SELECT COUNT(*) FROM Sofor; Hány járm volt már használatban? SELECT COUNT(DISTINCT rendszam) FROM Fuvar; Tarifa átlagos ára SELECT AVG(km_ara) FROM Tarifa; Az eddig megtett km-ek SELECT SUM(utvonal_hossza) FROM Fuvar; 2016. november 12. Adatbázisok 19 / 31

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 2016. november 12. Adatbázisok 20 / 31

Példák A 2 és 4 közötti azonosítóval rendelkez sof rök neve SELECT sofor_id FROM Sofor WHERE nev BETWEEN 2 AND 4; Az 1-es, 3-as vagy 5-ös azonosítójú sof rök nevei SELECT nev FROM Sofor WHERE sofor_id IN(1, 3, 5); Az összes "M" bet vel kezd d sof r kilistázása, akinek a nevében a harmadik bet "g" bet SELECT nev FROM Sofor WHERE nev LIKE 'M_g%'; 2016. november 12. Adatbázisok 21 / 31

Összesítés, csoportosítás A tábla sorainak oszloponkénti összesítésére a GROUP BY oszloplista parancs szolgál Egy csoportba azon sorok tartoznak, melyeknél az oszloplista értéke azonos Pl.: Sof r táblában összútvonal sof rönként listázva SELECT sofor_id, SUM(utvonal_hossza) FROM Fuvar GROUP BY sofor_id; A SELECT után az összesít függvényen kívül csak olyan oszlopnév feltüntetésének van értelme, amely a GROUP BY-ban is szerepel A GROUP BY által leképezett csoportok között a HAVING feltétel alparancs segítségével válogathatunk 2016. november 12. Adatbázisok 22 / 31

Példa Kérdezzük le, hogy hány sof r van, listázzuk a sof r kódját és mellé az az összesen megtett km-t! Csak azon sof rök kódját jelenítsük meg, akik legalább 6 km-t megtettek! SELECT sofor_id, SUM(utvonal_hossza) AS osszutvonal FROM Sofor GROUP BY sofor_id HAVING osszutvonal 6; 2016. november 12. Adatbázisok 23 / 31

Rendezés Az eredménytábla sorait rendezhetjük az ORDER BY segítségével Alapértelmezés szerint a rendezés növekv sorrendben történik (ASC), ha fordítva szerenénk, akkor a DESC kulcsszó írandó a megfelel oszlopnév után Pl.: A települések és irányítószámaik kilistázása az irányítószámuk szerinti csökken sorrendben: SELECT * FROM Telepules ORDER BY irsz DESC; 2016. november 12. Adatbázisok 24 / 31

Két tábla összekapcsolása Tfh. a rendszámok mellé nem a sof r azonosítóját szeretnénk kiíratni, hanem a nevét SELECT rendszam, nev FROM Sofor, Jarmu WHERE Sofor.sofor_id = Jarmu.sofor_id; A táblák Descartes szorzatából csak azok a sorok maradnak meg, amelyek kapcsolódnak Ezt természetes összekapcsolásnak/bels összekapcsolásnak (natural join/inner join) nevezzük SELECT rendszam, nev FROM Jarmu INNER JOIN Sofor ON Sofor.sofor_id = Jarmu.sofor_id; 2016. november 12. Adatbázisok 25 / 31

Továbbfejlesztett példa Kérdezzük le, hogy a sof rök neveit és hogy hány km utat tettek meg összesen! Csak azokat a neveket és összutakat jelenítsük meg, amik elérik a 6 km-t! SELECT nev, SUM(utvonal_hossza) AS osszut FROM Sofor, Fuvar WHERE Sofor.sofor_id = Fuvar.sofor_id GROUP BY nev HAVING osszut 6; 2016. november 12. Adatbázisok 26 / 31

További ALIAS példa A SELECT után megadott oszloplista valójában nem csak oszlopneveket, hanem tetsz leges kifejezéseket is tartalmazhat, és az eredménytábla oszlopainak elnevezésére alias neveket adhatunk meg: SELECT sofor_id, utvonal_hossza * megtett_km AS ár FROM Fuvar, Tarifa WHERE Fuvar.tarifa_azon = Tarifa.tarifa_azon; 2016. november 12. Adatbázisok 27 / 31

Természetes összekapcsolás T 1 T 2 Példa: SELECT olvaso.olvasoszam, nev, lakcim, cim, konyvszam, szerzo, kivetel FROM konyvtar, olvaso WHERE konyvtar.olvasoszam = olvaso.olvasoszam SELECT olvaso.olvasoszam, nev, lakcim, cim, konyvszam, szerzo, kivetel FROM olvaso INNER JOIN konyvtar ON konyvtar.olvasoszam = olvaso.olvasoszam 2016. november 12. Adatbázisok 28 / 31

Küls összekapcsolás - Bal oldali küls összekapcsolás T 1 (+) T 2 SELECT olvaso.olvasoszam, nev, lakcim, cim, konyvszam, szerzo, kivetel FROM olvaso LEFT OUTER JOIN konyvtar ON konyvtar.olvasoszam = olvaso.olvasoszam 2016. november 12. Adatbázisok 29 / 31

Küls összekapcsolás - Jobb oldali küls összekapcsolás T 1 (+)T 2 SELECT olvaso.olvasoszam, nev, lakcim, cim, konyvszam, szerzo, kivetel FROM olvaso RIGHT OUTER JOIN konyvtar ON konyvtar.olvasoszam = olvaso.olvasoszam 2016. november 12. Adatbázisok 30 / 31

Küls összekapcsolás - "Teljes küls összekapcsolás" T 1 (+) (+)T 2 SELECT olvaso.olvasoszam, nev, lakcim, cim, konyvszam, szerzo, kivetel FROM olvaso RIGHT OUTER JOIN konyvtar ON konyvtar.olvasoszam = olvaso.olvasoszam UNION SELECT olvaso.olvasoszam, nev, lakcim, cim, konyvszam, szerzo, kivetel FROM olvaso LEFT OUTER JOIN konyvtar ON konyvtar.olvasoszam = olvaso.olvasoszam 2016. november 12. Adatbázisok 31 / 31