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.

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
Analitikus, statisztikai és szélsőérték fv-k Hári Veronika
Adatbázis rendszerek I
Anyagadatbank c. tárgy gyakorlat
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.
2012. tavaszi félév Vitéz Gergely. 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,
Delphi programozás alapjai
Azonosítók és képzési szabályaik
– 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
SQL Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések
Adatbázis-kezelés.
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.
ADATBÁZISOK
Részletező csoportosítások Rózsa Győző
ADATBÁZIS HASZNÁLAT I. 2. gyakorlat. Figyelem!!! A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem.
Folytassuk… (2.).
Érettségi feladatok megoldása LINQ-kel
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
Algebrai műveleti gráf optimalizálása ● Mennyi könyvet készített az idén legtöbbet kinyomtató Budapesti könyvkiadó? ● kiado(kod,nev,cim) ● konyv ( kiado,cim,ar,ev.
Microsoft Excel Függvények VIII.
- 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.
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,
2012. tavaszi félév Véső Tamás Véső Tamás OE­NIK / 18.
2012. tavaszi félév Véső Tamás Véső Tamás OE­NIK / 29.
Részletező csoportosítások Hári Veronika
Részletező csoportosítások Rózsa Győző
Adatbázis használat I. 2. gyakorlat.
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 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.
– SQL 3: SELECT - 1. – Tarcsi Ádám, január 31. Adatbázis gyakorlat.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
Tarcsi Ádám, Adatbázis gyakorlat – Adattáblák – Tarcsi Ádám, január.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
SQL SELECT parancsok Kottyán László. A bemutató mintatáblái.
1 Informatikai Szakképzési Portál Adatbázis kezelés DQL – Adatlekérdező nyelv.
Adatbázisok gyakorlat
Ma az un. Relációs adatmodelleket használjuk.
Többtáblás lekérdezések, hierarchikus lekérdezések, allekérdezések
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. 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.
Adatbázisok 1. SQL (alkérdések). Az IN használata Emlékezzünk vissza: Az IN után szereplő multihalmaz elemei lekérdezéssel is megadhatók SELECT nev FROM.
SQL aggregálás, csoportosítás és összekapcsolás Adatbázisok 1.
SQL Több táblás lekérdezések. Halmazműveletek. Alkérdések
Naplóelemzés Log Parserrel
Adatbázisok SQL.
Előadás másolata:

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 BY [ASC/DESC], …, [ASC/DESC]]

1.FROM: melyik táblákból? (direkt szorzat képzés) 2.WHERE: melyik rekordok? (nem kívánt sorok elhagyása) 3.GROUP BY: mi szerint csoportosítva? (csoportosítás) 4.HAVING: melyik csoportok? (nem kívánt csoportok elhagyása) 5.ORDER BY: mi szerint rendezve? (rendezés) 6.SELECT: melyik oszlopok? (nem kívánt oszlopok elhagyása)

SELECT * FROM, SELECT a*b/3 FROM t; SELECT * FROM tDiak d, tTanar t WHERE d.Ofo=t.Tazon; SELECT tDiak.Nev AS Diaknev, … FROM tDiak SELECT DISTINCT Kor FROM tDiak különböző

Feltételek megadása SELECT Nev FROM tDiak WHERE Egyszerű összehasonlítás Összehasonlítás egy halmaz elemeivel Összehasonlítás NULL értékkel Összetett keresési feltétel

Egyszerű összehasonlítás

Összehasonlítás egy halmaz elemeivel

Összehasonlítás NULL értékkel

Összetett keresési feltétel

Feladat Feladat: Adjuk meg azon tanulók listáját, akiknek Ottó az osztályfőnökük és elmúltak 18 évesek! LIKE operátort használhatjuk sztringek joker karakterrel történő összehasonlítására. Pl. a NEV LIKE ’%A%’ feltétel azokra a nevekre lesz igaz, amikben szerepel legalább egy A betű. Fontos, hogy a legtöbb adatbázis-kezelő rendszer csak a % jelet fogadja el jokerként, más helyettesítő karakter nincs (? vagy * nem jó!). SELECT d.Nev, d.Kor FROM tDiak d, tTanar t WHERE d.Kor >18 and t.Nev LIKE '% Otto' AND d.Ofo=t.Tazon

Aggregátum függvények Számosság: SELECT COUNT(*) FROM Ha nincs GROUP BY, akkor az eredmény egy egyoszlopos, egyetlen sort tartalmazó tábla, amiben a sorok számát kapjuk meg. Példa Példa: Adjuk meg, hogy hány diák adatát tároljuk az adatbázisban. SELECT COUNT(*) FROM tDiak Eredmény: COUNT(*)

