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

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. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

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

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

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

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

Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte

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

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. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

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

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

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

BEVEZETÉS Az objektum fogalma

Adatbázis rendszerek SQL nyomkövetés

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

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

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

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

Adatbázisok* tulajdonságai

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

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.

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

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

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

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

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

SQL parancsok feldolgozása

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

Adatbázis használat I. 5. gyakorlat

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

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

Java és web programozás

Adatbázisok I A relációs algebra

Bevezetés: az SQL-be

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

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

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

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

Elemi alkalmazások fejlesztése IV.

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

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

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:

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

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

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

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

Webfejlesztés 4. alkalom

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

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

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

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

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

Az SQL adatbázisnyelv: DML

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

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

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ázis, adatbázis-kezelő

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

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

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 rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

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

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

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

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

Adatbázisok I. Az SQL nyelv

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

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

Java és web programozás

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

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

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

BUJDOSÓ GYÖNGYI. Bevezetés az SQL-be OKTATÁSI SEGÉDANYAG AZ ADATBÁZISKEZELÉS CÍMŰ GYAKORLATHOZ DEBRECENI EGYETEM INFORMATIKAI KAR

Adatbázis használat I. 2. gyakorlat

Az SQL lekérdeznyelv

Adatbázis rendszerek tervezése

d Nem a konkrét adatokkal, azok előfordulásaival, kapcsolatokkal (egyedtípus, tulajdonságtípus,

Lekérdezések az SQL SELECT utasítással

2. Az adatbázis-kezelés alapjai

Adatbáziskezelés - SQL. Forrás: dr. Kovács László: Adatbázisok tervezésének és kezelésének módszertana Computerbooks

BEVEZETÉS Az objektum fogalma

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

ADATBÁZIS RENDSZEREK I BEADANDÓ

KÖTELEZŐ PROGRAM, SZÁMONKÉRÉSEK. Részletek

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

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

A könyv tartalomjegyzéke

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

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

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

Gazdasági folyamatok térbeli elemzése. 5. elıadás

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

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

SQL DDL-2 (aktív elemek) triggerek

Átírás:

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

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 2014. október 22. Adatbázisok 2 / 14

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

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

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) 2014. október 22. Adatbázisok 5 / 14

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

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! 2014. október 22. Adatbázisok 7 / 14

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

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 2014. október 22. Adatbázisok 9 / 14

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

Példa ALTER TABLE Dolgozo ADD (szuldatum DATE); ALTER TABLE Dolgozo MODIFY (lakcim VARCHAR(60)); ALTERTABLE Osztaly MODIFY (vezadoszam REFERENCES Dolgozo(adoszam)); 2014. október 22. Adatbázisok 11 / 14

Ú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) 2014. október 22. Adatbázisok 12 / 14

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. WHERE nev = 'Tóth Aladár'; 5.' 2014. október 22. Adatbázisok 13 / 14

Adatok törlése DELETE FROM táblanév [WHERE feltétel]; Hatására azon sorok törl dnek, amelyek eleget tesznek a WHERE 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; 2014. október 22. Adatbázisok 14 / 14

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

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 2014. október 29. Adatbázisok 2 / 14

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 ] 2014. október 29. Adatbázisok 3 / 14

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

Példák Legegyszer bb SELECT utasítás egy tábla teljes tartalmának leké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ési feltételeket Pl.: az összes 50000 forintnál nagyobb zetés dolgozók nevének kilistázása SELECT DISTINCT nev FROM Dolgozo WHERE zetes > 50000; DISTINCT - az azonos sorok közül csak egyet jelenít meg 2014. október 29. Adatbázisok 5 / 14

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ó 2014. október 29. Adatbázisok 6 / 14

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 átlagzeté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

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 2014. október 29. Adatbázisok 8 / 14

Példák Az 50000 és 70000 forint között keres k dolgozók neve SELECT DISTINCT nev FROM Dolgozo WHERE zetes BETWEEN 50000 AND 70000; Az 1-es, 2-es vagy 5-ös osztályon dolgozók nevei SELECT DISTINCT nev FROM Dolgozo WHERE osztkod IN(1, 2, 5); Az összes "M" bet vel kezd d dolgozó kilistázása, akinek a nevében a harmadik bet "r" bet SELECT DISTINCT nev FROM Dolgozo WHERE nev LIKE 'M_r%'; 2014. október 29. Adatbázisok 9 / 14

