38

8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Adatbázisok8. gyakorlat

SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE,DELETE)

2014. október 22.

2014. október 22. Adatbázisok 1 / 14

Page 2: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

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 De�nition Language) - adatstruktúra de�niáló uta-sítások

• DML (Data Manipulation Language) - adatokon végezhet® uta-sítások

2014. október 22. Adatbázisok 2 / 14

Page 3: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

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

2014. október 22. Adatbázisok 3 / 14

Page 4: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

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

2014. október 22. Adatbázisok 4 / 14

Page 5: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Relációsémák de�niá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 de�niáható (egyébként alapértelmezetten NULL)

2014. október 22. Adatbázisok 5 / 14

Page 6: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Adattípusok

• INT(n): egész szám, n darab szzá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

2014. október 22. Adatbázisok 6 / 14

Page 7: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

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ételformájában adható meg!

2014. október 22. Adatbázisok 7 / 14

Page 8: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Példa

Feladat: Hozzuk létre az

• OSZTÁLY(osztálykód, osztálynév, vezAdószám)DOLGOZÓ(adószám, név, lakcím, osztálykód)

CREATE TABLE Osztaly(osztalykod CHAR(3) PRIMARY KEY,osztalynev CHAR(20),vezAdoszam DECIMAL(10)

);

CREATE TABLE Dolgozo(adoszam DECIMAL(10) PRIMARY KEY,nev CHAR(30),lakcim CHAR(40) DEFAULT 'ismeretlen',osztalykod CHAR(3) REFERENCES Osztaly(osztalykod),

);

2014. október 22. Adatbázisok 8 / 14

Page 9: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

ON-feltételek

• A tábla módosításakor a de�niált kulcsfeltételek automatikusanellen®rzésre kerülnek

• Küls® kulcsok esetén szabályozható a rendszer viselkedése:• Legyen T1 a hivatkozó tábla, T2 a hivatkozott tábla• ON UPDATE CASCADE = ha T2 egy sorában változik a a

kulcs értéke, akkor a rá való T1-beli hivatkozások is megfelel®enmódosulnak

• ON DELETE CASCADE = ha T2-ben törlünk egy sort, akkorT1-ben is törl®dnek a rá hivatkozó sorok

• ON UPDATE SET NULL = ha T2 egy sorában változik a a kulcsértéke, akkor T1-ben a rá való küls® kulcs hivatkozások értékeNULL lesz

• ON DELETE SET NULL = mint a CASCADEm csak NULL-raállítja

2014. október 22. Adatbázisok 9 / 14

Page 10: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

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;

2014. október 22. Adatbázisok 10 / 14

Page 11: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Példa

• ALTER TABLE Dolgozo ADD (szuldatum DATE);

• ALTER TABLE Dolgozo MODIFY (lakcim VARCHAR(60));

• ALTERTABLE Osztaly MODIFY (vezAdoszam REFERENCESDolgozo(adoszam));

2014. október 22. Adatbázisok 11 / 14

Page 12: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Ú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 adjukmegINSERT INTO Dolgozo(nev, adoszam) VALUES ('Tóth Aladár',1111);(a mez®k értéke, melyek nem szerepelnek, NULL lesz)

2014. október 22. Adatbázisok 12 / 14

Page 13: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Adatok módosítása

• UPDATE táblanévSET oszlop1 = kifejezés1, ...,

oszlopn = kifejezésn[WHERE feltétel];

• Az értékadás minden olyan soron végrehajtódik, amely elegettesz 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';

2014. október 22. Adatbázisok 13 / 14

Page 14: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Adatok törlése

• DELETE FROM táblanév[WHERE feltétel];

• Hatására azon sorok törl®dnek, amelyek eleget tesznek a WHEREfeltételnek (ennek hiányában pedig az összes sor törl®dik a táb-lában, de a séma megmarad!)

• Pl.: DELETE FROM Dolgozo WHERE adoszam = 1111;

2014. október 22. Adatbázisok 14 / 14

Page 15: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Adatbázisok9. gyakorlat

SQL: SELECT

2014. október 29.

2014. október 29. Adatbázisok 1 / 14

Page 16: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

SQL SELECT