Összeg: SELECT SUM( ) FROM Példa Példa: Adjuk meg, hogy mennyi a diákok átlagéletkora! SELECT SUM(Kor)/COUNT(Kor) FROM tDiak Átlag: SELECT AVG( ) FROM Példa Példa: Adjuk meg, hogy mennyi a diákok átlagéletkora! SELECT AVG(Kor) FROM tDiak Minimum, maximum: SELECT {MIN/MAX} ( ) FROM Példa Példa: Adjuk meg, hogy hány éves a legidősebb diák! SELECT MAX(Kor) FROM tDiak

–Több aggregátum függvényt is meg adhatunk a SELECT után, vesszővel elválasztva! –Ha nincs GROUP BY, akkor aggregátum függvény után oszlopnév nem megengedett!

Az ORDER BY Feladat Feladat: Rendezzük a tDiak tábla rekordjait név szerint növekvő és azon belül kor szerint csökkenő sorrendbe! Megoldás: SELECT * FROM tDiak ORDER BY Nev [ASC], Kor DESC

GROUP BY A GROUP BY utasítással a táblák sorait egy-vagy több oszlop szerint csoportosíthatjuk, megszámolhatjuk, hogy hány sor van egy csoportban, vagy kiválaszthatjuk a csoport egy kívánt tagját. Feladat Feladat: Adjuk meg, hogy az egyes tanárok hány diáknak osztályfőnökei! (Azonosítóval) Megoldás: SELECT Ofo, COUNT(DAzon) AS Db FROM tDiak GROUP BY Ofo;

Feladat Feladat: Adjuk meg, hogy az egyes tanárok hány diáknak osztályfőnökei! (Névvel ) Megoldás: SELECT t.Nev, COUNT (d.DAzon) AS Db FROM tDiak d, tTanar t WHERE d.Ofo=t.TAzon GROUP BY t.Nev; Rossz eredményt kapunk abban az esetben, ha van két azonos nevű tanár! Helyes megoldás: SELECT t.Nev, COUNT (d.DAzon) AS Db FROM tDiak d, tTanar t WHERE d.Ofo=t.TAzon GROUP BY t.Nev, t.TAzon;

Feladat Feladat: Osztályfőnökönként adjuk meg az egyes tanárok diákjainak átlagéletkorát! Megoldás: SELECT t.Nev, AVG(d.Kor) AS Atlag FROM tDiak d, tTanar t WHERE d.Ofo=t.TAzon GROUP BY t.Nev,t.TAzon; Megjegyzés: Megjegyzés: Csak akkor írhatunk egy oszlopnevet a SELECT utáni felsorolásba, ha szerepel a GROUP BY utáni is, az adott oszlop neve!

HAVING Csoportokra vonatkozó feltételt fogalmazhatunk meg a segítségével, ezért csak a GROUP BY utasítással együtt használjuk. Feladat Feladat: Adjuk meg azon tanárok nevét, akik legalább 3 diáknak osztályfőnökei! Megoldás: SELECT t.Nev FROM tDiak d, tTanar t WHERE d.Ofo=t.TAzon GROUP BY t.Nev, t.TAzon HAVING COUNT(d.DAzon)>=3

Feladat Feladat: Adjuk meg azon osztályfőnökök nevét és tanítványainak átlagéletkorát, akik legalább 3 diáknak osztályfőnökei! Megoldás: SELECT t.Nev, AVG(d.Kor) AS Atlag FROM tDiak d, tTanar t WHERE d.Ofo=t.TAzon GROUP BY t.Nev,t.TAzon HAVING COUNT(d.DAzon)>=3

Al SELECT Az eddig tanult lekérdezések korlátja, hogy csak olyan kérdéseket tehetünk fel, amikre a válasz megadható a kiindulási tábláink direktszorzatából képzett sorok szűrésével és/vagy csoportosításával. Nagyon egyszerűen fel tudunk tenni olyan kérdést, ami ezzel az eszközrendszerrel nem megválaszolható. Ilyen például: „Melyik tanár nem osztályfőnök?” Mivel a két tábla tDiak.Ofo = tTanar.TAzon feltétel szerinti JOIN-jában eleve nem szerepelnek azok a tanárok, akik nem osztályfőnökök, így esélytelen, hogy konjunktív lekérdezéssel ezt a kérdést megválaszoljuk. Ezzel szemben azt a kérdést, hogy „Melyik tanár osztályfőnök?”, nagyon egyszerűen meg tudjuk válaszolni: SELECT DISTINCT t.Nev FROM tDiak d, tTanar t WHERE d.Ofo=t.TAzon;

Példa Példa: Melyik tanár nem osztályfőnök? Megoldás: SELECT * FROM tTanar WHERE TAzon NOT IN (SELECT Ofo FROM tDiak)

Feladat Feladat: Melyik tanárok osztályfőnökök? Megoldás: SELECT * FROM tTanar WHERE TAzon IN (SELECT Ofo FROM tDiak)

Feladat Feladat: Adjuk meg azon osztályfőnököket, akiknek van náluk idősebb diákjuk! Megoldás: SELECT Nev FROM tTanar t WHERE TAzon IN (SELECT Ofo FROM tDiak d WHERE d.Kor>t.Kor)