Ö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 tartaóoznak, melyeknél az oszloplista értéke azonos Pl.: Dolgozó táblában osztályonkénti átlagzetés SELECT osztkod, AVG(zetes) FROM Dolgozo GROUP BY osztkod; 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 2014. október 29. Adatbázisok 10 / 14

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ók számát! Csak azon osztályokat jelenítsük meg, amelyeken legalább 2 ember dolgozik! SELECT osztkod, COUNT(adoszam) AS dolgozok_szama FROM Dolgozo GROUP BY osztkod HAVING dolgozok_szama 2; 2014. október 29. Adatbázisok 11 / 14

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.: Dolgozók és zetéseik listája az osztálykódok növekv, ezen belül a zetések csökken sorrendjében: SELECT osztkod, nev, zetes FROM Dolgozo ORDER BY osztkod, zetes DESC; 2014. október 29. Adatbázisok 12 / 14

Két tábla összekapcsolása Tfh. a dolgozók listáját úgy szeretnénk kiíratni, hogy ne az osztálykód szerepeljen a dolgozó adatai mellett, hanem az osztály neve SELECT adoszam, nev, lakcim, zetes, osztalynev FROM Dolgozo, Osztaly WHERE Dolgozo.osztkod = Osztaly.osztalykod; 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 adoszam, nev, lakcim, zetes, osztalynev FROM Osztaly INNER JOIN Dolgozo ON Dolgozo.osztkod = Osztaly.osztalykod; 2014. október 29. Adatbázisok 13 / 14

Továbbfejlesztett példa Kérdezzük le, hogy hány dolgozó van az egyes osztályokon, listázzuk ki az osztály nevét és mellé az adott osztályon dolgozók számát! Csak azokat az osztályokat jelenítsük meg, amelyeken legalább 2 ember dolgozik! SELECT osztalynev, COUNT(adoszam) AS dolgozok_szama FROM Dolgozo, Osztaly WHERE Dolgozo.osztkod = Osztaly.osztalykod GROUP BY osztkod HAVING dolgozok_szama 2; 2014. október 29. Adatbázisok 14 / 14

Adatbázisok 10. gyakorlat SQL: Táblák összekapcsolása, allekérdezések 2014. november 5. 2014. november 5. Adatbázisok 1 / 11

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 pont 12. héten: +1 pont 2014. november 5. Adatbázisok 2 / 11

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: Legyen: Raktár(cikkszám, név, egységár, mennyiség) SELECT név AS áru, egységár * mennyiség AS érték FROM Raktár; 2014. november 5. Adatbázisok 3 / 11

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

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ó szemé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ás szü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

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

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éseknek/allekérdezéseknek, vagy bels SELECT-eknek nevezzük Pl. Az átlagnál nagyobb zetéssel rendelkez dolgozók kiválasztása zetés szerinti csökken sorrendben SELECT adoszam, nev, zetes FROM Dolgozo WHERE zetes > (SELECT AVG(zetes) FROM Dolgozo) ORDER BY DESC; 2014. november 5. Adatbázisok 7 / 11

Allekérdezések - Példa II. Lista azon osztályok kódjáról és nevér l, ahol az átlagzetés nagyobb, mint 50000 SELECT osztalykod, osztalynev FROM Osztaly WHERE (SELECT AVG(zetes) FROM Dolgozo WHERE Dolgozo.osztkod = Osztaly.osztalykod) > 50000 2014. november 5. Adatbázisok 8 / 11

Allekérdezések - Példa III. Lista azon osztályokról, amelyekben létezik olyan dolgozó, aki 60000 forint felett keres SELECT osztalynev FROM Osztaly WHERE osztalykod IN (SELECT osztkod FROM Dolgozo WHERE zetes > 60000); 2014. november 5. Adatbázisok 9 / 11

Allekérdezések - Példa IV. Töröljük azokat az osztályokat, amelyeken nem dolgozik egyetlen személy sem DELETE FROM Osztaly WHERE NOT EXISTS ( SELECT * FROM Dolgozo WHERE Dolgozo.osztkod = Osztaly.osztalykod); 2014. november 5. Adatbázisok 10 / 11