1 / 17

10 . gyakorlat

10 . gyakorlat. SQL SELECT. 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

merrill
Download Presentation

10 . gyakorlat

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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

  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áru.%) • _: 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 10000 és 20000 közötti összegű fizetés van: SELECT COUNT(fizID) FROM fizetes WHERE osszeg BETWEEN 10000 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 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. 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 50000-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!

More Related