1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Adatbázisok gyakorlat 10. gyakorlat SQL SELECT, Összekapcsolás, Nézettáblák.

Slides:



Advertisements
Hasonló előadás
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Adatbázisok gyakorlat 5. gyakorlat Adatmodellezés III/IV – Funkcionális függés,
Advertisements

2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
10. gyakorlat SQL SELECT.
2012. tavaszi félév Véső Tamás. A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges,
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Lekérdezések SQL-ben Relációs algebra A SELECT utasítás
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Adatbázis alapú rendszerek 1. Gyakorlat Követelmények / SQL.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Adatbázisok gyakorlat 8. gyakorlat SQL alapok.
Elmaradás.  0 Számjegy. Ebben a pozícióban egyetlen számjegyet kell megadnia.  9 Számjegy. Ebben a pozícióban egyetlen számjegyet lehet megadni, nem.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Adatbázisok gyakorlat 2. gyakorlat MySQL elérése számítógépen (JDBC, ODBC, PHP)
Microsoft Access Lekérdezések.
Delphi programozás alapjai
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Adatbázisok gyakorlat 6. gyakorlat Gyakorlás, kötelezőprogram.
5. GYAKORLAT SQL CREATE TABLE, aktualizálás. S QL Structured Query Language A relációs adatbáziskezelés szabványos nyelve Nem algoritmikus, de beépíthető.
– SQL 2: Adatok kezelése – Tarcsi Ádám, január 30. Adatbázis gyakorlat.
Adatbázis gyakorlat – SUBSELECT – Tarcsi Ádám március.
– Adattáblák & adatok kezelése – Tarcsi Ádám január Adatbázis gyakorlat.
Többtáblás lekérdezések, allekérdezések Rózsa Győző
SQL – DQL (Data Query Language ) adat lekérdezések
kötelező program, SZÁMONKÉRÉSEK
SQL Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 4. Összesítés és csoportosítás lekérdezésekben. Halmazműveletek.
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 5. Nézettáblák létrehozása, módosítása és törlése.
SQL92 lehetőségek KL A tábla B tábla C view adatok VIEW működése utasítás: SELECT.. FROM A,B … SELECT.. FROM C Az adatok a hivatkozáskor állítódnak elő.
ADATBÁZISOK
ADATBÁZISOK
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
Adatbázis kezelés SQL. Történeti áttekintés 1976IBM:SEQUEL,SQL 1976IBM:SEQUEL,SQL 1983ORACLE 1983ORACLE 1984INFORMIX 1984INFORMIX 1986SQL – szabvány :
Összesítés és csoportosítás lekérdezésekben. Halmazműveletek.
Nézettáblák létrehozása, módosítása és törlése
- adatbázisséma definiálása (DDL) Data Definition Languages, - adatok aktualizálása (DML),Data Maniputaion Language - lekérdezési lehetőségek (DML) Data.
SQL. SQL = Structured Query Language (= struktúrált lekérdező nyelv). A relációs adatbázis-kezelés szabványos nyelve. Nem algoritmikus nyelv, de algoritmikus.
SQL.
Az SQL nyelv alapjai.
Nézettáblák, felső-N analízis Március 20. Rózsa Győző.
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
2012. tavaszi félév Véső Tamás Véső Tamás OE­NIK / 29.
A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele a minimum elégséges érdemjegynek!
ADATBÁZIS HASZNÁLAT I. 3. gyakorlat. Figyelem!!! A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem.
Adatbázis-kezelés SQL-lel
Felhasználók és jogosultságok
SQL DDL DATA DEFINITION LANGUAGE. Táblák létrehozása CREATE TABLE táblanév ( oszlopnév1 típus(méret) /DEFAULT érték/ /NOT NULL/, oszlopnév2 típus(méret)
Készítette: Tóth Ervin
Az SQL nyelv. SQL Az SQL utasításait két fő csoportba szokták sorolni: DDL (= Data Definition Language): adatstuktúra definiáló utasítások. DML (= Data.
DQL. A select parancs az adattábla lekérdezésére szolgál, azaz a táblában tárolt adatok közül az előírt feltételeknek megfelelőket kiválogatja. Formája.
Adatbázisok gyakorlat
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
– SQL 3: SELECT - 1. – Tarcsi Ádám, január 31. Adatbázis gyakorlat.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
SQL SELECT parancsok Kottyán László. A bemutató mintatáblái.
Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai
Adatbázisok gyakorlat
Ma az un. Relációs adatmodelleket használjuk.
5. gyakorlat Fleiner Rita.
SQL haladó Külső összekapcsolások, Csoportosítás/Összesítés,
Többtáblás lekérdezések, hierarchikus lekérdezések, allekérdezések
Webprogramozó tanfolyam
2. AB gyakorlat Egytáblás csoportosító lekérdezések.
SQL történelem 1970 Edgar F. Codd (IBM) cikke 12 szabály a relációs adatmodellekre 1979 első kereskedelmi forgalmazású relációs adatbáziskezelő 1986 az.
Adatbázis-kezelés 3-4. Adatok lekérdezése utasítás általános formája SELECT [ALL/DISTINCT] {*/, …, } FROM [ ], …, [ ] [WHERE GROUP BY, …, HAVING ORDER.
Adatbázis-kezelés. Középszint: –1-2 tábla –SQL-nyelv és lekérdező-rács használata –Űrlap és jelentés készítés Emelt szint: –több tábla (kapcsolatok) –több.
– SELECT - 1. – Tarcsi Ádám január Adatbázis gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
Programozás I. 3. gyakorlat.
Adatbázis rendszerek I
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
SQL aggregálás, csoportosítás és összekapcsolás Adatbázisok 1.
1 SQL jogosultság-kezelés Privilégiumok Grant és Revoke Grant Diagrammok.
Előadás másolata:

1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Adatbázisok gyakorlat 10. gyakorlat SQL SELECT, Összekapcsolás, Nézettáblák

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor2Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor2 Kötelező program beadás Dokumentáció beadásának határideje: november :55:00 Tartalmaznia kell –Végleges EK-diagram –Leképezések –Normalizálás –Nemtriviális lekérdezések (3 darab) –Alkalmazás szolgáltatásai –Fejlesztőeszközök

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor3Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor3 Kötelező program beadás Bemutatás: 13. és 14. szorgalmi héten (véletlen beosztás) A programnak el kell készülnie a 12. hét végéig NEM kell beadni: –SQL-fájlt –Kész programot

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor4Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor4 SELECT utasítás (ismétlés) SELECT [DISTINCT] megjelenítendő oszlopok FROM táblá(k direkt szorzata) [WHERE feltétel] [GROUP BY csoportosítási szempont] [HAVING csoportok szűrése] [ORDER BY rendezési szempont] ;

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor5Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor5 Természetes összekapcsolás (ism.) Két tábla közötti kapcsolat Megegyező attribútumok mentén Ezek az egyező attribútumok a külső kulcsok Jelölése: T 1 * T 2 (ha T 1 az R 1 (A), T 2 a R 2 (B) séma feletti táblák) A két tábla természetes összekapcsolása: T = π A U B (σ R1.X=R2.X (T1 x T2) )

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor6Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor6 Természetes összekapcsolás SQL-ben IDNévFizetésSzül.dátumOsztályID 2Kiss Imre Kovács Sára IDNév 3Hulladékgazdálkodási 4Pénzügyi 21Marketing SELECT Dolgozó.Név, Fizetés, Osztály.Név FROM Dolgozó, Osztály WHERE Dolgozó.OsztályID = Osztály.ID; SELECT Dolgozó.Név, Fizetés, Osztály.Név FROM Dolgozó INNER JOIN Osztály ON Dolgozó.OsztályID = Osztály.ID;

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor7Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor7 Természetes összekapcsolás SQL-ben Figyelni kell a névütközésre (elkerülése: az attribútum elé írjuk a tábla nevét) Az első módszernél WHERE feltételben kell megadni az attribútumok menti kapcsolatot, hogy csak a kulcs mentén egyező sorok legyenek az eredménytáblában Példa: Határozzuk meg az egyes osztályokon dolgozókat. –SELECT Osztály.Név, COUNT(Dolgozó.Név) FROM Dolgozó, Osztály WHERE Dolgozó.OsztályId = Osztály.ID GROUP BY Osztály.Név;

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor8Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor8 Természetes összekapcsolás SQL-ben Eredménye: A pénzügyi osztálynál nem jelenik meg, hogy 0 fő Oka: –Egy dolgozó sincs az osztályon –A táblák direktszorzatában egy sorban sem lesz az Osztály ID-je ‘4’ –Eredménytábla nem tartalmazza a Pénzügyi osztályt –Összesítéskor nem fog szerepelni Orvosolni kell Osztály.NévCount(Dolgozó.Név) Hulladékgazdálkodási1 Marketing1

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor9Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor9 Külső összekapcsolás Az előbbi probléma kiküszöbölésére használhatjuk a külső összekapcsolást: a (valamelyik oldalról) ‘lógó’ sorok is megmaradnak az összekapcsolt táblában –LEFT OUTER JOIN –RIGHT OUTER JOIN –FULL OUTER JOIN Külső összekapcsolásnál az egyik (vagy mindegyik) tábla nem párosított sorai az eredménytáblában megjelennek. Ilyenkor a nem párosított sorok többi attribútuma NULL lesz

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor10Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor10 Külső összekapcsolás Kettőnél több táblát is összekapcsolhatunk! Így megoldható az előbbi probléma, az eddig eltűnt sorok is megjelennek Osztály.NévCount(Dolgozó.Név) Hulladékgazdálkodási1 Marketing1 Pénzügyi0 SELECT Osztály.Név, COUNT(Dolgozó.Név) FROM Dolgozó RIGHT OUTER JOIN Osztály ON Dolgozó.OsztályId = Osztály.ID GROUP BY Osztály.Név;

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor11Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor11 Elnevezés (alias) Láttunk példát attribútumok (vagy kifejezések) elnevezésére Ugyanezt megtehetjük táblákkal is (pl.: ha egy táblára többszörösen szeretnénk hivatkozni) Példa: Azonos nevű dolgozók lekérése egy táblából: –SELECT d1.Név FROM Dolgozó AS d1, Dolgozó AS d2 WHERE d1.Név = d2.Név AND d1.id < d2.id;

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor12Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor12 Allekérdezések Allekérdezés: amikor egy SQL-utasításban elhelyezünk egy SELECT-et Példa: Allekérdezéssel előállítunk egy halmazt, amelyet egy SELECT-ben használunk. –SELECT Név FROM Dolgozó WHERE Dolgozó.OsztályId IN ( SELECT Osztály.Id FROM Osztály WHERE Osztály.Id > 5 );

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor13Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor13 Allekérdezések Létrehozhatunk allekérdezést a FROM utasítás után (vagy akár INSERT után is) Példa. Adott az Employee(id, name, salary, address) reláció. Állítsunk ebből elő egy olyan táblát, amiben magyar oszlopnevek vannak a következő adatokkal: név, azonosító, éves bér. Csak a $4000-nál többet kereső “Smith” családnevű dolgozók jelenjenek meg. SELECT altabla.nev, altabla.id, altabla.eves_ber FROM ( SELECT name AS nev, id, salary*12 AS eves_ber, address FROM Employee WHERE salary > 4000 ) AS altabla WHERE altabla.nev LIKE ‘% Smith’;

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor14Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor14 Allekérdezések Halmazműveleteknél jellemzően két alkérdés áll az utasítás oldalán: –(SELECT nev FROM oktatok) UNION (SELECT nev FROM hallgatok); Ilyenkor a többszörösen szereplő értékek csak egyszer jelennek meg. Ha többször szeretnénk megjeleníteni a duplikált sorokat, akkor az UNION ALL-t kell használnunk. A táblák kompatibilitására ügyelni kell minden esetben

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor15Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor15 Allekérdezések Nem minden esetben használhatjuk azonban: –A MySQL nem engedi meg, hogy módosítsunk egy táblát úgy, hogy a WHERE feltételben ugyanezen táblára vonatkozó alkérdés van! –Szintén nem jó, ha INSERT után próbálkozunk hasonlóan. UPDATE Dolgozo AS d1 SET d1.fizetes = 1.1 * d1.fizetes WHERE ( SELECT AVG(d2.fizetes) FROM Dolgozo AS d2 ) > d1.fizetes;

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor16Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor16 Nézettáblák Nem valódi táblák Feladatuk: adatbázisban lévő adatok bemutatása transzformáció(k) után Megadunk egy „formulát”, ami a már meglévő adatok alapján létrehoz egy nézettáblát Létrehozás: CREATE VIEW táblanév [(oszloplista)] AS SELECT...; Törlés: DROP VIEW táblanév;

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor17Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor17 Nézettáblák Nézettáblában is végrehajthatóak pl. a módosítások, ilyenkor azok bekerülnek az eredeti táblába Az eredeti táblán történő módosítás látszik is a nézettáblában (természetesen) Nem minden esetben módosítható Nem módosítható, ha... –nem lehet egyértelmű a végrehajtás (tehát pl. egyik oszlop két másik szorzata, összesítő függvényt használtunk, stb) –DISTINCT opciót használtunk –összekapcsolást használtunk –GROUP BY parancsot használtunk

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor18Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal GáborSzegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor18 Megjegyzések Feladatgyűjtemény: –pub/Adatbazisok/feladatok_v1.1.pdf Adatbázisok. Előadás jegyzet, – –pub/Adatbázisok/ Cser Lajos diái alapján