• Lekérdezésre a SELECT utasítás szolgál, mely egy vagy többadattáblából egy eredménytáblát állít el®

• Szintaxis:SELECT [DISTINCT] oszloplistaFROM 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, ilyen-kor ezek Descartes-szorzata képz®dik

• WHERE feltétellel a számunkra relevánsak kiválasztása

2014. október 29. Adatbázisok 2 / 14

Page 17: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

SQL SELECT

• Kib®vített szintaxis:SELECT [DISTINCT] oszlop1, ..., oszlopnFROM tábla1, ..., táblan[WHERE feltétel][GROUP BY oszlop1, ..., oszlopn][HAVING feltétel][ORDER BY oszlop1, ..., oszlopn]

2014. október 29. Adatbázisok 3 / 14

Page 18: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

El®z® órai példa módosítása

CREATE TABLE Osztaly(osztalykod INT(3) PRIMARY KEY,osztalynev CHAR(20),vezAdoszam DECIMAL(10)

);

CREATE TABLE Dolgozo(adoszam DECIMAL(10) PRIMARY KEY,nev CHAR(30),lakcim CHAR(40) DEFAULT 'ismeretlen',�zetes INT(6),osztalykod INT(3) REFERENCES Osztaly(osztalykod)

);

2014. október 29. Adatbázisok 4 / 14

Page 19: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Példák

• Legegyszer¶bb SELECT utasítás egy tábla teljes tartalmánaklekérdezése:

• SELECT * FROM Dolgozo;

• Ha csak bizonyos adatokra vagyunk kíváncsiak (adószám, név,�zetés):

• SELECT adoszam, nev, �zetes FROM Dolgozo;

• A WHERE feltétel megadásával a sorokra adhatunk meg sz¶résifeltételeket

• Pl.: az összes 50000 forintnál nagyobb �zetés¶ dolgozók nevé-nek kilistázása

• SELECT DISTINCT nev FROM DolgozoWHERE �zetes > 50000;

• DISTINCT - az azonos sorok közül csak egyet jelenít meg

2014. október 29. Adatbázisok 5 / 14

Page 20: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Függvények

• Összesít® függvények• COUNT (oszlop): sorok számát adja vissza (oszlop helyett * isszerepelhet, ilyenkor nem lehet DISTINCT)

• SUM (oszlop): adott oszlopban szerepl® értékek összegét adjavissza

• MIN (oszlop): adott oszlopban szerepl® értékek minimumát adjavissza

• MAX (oszlop): adott oszlopban szerepl® értékek maximumátadja vissza

• AVG (oszlop): adott oszlopban szerepl® értékek átlagát adjavissza

• Az oszlopnév el®tt szerepelhet a DISTINCT kulcsszó

2014. október 29. Adatbázisok 6 / 14

Page 21: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Példák

• Dolgozók számának lekérdezése• SELECT COUNT(*) FROM Dolgozo;

• Hány osztályon vannak dolgozók?• SELECT COUNT(DISTINCT osztkod) FROM Dolgozo;

• A dolgozók átlag�zetése• SELECT AVG(�zetes) FROM Dolgozo;

• A dolgozók �zetésének összege• SELECT SUM(�zetes) FROM Dolgozo;

2014. október 29. Adatbázisok 7 / 14

Page 22: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

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 megadottmintának

• _ : egy tetsz®leges karakter• % : tetsz®leges szám¶ tetsz®leges karakter

2014. október 29. Adatbázisok 8 / 14

Page 23: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Példák

• Az 50000 és 70000 forint között keres®k dolgozók neve• SELECT DISTINCT nev FROM DolgozoWHERE �zetes BETWEEN 50000 AND 70000;

• Az 1-es, 2-es vagy 5-ös osztályon dolgozók nevei• SELECT DISTINCT nev FROM DolgozoWHERE osztkod IN(1, 2, 5);

• Az összes "M" bet¶vel kezd®d® dolgozó kilistázása, akinek anevében a harmadik bet¶ "r" bet¶

• SELECT DISTINCT nev FROM DolgozoWHERE nev LIKE 'M_r%';

2014. október 29. Adatbázisok 9 / 14

Page 24: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Összesítés, csoportosítás

