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

Slides:



Advertisements
Hasonló előadás
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.
Advertisements

10. gyakorlat SQL SELECT.
Tananyag: konzultáció
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.
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda 4. Előadás Az SQL adatbázisnyelv Sorváltozók Alkérdések Ismétlődő sorok Összesítések 1.
Lekérdezések SQL-ben Relációs algebra A SELECT utasítás
© Kozsik Tamás Adatbáziskezelés •Relációs adatbáziskezelők •Noha a Java objektum-elvű, egyelőre nem az objektum-elvű adatbáziskezelőket támogatja.
Adatbázisok SQL. TARTALOM Szijártó M.2 Témakörök  Az SQL tulajdonságai  A műveletek fajtái  Objektum-műveletek  Lekérdezések Tulajdonságok és műveletek.
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.
Microsoft Access Lekérdezések.
Delphi programozás alapjai
Adatbázis kezelés. Hierarchikus modell Legrégebbi modell, ma már nem használatos. Az adatokat fákban tároljuk, ahol minden pont a szegmens adatokat, és.
Azonosítók és képzési szabályaik
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
Adatbázis alapú rendszerek
Adatbázis rendszerek II.
Adatbázis-kezelés ACCESS program:
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
ADATBÁZISOK
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
Oktassunk adatbázis-kezelést! Micskei Zoltán Microsoft Referencia Iskola.
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ő.
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
2012. tavaszi félév Véső Tamás. Kérdezze le minden dolgozó nevét, jövedelmét, részlegének nevét és a részlegében dolgozók legkisebb és legnagyobb jövedelmét,
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. SQL SQL = Structured Query Language – Strukturált Lekérdezőnyelv Relációs adatbázis-kezelők lekérdezési nyelve. Alapjait az.
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.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Adatbázisok gyakorlat 10. gyakorlat SQL SELECT, Összekapcsolás, Nézettáblák.
– 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
Ma az un. Relációs adatmodelleket használjuk.
5. gyakorlat Fleiner Rita.
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.
SQL. SQL jellemzői Nem algoritmikus (nem tartalmaz algoritmikus szerkezeteket: ciklus, eljárás, elágazás) Nem rekurzív (önmagát nem hívhatja) Halmazorientált.
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.
– SELECT - 1. – Tarcsi Ádám január Adatbázis 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.
Adatbázisok SQL.
Előadás másolata:

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

A select utasítás általános alakja (ISM.) 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];

Természetes összekapcsolás SQL-ben ID Név Fizetés Szül. dát. OsztályId 123 Kiss Mária 120500 1955-12-11 3 124 Kovács Gyula 134000 1967-09-09 11 Dolgozó ID Név 3 Hulladékgazdálkodási 4 Pénzügyi 11 Marketing SELECT Dolgozó.Név, Fizetés, Osztály.Név FROM Dolgozó, Osztály WHERE Dolgozó.OsztályId = Osztály.ID; vagy FROM Dolgozó INNER JOIN Osztály ON Dolgozó.OsztályId = Osztály.ID; Osztály

Term. ÖSSZEKAPCSOLÁS SQL-ben Mindkét jelölésnél képződik a táblák direkt szorzata, és projekcióval kiválasztódnak az általunk megjeleníteni kívánt oszlopok Ahol névütközéstől kell tartanunk a direkt szorzatban, a táblák nevét is kiírjuk az oszlopnév elé (pl. Dolgozó.Név) az első módszernél a WHERE feltételben kell megadni azt, hogy a külső kulcsok mentén egyező sorok maradjanak meg az eredménytáblában Példa. Határozzuk meg az előző táblák esetén, hogy hány fő dolgozik az egyes osztályokon. 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;

TERM. Összekapcsolás SQL-BEN A kapott eredmény a következő lenne: Vegyük észre, hogy a Pénzügyi osztálynál nem jelenik meg, hogy 0 fő dolgozik ott Ennek oka: Egy dolgozó sincs az osztályon => a direkt szorzat egyik sorában sem lesz egyezés a külső kulcs mentén ‘4’ érték esetén => nem fogja tartalmazni az eredménytábla a pénzügyi osztályt => nem fog összesítéskor szerepelni Osztály.Név COUNT(Dolgozó.Név) Hulladékgazdálkodási 1 Marketing

