Adatbázisok II. rész
Érettségi feladatok Új adatbázist készítünk A táblákat a külső adatok menüfül szövegfájl pontjánál importáljuk (nem pedig megnyitjuk!) Fontos: az első sor tartalmazza az oszlopneveket mezők típusa, neve ellenőrizni elsődleges kulcs: némelyik táblához létre kell hozni, némelyiknél adott
Választó lekérdezés Egy vagy több tábla választott mezőinek megjelenítése adott feltétel(ek) teljesülése mellett Szokás összekapcsolásra is használni nincs feltétel Lehetőségek: mezők megjelenítése, szűrőfeltétel megadása, rendezés
Választó lekérdezés QBE rács
Szűrő feltételek Szövegek: idézőjelbe Dátum: # jelek közé (hash mark) Logikai: True; False Másik mező: [ ] vagy (MS illetve Libre office) <; >; =; <>; like; not like; between
Korlátozó feltételek Ne legyenek azonos sorok: DISTINCT vagy csoportosítás Csak n db sor jelenjen meg: TOP n vagy LIMIT n
Választó lekérdezés min/max Legkisebb/legnagyobb elem meghatározása Ha a teljes adathalmazból kell: Rendezzük (növekvő v. csökkenő) Az első adattal térünk vissza (TOP 1 vagy LIMIT 1) Ha valamelyik mező szerinti bontásban: ld. később (csoportosítás + min/max függvény)
Választó lekérdezés: csoportosítás A lekérdezés eredményét valamilyen csoport szerinti bontásban kell megjeleníteni Általában statisztikai műveletet is végezni kell: Megszámlálás (count) Összegzés (sum) Átlag (avg) Min/max Például: Osztályonként a tanulók száma Tanulónként a matek jegyek átlaga
Feltétlek csoportosítással A feltétel ilyenkor nem a mezőre, hanem a csoportosítás végeredményére vonatkozik Például: 5-nél több jegye van; 3,6-nál jobb az átlaga, stb. QBE rácson egyszerűen beírjuk itt a mezőkre lesz nehezebb feltételt megadni SQL-ben a WHERE a mwezőkre, a HAVING a csoportosítás utáni eredményre vonatkozik.
Választó lekérdezés: allekérdezések A lekérdezés feltételében egy ismeretlen adat szerepel, amit egy másik lekérdezéssel tudunk megadni Például: kik Kovács Pistike osztálytársai? nem tudjuk, Kovács Pistike melyik osztályba jár Elkészítjük az allekérdezést (Pistike melyik osztályba jár) Ennek felhasználásával lekérdezzük a kívánt adatokat
Választó lekérdezés: allekérdezések Használhatunk SQL-t is a feltétel sorban: IN (S ELECT.) NOT IN (SELECT ) Ez utóbbit nehéz is másképp megcsinálni
Jelentések Táblá(k)ból, vagy lekérdezés(ek)ből készül. Célja a nyomtatott adatok esztétikus megjelenítése Javasolt a varázsló (tündér) használata Lehetőségek: Csoportosítás Rendezés Utómunka: feliratok, címek átírása ékezetek Jelentésfej, csoportfej, törzs, láb testreszabása
Jelentés terve
Jelentésterv Jelentésfej: 1x jelenik meg a legelején Jelentésláb: no vajon? Oldalfej/láb minden oldal tetején, alján Csoportfej/láb csoportosítási szintek elején/végén. Jellemzően mezőnevek, statisztikai adatok Törzs: a tényleges mezőtartalom, ezt ne nagyon módosítsuk!
Feladat Oldjuk meg az alábbi feladatot a 2013 októberi érettségi feladatsor (Naplo) adataival: Készítsünk jelentést az előző adatbázis alapján, hogy a diákoknak tantárgyanként milyen jegyei vannak. A jelentés osztályonként, azon belül tantárgyanként legyen csoportosítva, s a tanulók neve alapján rendezve!
Űrlapok Az űrlap a jelentéshez hasonló, de nem nyomtatóra, képernyőre készül adatmódosítás lehetséges Lehetőség van idegen kulcsok helyett a kapcsolódó tábla mezőit használni nem kell kódokat tudni Képek, objektumok megjelenítése lehetséges Általában táblához készül, egy táblához több is tartozhat
Feladat Oldjuk meg az alábbi feladatot a 2013 októberi érettségi feladatsor (Naplo) adataival: Készítsünk űrlapot a diak táblához a tanulók adatainak megjelenítéséhez, új tanulók felvételéhez. Az űrlapon minden szükséges mező jelenjen meg! Gondolja meg, mely mezők szükségesek, melyik nem! Az űrlap elrendezése adatlap stílusú legyen. Ügyeljen az ékezethelyes megjelenítésre!
Frissítő lekérdezés Egy tábla mezőjének (mezőinek) módosítása Lekérdezés feltétel megadható A mező módosulhat konstans, vagy változó értékkel Általában egyszer futtatjuk pl. 5%-kal emeljük az árakat, újra futtatva újabb 5% Rendszeres futtatás is elképzelhető: pl. minden tanév végén a végzett tanulók státuszát módosítjuk
Frissítő lekérdezés
Feladat Oldjuk meg az alábbi feladatot a 2013 októberi érettségi feladatsor (Naplo) adataival: A 2010. október 12-i földünk és környezetünk tantárgyhoz beírt jegyek tévesen röpdolgozatnak lettek beírva a 9/C osztálynál. Javítsuk ezeknél az osztályzatoknál a jegy típusát témazáró dolgozatra!
Feladat Az ének tanár rendszeresen egy nappal később írta be az osztályzatokat a 10/C osztályban. Változtassuk meg a 10/C ének-zene osztályzatainak dátumát egy nappal korábbira!
Törlő, táblakészítő lekérdezés Értelemszerű a lekérdezett adatok törlődnek/új táblába kerülnek Gyakori, hogy rendszeresen kell törülnünk pl. az üres rekordokat Pl.: töröljük azokat a diákokat, akiknek nincs kitöltve a nevük Táblakészítés: az adatok egy táblában megőrződnek. Egy pillanatkép az adatokról. Pl.: tanulók félévi eredménye a félév után a tanulók jegyei változnak, ezért sima választó lekérdezés nem jó
Feladat A 11/B. Osztály 2010. szeptember 15-én német szódolgozatot írt. Nem voltak elégedettek az eredménnyel, ezért megegyeztek Jakab tanár úrral, hogy újraírják a dolgozatot, s ezt a jegyet nem veszik figyelembe. Írjuk meg a lekérdezést Jakab tanár úr részére, ami törli a kívánt jegyeket. Figyelem, ezen az órán más jegyek is születtek, azokat nem töröljük!
Feladat Angol tantárgyból a felelőket mindig a jegyek száma alapján állapítja meg Kovács tanárnő. A három legkevesebb jeggyel rendelkező diák felel minden alkalommal. A felelőket külön táblában tárolja, a tábla neve az aktuális dátum (pl.: 20160520). Készítsen lekérdezést, amelyik előállítja a kívánt táblát!
Feladat Készítsük el a 10/A-s tanulók félévi bizonyítványát! A lekérdezésben tanulónként számítsuk ki az egyes tantárgyak átlagát. Az eredményt kerekíthetik SQL nézetben a round() függvény segítségével! Nézzék meg adatlap nézetben, hogyan jelenik meg a kerekítés! Végül, alakítsák át a lekérdezést táblakészítő lekérdezéssé (10A félév), és válaszoljanak arra a kérdésre, hogy miért szükséges külön táblában tárolni az eredményeket, ha a lekérdezés máskor is lefuttatható lenne?