• A tábla sorainak oszloponkénti összesítésére a GROUP BY osz-loplista parancs szolgál

• Egy csoportba azon sorok tartaóoznak, melyeknél az oszloplistaértéke azonos

• Pl.: Dolgozó táblában osztályonkénti átlag�zetés• SELECT osztkod, AVG(�zetes) FROM DolgozoGROUP BY osztkod;

• A SELECT után az összesít® függvényen kívül csak olyan osz-lopnév feltüntetésének van értelme, amely a GROUP BY-ban isszerepel

• A GROUP BY által leképezett csoportok között a HAVING fel-tétel alparancs segítségével válogathatunk

2014. október 29. Adatbázisok 10 / 14

Page 25: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Példa

• Kérdezzük le, hogy hány dolgozó van az egyes osztályokon,listázzuk ki az osztály kódját és mellé az osztályon dolgozókszámát! Csak azon osztályokat jelenítsük meg, amelyekenlegalább 2 ember dolgozik!

• SELECT osztkod, COUNT(adoszam) AS dolgozok_szamaFROM DolgozoGROUP BY osztkodHAVING dolgozok_szama ≥ 2;

2014. október 29. Adatbázisok 11 / 14

Page 26: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

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ó amegfelel® oszlopnév után

• Pl.: Dolgozók és �zetéseik listája az osztálykódok növekv®, ezenbelül a �zetések csökken® sorrendjében:

• SELECT osztkod, nev, �zetesFROM DolgozoORDER BY osztkod, �zetes DESC;

2014. október 29. Adatbázisok 12 / 14

Page 27: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Két tábla összekapcsolása

• Tfh. a dolgozók listáját úgy szeretnénk kiíratni, hogy ne az osz-tálykód szerepeljen a dolgozó adatai mellett, hanem az osztályneve

• SELECT adoszam, nev, lakcim, �zetes, osztalynevFROM Dolgozo, OsztalyWHERE Dolgozo.osztkod = Osztaly.osztalykod;

• A táblák Descartes szorzatából csak azok a sorok maradnakmeg, amelyek kapcsolódnak

• Ezt természetes összekapcsolásnak/bels® összekapcsolásnak (na-tural join/inner join) nevezzük

• SELECT adoszam, nev, lakcim, �zetes, osztalynevFROM OsztalyINNER JOIN Dolgozo ON Dolgozo.osztkod = Osztaly.osztalykod;

2014. október 29. Adatbázisok 13 / 14

Page 28: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Továbbfejlesztett példa

• Kérdezzük le, hogy hány dolgozó van az egyes osztályokon, lis-tázzuk ki az osztály nevét és mellé az adott osztályon dolgozókszámát! Csak azokat az osztályokat jelenítsük meg, amelyekenlegalább 2 ember dolgozik!

• SELECT osztalynev, COUNT(adoszam) AS dolgozok_szamaFROM Dolgozo, OsztalyWHERE Dolgozo.osztkod = Osztaly.osztalykodGROUP BY osztkodHAVING dolgozok_szama ≥ 2;

2014. október 29. Adatbázisok 14 / 14

Page 29: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Adatbázisok

10. gyakorlat

SQL: Táblák összekapcsolása, allekérdezések

2014. november 5.

2014. november 5. Adatbázisok 1 / 11

Page 30: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Néhány gondolat...

• A végleges dokumentáció leadási határideje:2014. november 16. 23:55:00

• Végleges EK-diagram• Relációs adatbázisséma• Normalizálás• 3 nemtriviális lekérdezés• Az alkalmazás szolgáltatásai• A rendszer megvalósítása (fejleszt®eszköz)

• Kötelez® program beadási határideje (CooSpace):

2014. november 23. 23:55:00

• Kötelez® program bemutatása a 11. héten: +2 pont12. héten: +1 pont

2014. november 5. Adatbázisok 2 / 11

Page 31: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

További ALIAS példa

• A SELECT után megadott oszloplista valójában nem csak osz-lopneveket, hanem tetsz®leges kifejezéseket is tartalmazhat, ésaz eredménytábla oszlopainak elnevezésére alias neveket adha-tunk meg:

