Készítette: Pető László ACCESS Készítette: Pető László
Az egyed A nyilvántartás szereplői pl.: az osztály tanulói A nyilvántartás célja határozza meg, hogy az egyedekről milyen adatokat tartunk nyilván. pl.: tanárok - érdemjegy; cipész - lábméret
A rekord Ugyanazon egyedről nyilvántartott adatok összessége általában sorszámmal látjuk el tanulókról például rekordot alkothat: név, születési hely, születési dátum, testvérek száma, tanulmányi átlag, bejáró-e.
A mező A nyilvántartás oszlopai A rekordok adatai a mezők sorrendjének megfelelően kell, hogy kövessék egymást.
Az adatbázisfájl A nyilvántartás valamilyen háttértárolón, fájlban helyezkedik el. Több összetartozó adatbázisfájl és a hozzájuk tartozó kiegészítő állományok (pl. indexfájl) alkotják az adatbázist.
A relációs adatbázis
Az adatbázis-kezelők feladata Az adatbázisfájl létrehozása Az adatbázisfájl kiegészítése újabb rekordokkal A rekordok tartalmának módosítása Rekordok törlése Válogatás a rekordok között Művelet elvégzése az adatbázisfájlban szereplő adatokkal
Az adatbázis-kezelők feladata A rekordok sorrendjének megváltoztatása Több adatbázisfájl egyidejű használata Az adatok kiírása Jelentéskészítés Lekérdezések végrehajtása
ACCESS A Microsoft Office irodai programcsomag adatbázis-kezelő programja
A mező neve A mezők azonosítója max. 64 karakterből állhat. Az azonosítókat a felhasználó adja meg. Nem tartalmazhat pontot, felkiáltójelet és szögletes zárójelet, de szóközt igen.
Példa mezőnevekre
Adattípusok szám dátum karaktersorozat (szöveg) logikai feljegyzés pénznem számláló OLE objektum hiperhivatkozás keresésvarázsló
Szám Csak számjegyeket, tizedesvesszőt és előjelet tartalmazhat -18,25 1965 +34,22 1, 2, 4 vagy 8 bájt
Dátum 8 bájt hosszú Dátumokat és időpontokat tartalmazhat.
Karaktersorozat Tetszőleges karaktereket tartalmazhat Bartók Béla 76-324616 76324616 Legfeljebb 255 bájt
Logikai adat Igen vagy nem jellegű kérdésekre tartalmazhat választ. Az igent az Y vagy a T betű jelentheti A nemet az N vagy az F betű jelentheti 1 bit
Feljegyzés Alfanumerikus karakterek Legfeljebb 64 kbájt
Pénznem Pénzérték 15 egész és 4 tizedes érték lehet 8 bájt
Számláló Egész számérték Az Access automatikusan kezeli a rekordok felvételekor 4 bájt
OLE objektum Kép, hang, Excel-tábla, Word dokumentum, stb., amit az Access táblához csatolhatunk. Legfeljebb 1 Gbájt
Hiperhivatkozás Szöveg, vagy szöveg és számok kombinációja, ami három részből áll Részenként max. 2048 karakter
Keresésvarázsló Erre kattintva keresőmező jön létre, amellyel egy másik listából vagy táblából választhatunk értékeket. Az elsődleges kulcs mérete általában 4 bájt.
Mezőméret A szövegmező mérete 1 és 255 karakter között, vagy a szám mezőfajtája adható meg.
Számformátumok Bájt: 0 és 255 közötti egész – 1 bájt Egész: -32768 és 32767 közötti egész – 2 bájt Hosszú egész: -3,4E38 és 3,4E38 közötti számok 7 tizedes pontossággal – 4 bájt Dupla: -1,797E308 és 1,797E308 közötti számok 15 tizedes pontossággal – 8 bájt
Formátum Az adatok megjelenítési és kinyomtatási módjának beállítása. Lehet szabványos, alapértelmezett, vagy egyedi.
Tizedeshelyek Szám és pénznemtípusok esetén a kijelzett tizedeshelyek száma adható meg.
Beviteli maszk Formázó karaktereket jelenít meg a mezőben, és biztosítja, hogy a bevitt adatok megfeleljenek a beállított maszknak.
Cím A mező átnevezésére szolgál. Az eredeti név helyett ez jelenik meg majd az adattáblában, a lekérdezésben, az űrlapon és a jelentésben.
Alapértelmezett érték Új rekord hozzáadásakor a mezőt automatikusan feltöltő érték.
Érvényességi szabály A mezőbe bevihető adatok körét korlátozó kifejezés.
Érvényesítési szöveg Az adatmezőben érvénytelen adat beírásakor megjelenő figyelmeztető üzenet.
Kötelező Ezzel a beállítással előírjuk, hogy a mezőbe mindig kell adatot bevinni, nem hagyható üresen.
Nulla hosszúság engedélyezése Szöveg vagy feljegyzés esetén megengedi, hogy tárolhassunk nulla hosszúságú sztringet.
Indexelt Az adott mező szerint rendezi logikailag a táblát, ami később gyorsítja az adatkeresést.
Új értékek Számláló esetén megadható, hogy az új rekord növekvő módon, vagy véletlenszerűen kapjon értéket.
Az adatbázisfájl tervezése Kik lesznek az egyedek? Milyen adatokat akarunk az egyedekről tárolni? (mezők) Mi legyen a mezők neve? Milyen típusúak legyenek a mezők? Milyen hosszúak legyenek a karakteres és a numerikus mezők? A numerikus mezők hány tizedest tartalmazzanak?
Példa - KÖNYV Szerző Cím Kiadás éve Vannak-e benne képek? Ára
Példa - ISMERŐSÖK Név Születési dátum Irányítószám Város Utca Házszám
Bejelentkező képernyő
Az adatbázis ablak
Az adatbázisfájl létrehozása Fájl | Új | Üres adatbázis (név: WORK) Az adatbázis ablakban: Táblák | Tábla létrehozása tervező nézetben
Az adattábla szerkezetének begépelése
Az adattábla szerkezetének begépelése
Az adattábla szerkezetének begépelése
Az adattábla szerkezetének begépelése
Az adattábla szerkezetének begépelése
Az adattábla szerkezetének begépelése
Az adattábla szerkezetének begépelése
Az adattábla szerkezetének mentése Fájl | Mentés (Táblanév: Tanulók) Az elsődleges kulcs a számláló legyen.
Az adatbázis feltöltése
Az adatbázisfájl feltöltése Külön mentésre nincs szükség!
Az aktuális rekord A nyitott adatbázisfájl kitüntetett rekordja Célszerű azt aktuálissá tenni, amelyikre szükségünk van. A rekordmező mutatja az aktuális rekord sorszámát.
Struktúra módosítása Adjunk az adattáblához egy új mezőt, ami a tanuló személyi számát tartalmazza! Tervező nézet!
Adatbeviteli maszk Az adatbevitelt segítő mezőtulajdonság Csak meghatározott karakterek begépelését engedélyezi.
Maszkkarakterek 0: számjegy, kötelező bevinni 9: számjegy, nem kötelező #: számjegy, előjel vagy szóköz; nem kötelező L: betű, kötelező ?: betű, nem kötelező A: betű vagy számjegy, kötelező
Maszkkarakterek a: betű vagy számjegy, nem kötelező &: bármilyen karakter vagy szóköz, kötelező C: bármely karakter vagy szóköz, nem kötelező .,:;-/ : tizedeshelyek és ezres, dátum- és időelválasztók
Maszkkarakterek <: minden ezt követő karakter kisbetűssé konvertálódik >: nagybetűsre !: a beviteli mező jobbról balra töltődik ki \: az ezt követő karakter változatlanul jelenik meg.
Beviteli maszk Adjuk meg a személyi igazolvány számához szükséges beviteli maszkot! … Mentsük a táblát!
Rekord hozzáfűzése Beszúrás > Új rekord
Rekordok törlése Rekord törlése gomb
Űrlapok használata
Űrlap futtatása Dupla kattintás
Példa
Példa
Feladatok Készítse el a fenti adattáblát! Készítsen hozzá űrlapot!
Feladat
Feladat
Feladat Hozd létre az adattáblát Készíts űrlapot!
Lekérdezések Az adattáblák adatainak kiválogatása megadott feltételek szerint. Választó Forrása egy vagy több tábla, eredménye dinamikus adattábla Kereszttáblás Csoportosított adatok összegét, átlagát vagy egyéb összesítését számítja
Lekérdezések Táblakészítő: Törlő: Hozzáfűző: Frissítő: Egy vagy több táblából egy újabb táblát készít Törlő: Segíti a törlésre szánt rekordok kiválasztását Hozzáfűző: Táblához hozzáfűzendő rekordok kiválasztása más táblákból. Frissítő: Sok mező adatainak a módosítását gyorsíthatja.
Lekérdezések Paraméteres: A lekérdezés feltételei futás közben adhatók meg.
Feladat A dolgozókat tartalmazó adatbázisból listázzuk az összes dolgozó nevét és havi alapbérét! Listázzuk az egyetemet végzett vezető beosztású dolgozók nevét és éves járandóságát!
Feladat Listázzuk a 60000 Ft-nál kevesebb havi alapbérű dolgozók nevét és alapbérét! Listázzuk az összes nem vezető beosztású 64000 Ft-nál magasabb havi alapbérű dolgozó nevét Listázzuk az összes olyan dolgozó nevét és havi alapbérét, aki 23 éves kora után került a céghez!
Jelentéskészítés Az adatbázisban nyilvántartott adatok nyomtatásban való megjelenítésére szolgál A jelentés szakaszai: Jelentésfej: A jelentés címét tartalmazza Oldalfej: Minden oldal tetején megjelenő szöveges információ Csoportfejléc: A csoportosítás alapját képező mezőt jeleníti meg.
Jelentéskészítés Törzs: Csoportlábléc: Oldalláb: Jelentésláb: Az adatok Csoportlábléc: a csoportra vonatkozó számításokat tartalmazza Oldalláb: Minden oldal alján megjelenik Jelentésláb: A legutolsó oldal legutolsó információi
Feladatok A tanulói adatbázisból tudjuk meg, hogy a tanulóknak hány testvérük van? Mennyi a tanulók tanulmányi átlaga? Hány tanulónak jobb a tanulmányi átlaga 3,75-nél? Mennyi a bejáró tanulók átlaga? Hány tanuló születet 1988 előtt?
Indexelés A rekordok kezelési sorrendjét anélkül változtatjuk, hogy azok fizikai sorrendje változna. A kezelési sorrend módosítását egy általunk megadott kifejezéssel, a kulcskifejezéssel valósítjuk meg. A kulcskifejezés értéke minden rekordnál kiszámítódik, a rekordok ezen érték szerint növekvően alakítják ki a kezelési sorrendet.
Indexelés A kialakuló sorrend egy indexfájlban tárolódik. Az indexfájl ugyanannyi rekordból áll, mint az adatbázisfájl. Két mezőből áll: a kulcskifejezés értéke a rekordok eredeti sorszáma Az adatbázisfájlt ilyenkor indexelt adatbázisfájlnak nevezzük
Példa Kulcskifejezés: TESTVER*10+ATLAG
Példa Az indexfájl: Kezelési sorrend: Első a 6. Rekord második a 3. Rekord harmadik a 2. Rekord negyedik az 5. Rekord ötödik az 1. Rekord hatodik a 4. Rekord
Feladatok A dolgozói adatbázist indexelje névsor szerint! A dolgozói adatbázist indexelje alapbér szerint!
Adatbázisfájlok kapcsolata (Feladaton keresztül) ISMEROS
Adatbázisfájlok kapcsolata (Feladaton keresztül) POSTA
Kapcsoló-kifejezés Amely alkalmas két adatbázisfájl közötti kapcsolat kialakítására. Az előző feladatban az IRSZ illetve a SZAM mezők voltak a kapcsoló-kifejezések.
Két adatbázisfájl összekapcsolása A kapcsoló-kifejezések segítségével tartós kapcsolatot alakítunk ki az adatbázisfájlok között. Az összekapcsolt adatbázisok nem egyenrangúak; vezér szolga A tartósság azt jelenti, hogy a vezér bármely rekordját aktuálissá téve a szolga azon rekordja válik aktuálissá, amely biztosítja, hogy a kapcsoló-kifejezések értéke ugyanaz legyen.
Az összekapcsolás menete A vezért és a szolgát is meg kell nyitni A szolgával kapcsolatban létre kell hozni egy indexfájlt, amely a kapcsoló-kifejezés szerinti növekvő sorrendet biztosítja.
Az összekapcsolás menete Eszközök > Kapcsolatok…
A Szam mezőt húzd át az IRSZ-hez!
Lekérdezés két táblából Listázzuk az ismerőseink nevét, és lakhelyét!
Jelentés létrehozása lekérdezésből Készítsük el az előbbi lekérdezés nyomtatható változatát!
Adatbázisfájlok együttes tervezése Ha tervezéskor kiderül, hogy egy mezőben az értékek gyakran ismétlődnek, akkor azokat érdemes külön adatbázisfájlban elhelyezni, mert ott csak egyszer kell őket szerepeltetni. Valamilyen kóddal érdemes helyettesíteni, ami mindkét adatbázisban kapcsoló-kifejezés lesz.
Több adatbázisfájl összekapcsolása Egy vezérhez egyidejűleg több szolga kapcsolható A szolga is vezére lehet egy másik adatbázisfájlnak. Kétszer nem szerepelhet a láncban ugyanaz az adatbázisfájl
Példa FORGALOM egy áruház napi forgalmi adatait tartalmazza
Példa ARU tartalmazza, hogy melyik cikkszám melyik árut jelenti, az áru egységárát, mennyiségi egységét.
Példa MERTEK innen lehet megtudni, hogy melyik mértékegységkód melyik mértékegységet jelöli
Példa A FORGALOM és az ARU a cikkszám segítségével kapcsolhatók össze Az ARU és a MERTEK a mértékegységkód segítségével kapcsolhatók össze.
Az SQL SQL : Structured Query Language Az Accessben történő lekérdezések mindig SQL-ben készülnek. Nagyobb lélegzetű lekérdezések esetén elengedhetetlen a nyelv ismerete.
Új tábla létrehozása CREATE TABLE táblanév( Mező1 típus (méret) ……… )
Kapcsolat más táblákkal CONSTRAINT név PRIMARY KEY vagy UNIQUE vagy REFERENCES külsőtábla
Új index létrehozása CREATE INDEX index ON tábla
Törlés Tábláé: DROP TABLE tábla Indexé: DROP INDEX index ON tábla
SELECT SELECT mezőnevek FROM táblanevek WHERE feltétel GROUP BY csoportosítás HAVING feltétel ORDER BY rendezési szempont
1. Feladat Hozz létre egy Tanulo nevű táblát (Tankod Integer, TanNev Text(20)) típusú mezőkkel! Az SQL parancs beírása után nyissuk meg és töltsük fel 8-10 adattal!
Like Kérdezd le a „K” betűvel kezdődő tanulók összes adatát! SELECT * FROM Tanulo WHERE TanNev LIKE "K*";
2. Feladat Kérdezd le a Tanulo tábla összes adatát! SELECT * FROM Tanulo;
3. Feladat Kérdezd le a tábla összes sorát, de csak a tanulók neve jelenjen meg! SELECT TanNev FROM Tanulo;
4. feladat Jelenítsd meg a K és L betűvel kezdődő tanulók nevét! SELECT TanNev FROM Tanulo WHERE TanNev LIKE "[K-L]*";
5. Feladat Listázd ki azon hallgatók kódját, akiknek a neve nem kezdődik A,B,C betűvel! SELECT Tankod FROM Tanulo WHERE TanNev LIKE "[!A-C]*"
6. Feladat Egészítsük ki a táblát egy osztondij integer típusú mezővel! ALTER TABLE Tanulo ADD osztondij integer; Egészítsd ki a tábla rekordjait az ösztöndíjak értékével!
7. Feladat Listázd ki a 10 és 20 ezer forint közötti ösztöndíjjal rendelkező hallgatók összes adatát! SELECT * FROM Tanulo WHERE (osztondij <=20000) AND (osztondij>=10000); illetve SELECT * FROM Tanulo WHERE osztondij BETWEEN 10000 AND 20000
8. Feladat Listázd ki azon hallgatók nevét, akiknek az ösztöndíja kevesebb, mint 15000 Ft! SELECT tannev FROM tanulo WHERE osztondij<15000;
9. Feladat Listázd ki azon hallgatók nevét és kódját, akiknek a neve K betűvel kezdődik, és ösztöndíjuk kevesebb, mint 20000 Ft! SELECT TanNev,TanKod FROM Tanulo WHERE TanNev LIKE "K*" AND osztondij<20000;
10. Feladat Listázd ki a nem ABCDEFG betűvel kezdődő nevű hallgatók ösztöndíjának 10%-át! SELECT (osztondij*0.1) FROM Tanulo WHERE tannev LIKE "[!A-G]*";
11. feladat Listázzuk ki az összes tanuló nevét és ösztöndíjának 10%-kal emelt összegét! Az emelt összeg mező neve legyen: emelt! SELECT TanNev, (osztondij*1.1) AS emelt FROM tanulo;
12. feladat Hajtsunk végre 10%-os ösztöndíjemelést minden tanulóra! UPDATE tanulo SET osztondij=osztondij*1.1; Hajtsunk végre további 8%-os emelést minden 10-nél kisebb kódú tanulónál! UPDATE tanulo SET osztondij=osztondij*1.08 WHERE tankod<10;
13. feladat Írassa ki az összes hallgató összes adatát névsorban! SELECT * FROM tanulo ORDER BY tannev;
14. feladat Írassa ki az összes hallgató összes adatát ösztöndíj és azon belül név szerint rendezve! SELECT * FROM tanulo ORDER BY osztondij, tannev;
15. feladat Írassa ki, hogy havonta mennyi ösztöndíjat kell kifizetni a hallgatóknak! A számolt mező neve legyen osszes! SELECT SUM(osztondij) AS osszes FROM tanulo;
16. feladat Egészítsük ki a tábla szerkezetét egy neme nevű 1 karakteres típusú mezővel! (Az „N” érték jelentse, hogy a tanuló nő, az „F” érték jelentse, hogy a tanuló férfi!) ALTER TABLE Tanulo ADD neme varchar(1); Aktualizáljuk a táblát!
17. feladat Listázza ki a nő és a férfi hallgatók átlag ösztöndíját! Az átlagot jelző mező neve legyen atlag! SELECT Avg(osztondij) AS atlag FROM tanulo GROUP BY neme;
18. feladat Egészítse ki az előző lekérdezést úgy, hogy láthassuk, hogy melyek a férfiak, melyek a nők átlagai! SELECT Avg(osztondij) AS atlag, IIF(neme=„F”,”FÉRFI”,”NŐ”) AS [Tanuló neme] FROM tanulo GROUP BY neme;
19. feladat Hozzunk létre egy újabb táblát, mely a tanulók jegyeit tartalmazza. A tábla neve: JEGYEK, szerkezete: Tankod integer Tantargy varchar(20) Jegy Byte CREATE TABLE jegyek(tankod integer, tantargy varchar(20), jegy byte);
20. feladat Töltse fel úgy a táblát, hogy legyen olyan tanuló, akinek egy tárgyból több jegye van, legyen olyan tanuló, akinek nincs jegye (olyan kódú hallgatót nem kell felvenni a jegyek táblába!), de legyen olyan hallgató is, akinek csak 1 jegye van 1 tárgyból!
21. feladat Jelenítse meg a tanuló nevét, mellé a tantárgy megnevezését, és a megszerzett jegyet! SELECT tannev, tantargy, jegy FROM tanulo, jegyek WHERE tanulo.tankod=jegyek.tankod;
22. feladat Listázza ki azon hallgatók nevét, akik valamilyen tantárgyból jelest szereztek! SELECT DISTINCT(tannev) FROM tanulo, jegyek WHERE tanulo.tankod=jegyek.tankod AND jegy=5; (DISTINCT : ismétlődés elnyomás! Miért?)
23. feladat Listázza ki a tanulók nevét és átlageredményét! SELECT tannev, avg(jegy) as atlageredmeny FROM tanulo, jegyek WHERE tanulo.tankod=jegyek.tankod GROUP BY tannev;
24. feladat Írassa ki a tantárgy megnevezését és átlageredményét! SELECT tantargy, avg(jegy) as tantargyatlag FROM tanulo, jegyek WHERE tanulo.tankod=jegyek.tankod GROUP BY tantargy;
25. feladat Írassa ki a 3.0 átlagnál jobb eredményt elért tanulók nevét! SELECT tanulo.tannev FROM tanulo, jegyek WHERE tanulo.tankod=jegyek.tankod GROUP BY tanulo.tannev HAVING Avg(jegy)>3; Ha a lekérdezés feltételében függvény van, akkor azt a HAVING után kell írni!
26. feladat Írassuk ki azon tanulók nevét, akiknek a kódja 1,2,5,6 SELECT tannev FROM tanulo WHERE tankod IN (1,2,5,6);
27. feladat Írassuk ki azon tanulók nevét, akiknek a kódja nem 1,2,5,6! SELECT tannev FROM tanulo WHERE NOT (tankod IN (1,2,5,6));
28. feladat Kik azok a tanulók akik nem kaptak jegyet? SELECT tannev FROM tanulo WHERE NOT (tankod IN (SELECT tankod FROM jegyek));
29. feladat Listázza ki minden tanuló nevét és elért legjobb osztályzatát! SELECT tannev, max(jegy) FROM tanulo, jegyek WHERE jegyek.tankod=tanulo.tankod GROUP BY tannev;
30. feladat Keresse ki azon tanulók nevét, akik a legjobb osztályzatot érték el! (Nem biztos, hogy 5-ös!!!) SELECT DISTINCT (Tannev) FROM Tanulo, Jegyek WHERE Tanulo.Tankod=jegyek.tankod AND (jegyek.jegy=(SELECT max(jegy) FROM JEGYEK));
VÉGE