Külső összekapcsolás A látott probléma kiküszöbölésére létezik a külső összekapcsolás: a “lógó” sorok is megmaradhatnak az összekapcsolt táblában LEFT OUTER JOIN – baloldali külső összekapcsolás; a bal oldali tábla lógó sorai maradnak meg, a nem baloldali táblából származó oszlopok az ilyen sorokban NULL értéket kapnak RIGHT OUTER JOIN – jobb oldalról ua. FULL OUTER JOIN – mindkét tábla nem párosított sorai megőrződnek Észrevétel. Természetesen – bármilyen összekapcsolásról is legyen szó – kettőnél több tábla is összekapcsolható.

KÜLSŐ összekapcsolás Így a korábbi probléma – az összes (akár nulla létszámú) osztályhoz tartozó dolgozói létszámok kiíratása – már meg is oldható: 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; Osztály.Név COUNT(Dolgozó.Név) Hulladékgazdálkodási 1 Marketing Pénzügyi

Aliasok A SELECT utasítás után adandó oszloplista nem csak oszlopneveket, hanem kifejezéseket is tartalmazhat, amiket el lehet nevezni – ez az aliasok egyik szerepe; szintaxis: kifejezés AS alias_név Példa. Ország népsűrűsége. SELECT név, lakosság/terület AS népsűrűség FROM ország; Alias használandó akkor is, ha egy SQL utasításon belül adott táblára többszörösen hivatkozunk, például azonos nevű dolgozók lekérése: SELECT d1.Név FROM Dolgozó AS d1, Dolgozó AS d2 WHERE d1.Név = d2.Név AND d1.id < d2.id;

Allekérdezések Korábban láttunk már példát rájuk – tulajdonképpen arról van szó, hogy egy adott SQL utasításon belül elhelyezünk egy SELECT-tet. Példa. Allekérdezéssel előállított halmaz IN után: SELECT Név FROM Dolgozó WHERE Dolgozó.OsztályId IN ( SELECT Osztály.Id FROM Osztály WHERE Osztály.Id > 5 );

Allekérdezések Allekérdezést persze használhatunk a FROM parancs 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’; Sőt, még akár INSERT-en belül is elhelyezhető alkérdés: INSERT INTO tábla SELECT …

Allekérdezések Halmazműveleteknél – UNION, INTERSECT, EXCEPT – 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 UNION-nál – mint azt már tudjuk – a többszörösen szereplő értékek csak egyszer jelennek meg. Ha azt akarjuk, hogy a duplikált sorok többször megjelenjenek, UNION ALL használandó A táblák kompatibilitására ügyelni kell!

Allekérdezések Nem minden esetben tudunk a korábbiakban látottakhoz hasonló megoldást adni a problémáinkra Példa. Növeljük meg azon dolgozók fizetését 10%-al, akik az átlagfizetésnél kevesebbet keresnek: UPDATE Dolgozo AS d1 SET d1.fizetes = 1.1 * d1.fizetes WHERE (SELECT AVG(d2.fizetes) FROM Dolgozo AS d2 ) > d1.fizetes; 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.

CREATE VIEW táblanév [(oszloplista)] AS SELECT …; Nézettáblák Nem valódi táblák, feladatuk az adatbázisban lévő adatok bemutatása egy adott transzformáció végrehajtása után Tulajdonképpen megadunk egy “formulát”, ami a már meglévő adatok alapján létrehoz egy nézettáblát Létrehozása: CREATE VIEW táblanév [(oszloplista)] AS SELECT …; Törlése: DROP VIEW táblanév; A nézettáblákon is végrehajthatók ugyanazon műveletek, mint a tárolt táblákon, azaz pl. az értékek aktualizálhatók – és ilyenkor a forrástáblába is bekerülnek a módosítások Nyilván a forrástábla módosítása is automatikusan látszik a nézettáblában

Nézettáblák Van néhány eset, amikor azonban a nézettábla módosítása nem lehetséges: Példa. Raktár(cikkszám, név, egységár, mennyiség) CREATE VIEW Keszlet(aru, ertek) AS SELECT nev, egysegar*mennyiseg FROM raktar; Nem lehet módosítani a nézettáblát, ha nem lehet egyértelmű a végrehajtás (pl. fent), vagy ha DISTINCT opciót, valamilyen összekapcsolást, GROUP BY alparancsot tartalmaz a definíció.

FELADATOK Honlapon: sqlfolyt.sql – táblák létrehozását tartalmazza 8.1 Hány fős lengyel kisebbség él Franciaországban? 8.2 Mennyi Európában a GDP-k átlaga? 8.3 Listázd az egyes országok neveit és népességét, de csak a 1200000-nél népesebb országok jelenjenek meg! 8.4 Mennyi Svájc összlakossága? 8.5 Adj meg lekérdezést, ami megmutatja, hogy egy adott országban melyik a legnagyobb lélekszámú nép!