• Legyen:Raktár(cikkszám, név, egységár, mennyiség)SELECT név AS áru, egységár * mennyiség AS értékFROM Raktár;

2014. november 5. Adatbázisok 3 / 11

Page 32: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Táblák összekapcsolása

• El®z® órai természetes összekapcsolás:

SELECT adoszam, nev, lakcim, �zetes, osztalynev

FROM Osztaly

INNER JOIN Dolgozo ON

Dolgozo.osztkod = Osztaly.osztalykod;

• Probléma: ha összesít® függvényeket akarunk használni tábla-

összekapcsolással, kihagyhat sorokat

2014. november 5. Adatbázisok 4 / 11

Page 33: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Példa

• Kérdezzük le, hogy az egyes osztályokon hány ember dolgozik,

és megjeleníteni az osztály nevét, valamint az ott dolgozó sze-

mélyek számát

SELECT osztalynev, COUNT(adoszam) AS dolgozok_szama

FROM Osztaly

INNER JOIN Dolgozo ON Dolgozo.osztkod = Osztaly.osztalykod

GROUP BY osztalynev;

• Nem jó megoldás az adott feladatra! Küls® összekapcsolásszükséges.

• LEFT [OUTER] JOIN - bal küls® összekapcsolás• RIGHT [OUTER] JOIN - jobb küls® összekapcsolás• FULL [OUTER] JOIN - teljes küls® összekapcsolás

2014. november 5. Adatbázisok 5 / 11

Page 34: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

• Bal oldali összekapcsolással:

SELECT osztalynev, COUNT(adoszam) AS dolgozok_szama

FROM Osztaly

LEFT OUTER JOIN Dolgozo ON

Dolgozo.osztkod = Osztaly.osztalykod

GROUP BY osztalynev;

• Jobb oldali összekapcsolással:

SELECT osztalynev, COUNT(adoszam) AS dolgozok_szama

FROM Dolgozo

RIGHT OUTER JOIN Osztaly ON

Dolgozo.osztkod = Osztaly.osztalykod

GROUP BY osztalynev;

2014. november 5. Adatbázisok 6 / 11

Page 35: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Allekérdezések - Példa I.

• Az olyan lekérdezéseket, melyek egy másik lekérdezés WHERE

vagy HAVING feltételeibe beágyazva találhatóak, alkérdések-nek/allekérdezéseknek, vagy bels® SELECT-eknek nevezzük

• Pl. Az átlagnál nagyobb �zetéssel rendelkez® dolgozók kiválasz-tása �zetés szerinti csökken® sorrendben

• SELECT adoszam, nev, �zetesFROM DolgozoWHERE �zetes > (SELECT AVG(�zetes)

FROM Dolgozo)ORDER BY DESC;

2014. november 5. Adatbázisok 7 / 11

Page 36: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Allekérdezések - Példa II.

• Lista azon osztályok kódjáról és nevér®l, ahol az átlag�zetésnagyobb, mint 50000

• SELECT osztalykod, osztalynevFROM OsztalyWHERE (SELECT AVG(�zetes)

FROM DolgozoWHERE Dolgozo.osztkod = Osztaly.osztalykod)

> 50000

2014. november 5. Adatbázisok 8 / 11

Page 37: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Allekérdezések - Példa III.

• Lista azon osztályokról, amelyekben létezik olyan dolgozó, aki60000 forint felett keres

• SELECT osztalynevFROM OsztalyWHERE osztalykod IN (SELECT osztkod

FROM DolgozoWHERE �zetes > 60000);

2014. november 5. Adatbázisok 9 / 11

Page 38: 8. gyakorlat SQL: CREATE ABLE,T aktualizálás (INSERT ...mkatona/dbgyak2015/adatb_egybe_02.pdf · A relációs adatbáziskezelés szabványos nyelve Két f® csoportba sorolhatóak

Allekérdezések - Példa IV.

• Töröljük azokat az osztályokat, amelyeken nem dolgozik egyet-len személy sem

• DELETE FROM OsztalyWHERE NOT EXISTS (

SELECT *FROM DolgozoWHERE Dolgozo.osztkod = Osztaly.osztalykod);

2014. november 5. Adatbázisok 10 / 11