Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

10. gyakorlat SQL SELECT.

Hasonló előadás


Az előadások a következő témára: "10. gyakorlat SQL SELECT."— Előadás másolata:

1 10. gyakorlat SQL SELECT

2 Az SQL matematikai alapjai
Relációs algebra: relációs adatbázistáblákon végzett műveletek Fő műveletek: Direkt szorzat Szelekció  sorok közt válogat бf(T) – „T” tábla, „f” logikai kifejezés Projekció  oszlopok közt válogat πJ(T) – „T” tábla, „J” attribútumlista

3 Lekérdezés általános alakja
Mely táblákból legyen direkt szorzat Mely oszlopok jelennek meg SELECT FROM Logikai kifejezés (mely sorok) WHERE Mi szerint rendezünk ORDER BY GROUP BY Mi szerint csoportosítunk HAVING Csoportok szűrése

4 Egyszerű SQL lekérdezés
SELECT * FROM dolgozo, fizetes;  direkt szorzat Dolgozók neveinek és fizetéseinek lekérdezése: SELECT dNev, osszeg FROM dolgozo, fizetes WHERE dolgozo.fizID = fizetes.fizID ORDER BY dNev ASC; dolgozo fizetes dolgozoID dNev fizID 1 Péter 2 Anna 3 Ádám fizID osszeg 1 20000 2 25000

5 1. Feladat Honlapom: gyak10_sql_sablon.php
Előző órán használt adatbázis: áruk, forgalom táblák Kérdezd le az adatbázisban található árukat: csak a nevük jelenjen meg ABC szerint csökkenő sorrendben rendezve! Az előbbi lekérdezést hajtsd végre úgy, hogy ha több ugyanolyan nevű áru van, akkor ugyanaz a név már ne jelenjen meg még egyszer a listában!

6 Összesítő függvények használata
Használatukkor csoportosítást kell alkalmazni minden olyan megjelenő oszlopra, mely nem szerepel az összesítő függvényben Csoportra vonatkozó feltétel a HAVING után adható meg Pl.: SELECT SUM(osszeg) FROM fizetes;

7 Összesítő függvények AVG() – átlag COUNT() – sorok száma
MIN() – legkisebb érték MAX() – legnagyobb érték SUM() – összeg Pl.: SELECT dNev, MIN(osszeg) FROM dolgozo, fizetes WHERE dolgozo.fizID = fizetes.fizID GROUP BY dNev;

8 2. Feladat Kérdezd le az áruk adatbázisból és jelenítsd meg egy listában az egyes árukat és a belőlük összesen eladott mennyiséget! Csak azokat az árukat kérdezd le az előbbi módon, amikből több mint 20-at eladtak már!

9 Speciális logikai kifejezések
x IS NULL: akkor igaz, ha x értéke NULL x BETWEEN a AND b: akkor igaz, ha a<=x<=b x IN halmaz: akkor igaz, ha x a halmaz egy elemével megegyezik Halmaz explicit megadása: pl. város IN (‘Szeged’, ‘Budapest’, ‘Pécs’) Halmaz megadása allekérdezéssel X = NULL

10 Speciális logikai kifejezések (folyt.)
x relációjel ALL halmaz: igaz, ha x a halmaz minden elemével a megadott relációban van x relációjel ANY halmaz: igaz, ha x a halmaz valamely elemével a megadott relációban van Pl. fizetés < ANY (10000, 20000, 30000) EXISTS halmaz: igaz, ha a halmaz nem üres EXISTS(allekérdezés): igaz, ha az allekérdezés legalább 1 elemet visszaad

11 Speciális logikai kifejezések (folyt.)
x LIKE minta: igaz, ha x illeszkedik az adott mintára %: tetszőleges karaktersorozat (%Vár u.%) _: tetszőleges karakter (_él) NOT x IS NOT NULL x NOT IN halmaz

12 Példák speciális logikai kifejezés használatára
Mennyi és közötti összegű fizetés van: SELECT COUNT(fizID) FROM fizetes WHERE osszeg BETWEEN AND 20000; Azon dolgozók nevei, amikben a név ‘Anna’-val kezdődik00000: SELECT dNev FROM dolgozo WHERE dNev LIKE ‘Anna%’;

13 Allekérdezés: mennyi az adott dolgozó eddigi összes kifizetése?
dolgtorzs(dkod, dnev, atlagfiz) kifiz(dkod, osszeg, honap) Írassuk ki azon dolgozók neveit, akiknél az összes kifizetett pénz nagyobb, mint 5000! SELECT dnev FROM dolgtorzs WHERE _________ > 5000; Allekérdezés: mennyi az adott dolgozó eddigi összes kifizetése?

14 Dolgozó kódja, akiről éppen szó van
Allekérdezés (folyt.) Adott dolgozó eddigi kifizetésének lekérdezése: SELECT SUM(osszeg) FROM kifiz WHERE kifiz.dkod = _________ A végső megoldás tehát: SELECT dnev FROM dolgtorzs WHERE (SELECT SUM(osszeg) FROM kifiz WHERE kifiz.dkod = dolgtorzs.dkod) > 5000; Dolgozó kódja, akiről éppen szó van

15 További allekérdezéses feladatok
Írassuk ki azon dolgozók neveit, ahol volt nél nagyobb kifizetés valamelyik hónapban! SELECT dnev FROM dolgtorzs WHERE dolgtorzs.dkod IN ( SELECT kifiz.dkod FROM kifiz WHERE osszeg>50000 ); Megoldható allekérdezés nélkül? Ez az allekérdezés halmazt ad eredményül.

16 További allekérdezéses feladatok
Töröljük ahhoz a dolgozóhoz tartozó rekordot a dolgtorzs táblából, akihez nem tartozik kifizetés a kifiz táblában! DELETE FROM dolgtorzs WHERE NOT EXISTS ( SELECT kifiz.dkod FROM kifiz WHERE kifiz.dkod = dolgtorzs.dkod );

17 Köszönöm a figyelmet!


Letölteni ppt "10. gyakorlat SQL SELECT."

Hasonló előadás


Google Hirdetések