ÜZLETI INFORMATIKAI ESZKÖZÖK Adatbázis-kezelés
|
1
Adatbázis-kezelés 1. gyakorlat A gyakorlat során MySQL adatbázis-szerver és a böngészőben futó phpMyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni: ● Az adatbázis-rendszer elemeinek áttekintése ● Adatbázishoz történő hozzáférés ● Adatbázis táblák struktúrájának, tartalmának megtekintése ● Keresés az adatbázisban
MySQL, PhpMyAdmin A gyakorlatokon a a MySQL és PhpMyAdmin szoftverek legfontosabb lehetőségeit tekintjük át, a gyakorlatok anyagán túlmutató részletes információkért tanulmányozzuk a szoftverek dokumentációját.
© Dr. Fülep Dávid (Széchenyi István Egyetem), 2015-2017
ÜZLETI INFORMATIKAI ESZKÖZÖK Adatbázis-kezelés
|
2
Az adatbázisokkal folytatott munka előtt emlékezzünk, milyen szoftverkomponensekből áll egy adatbázis-rendszer.
A mai munka során MySQL adatbázis-szervert fogunk használni a phpMyAdmin szoftver segítségével. Indítsunk egy böngészőt, és írjuk bele: http://193.224.129.119/dbgyak. Az adatbázis-hozzáféréshez jogosultságra van szükségünk. A gyakorlat céljaira használjuk az uNEPTUNKÓD felhasználónevet (ahol NEPTUNKÓD helyett természetesen minden hallgató a saját neptun kódját használja). Az ehhez tartozó jelszó is ugyanaz. Az ABC123 neptunkódú hallgató felhasználói neve tehát uABC123, jelszava uABC123. Figyeljünk a kis- és nagybetűk különbözőségére.
© Dr. Fülep Dávid (Széchenyi István Egyetem), 2015-2017
ÜZLETI INFORMATIKAI ESZKÖZÖK Adatbázis-kezelés
© Dr. Fülep Dávid (Széchenyi István Egyetem), 2015-2017
|
3
ÜZLETI INFORMATIKAI ESZKÖZÖK Adatbázis-kezelés
|
4
A továbbiakban, amikor e leírásban az uNEPTUN vagy hasonló nevet használjuk, akkor azt minden hallgató a saját neptun kódjának behelyettesítésével értelmezze.
© Dr. Fülep Dávid (Széchenyi István Egyetem), 2015-2017
ÜZLETI INFORMATIKAI ESZKÖZÖK Adatbázis-kezelés
|
5
Bejelentkezés után a következőhöz hasonló kép fogad:
A bejelentkezéssel a program automatikusan hozzákapcsolódott egy adatbázis-szerverhez. A jobb oldalon láthatjuk e szerver legfontosabb paramétereit (a szerver típusát, verziószámát - ezek részletekbe menő, bonyolultabb feladatok esetén fontosak, számunkra e pillanatban nincsen jelentősége). Itt mondjuk el, hogy a lehetőség bár technikailag adott más megoldásra is, az adatbázis-rendszerek tipikusan olyan módon működnek, hogy a kért módosítások azonnal végrehajtásra és tárolásra kerülnek, és ezek visszavonására nincsen mód. Ezért az adatbázisokon mindig nagy körültekintéssel végezzünk módosításokat. A bal oldali listában pedig az adatbázisokat látjuk - pontosabban csak azon adatbázisokat, amelyekhez egyáltalán megtekintési jogunk van. Az adatbázis neve után a zárójeles szám azt mutatja, hány tábla van az adatbázisban. Itt két adatbázishoz van jogunk, egyik a saját dbNEPTUN adatbázis (ez most teljesen üres), aminek menedzselésére teljes jogkört kaptunk, illetve a dbGyak adatbázis, amire csak olvasási joga van az egyes hallgatóknak. Kattintsunk a bal oldalon a dbGyak adatbázis nevére, és tekintsük át, milyen táblákat tartalmaz (ezek természetesen változnak a tárgyhoz kapcsolódó feladatok függvényében.)
© Dr. Fülep Dávid (Széchenyi István Egyetem), 2015-2017
ÜZLETI INFORMATIKAI ESZKÖZÖK Adatbázis-kezelés
|
6
Adatok importálása táblázatkezelőből Nyissuk meg a gyerekek.xls fájlt, ami egy óvoda gyerekeinek legfontosabb adatait tartalmazza. A feladatunk, hogy egy adatbázistáblába töltsük az adatokat.
Mentsük el az adatokat CSV formátumban (Comma Separated Value, azaz vesszővel elválasztott értékek: a csv fájl egyszerű szövegfájl, amiben az egyes oszlopokat (mezőket) vessző vagy pontosvessző választja el, a szövegek szükség szerint idézőjelezve vannak.)
© Dr. Fülep Dávid (Széchenyi István Egyetem), 2015-2017
ÜZLETI INFORMATIKAI ESZKÖZÖK Adatbázis-kezelés
|
7
Jegyezzük meg, hogy mit állítottunk be mezőelválasztónak és szöveghatárolónak. (Az angol nyelvű programok alapértelmezetten a vesszőt használják erre a célra, innen ered maga a CSV név is. A magyar Excel pontosvesszőt ajánl fel, hiszen a vesszőt a tizedestörtekhez használja.) A .csv fájl így néz ki:
© Dr. Fülep Dávid (Széchenyi István Egyetem), 2015-2017
ÜZLETI INFORMATIKAI ESZKÖZÖK Adatbázis-kezelés
|
8
Ezután a phpMyAdmin felületén válasszuk ki a dbNEPTUN adatbázist, majd az Importálás ablakot:
Tallózzuk be az imént készített .csv fájlt, és figyeljünk a mezőket elválasztó, illetve a mezők szöveghatároló karaktereire, hogy a fájl tartalmával összhangban állítsuk be. Kattintsuk be a A fájl első sora tartalmazza a tábla oszlopneveit(az első sor tartalmazza az oszlopfejlécet, azaz a mezőneveket) opciót. Megfigyelhetjük, hogy a phpMyAdmin programban legtöbbször az Indításgomb végzi el a kért műveletet. A megfogalmazás magyarázata az, hogy az adatbázis-szervernek adott parancsok, lekérdezések indítását kezdeményezzük.
© Dr. Fülep Dávid (Széchenyi István Egyetem), 2015-2017
ÜZLETI INFORMATIKAI ESZKÖZÖK Adatbázis-kezelés
|
9
Létrejön egy táblázat, ami jelen esetben a TABLE 1 nevet kapta. Erre a bal oldalon rákattintva meg is tekinthetjük a táblánk tartalmát:
Az ablak tetején figyelmeztetést kapunk, hogy az adatbázis-szerver nem tudja az új táblánk egyes sorait megkülönböztetni, mert nem adtunk meg egy sort egyértelműen azonosító adatot. (Ezt hívják kulcsnak, a későbbiekben részletezzük.)
A probléma megoldására a Szerkezet menüpontra kattintva módosítsuk a Jel mező illesztését utf8_hungarian_ci értékre a Módosítás gomb megnyomásával:
Ezután pedig a Több lenyíló listájából állítsuk be, hogy a Jel egyedi legyen (hiszen egy óvodában minden gyereknek különböző a jele):
© Dr. Fülep Dávid (Széchenyi István Egyetem), 2015-2017
ÜZLETI INFORMATIKAI ESZKÖZÖK Adatbázis-kezelés
|
10
Így megtanítottuk az adatbázis-szervernek, hogy hogyan tudja egyedileg beazonosítani a rekordokat. Ezután az egyes sorok (rekordok) elején lévő jelekkel az adatokat szerkeszthetjük, vagy a rekordot ki is törölhetjük. Módosítsunk egy rekordot:
Ha a rekordok elején levő kis négyzeteket bepipáljuk, egyszerre kezelhetünk, például törölhetünk ki több rekordot:
© Dr. Fülep Dávid (Széchenyi István Egyetem), 2015-2017
ÜZLETI INFORMATIKAI ESZKÖZÖK Adatbázis-kezelés
|
11
Ezután s Szerkezetgombra kattintva töröljük ki a Csoportkód mezőt, a Cím mező nevét pedig módosítsuk Lakcím-re.
Töröljük ki táblát az Eldobásgomb megnyomásával. Ez egy veszélyes parancs, ezért rákérdez: biztosan ezt akarjuk?
© Dr. Fülep Dávid (Széchenyi István Egyetem), 2015-2017
ÜZLETI INFORMATIKAI ESZKÖZÖK Adatbázis-kezelés
|
12
Itt is érdemes megfigyelni, hogy a futtatás előtt valójában a táblatörlést jelentő SQL parancs végrehajtására kérdezett rá a program. Más szóval, a kényelmes ablakos felület használata mellett a háttérben futó konkrét SQL parancsot is láthatjuk. Ezeket a parancsokat a későbbiekben meg fogjuk tanulni, és mi magunk is ki fogunk tudni adni hasonlóakat. Importáljuk újra az óvodások adatait, ezt több módon is megtehetjük. Az előbb .csv fájlból töltöttük be az adatokat, ami az importálás egy szokásos módja, de jelen esetben, mivel adataink számolótábla fájlban vannak, még egyszerűbben is betölthetjük az adatokat. A phpMyAdmin képes többek között .ods fájlok olvasására is. (Ha nincs ilyen fájlunk, az excel formátumból menthetünk magunknak.) Nyomjuk meg az Importálásgombot és válasszuk a gyerekek.ods fájlt.
Láthatjuk, a tábla nevét a munkalap neve adta. Most nem jelöltük be, hogy az első sorban mezőnevek vannak, ezért magunknak kell majd átneveznünk a mezőket, illetve törölnünk kell az első rekordot:
© Dr. Fülep Dávid (Széchenyi István Egyetem), 2015-2017
ÜZLETI INFORMATIKAI ESZKÖZÖK Adatbázis-kezelés
|
13
A mezőnevek módosításához kattintsunk a Szerkezet gombra, ahol elvégezhetjük a szükséges módosításokat. A mezőnevek egyenként is módosíthatók, de az összes mezőt kipipálva egyszerre is szerkeszthetjük azokat. A mezőnevek megfelelő beállítása után töröljük ki a mezőneveket tartalmazó első rekordot.
© Dr. Fülep Dávid (Széchenyi István Egyetem), 2015-2017
ÜZLETI INFORMATIKAI ESZKÖZÖK Adatbázis-kezelés
|
14
Adjunk a táblához egy mezőt, amit a Név mező után szeretnénk látni a táblastruktúrában: 1 mező hozzáadása a Név után.
A beszúrandó mező neve Azonosító, ami egy egész szám (INT), legyen, és az adatbázis-szerverre bízzuk, hogy minden rekordhoz generáljon egy növekvő egyedi számot (AUTO_INCREMENT).
© Dr. Fülep Dávid (Széchenyi István Egyetem), 2015-2017
ÜZLETI INFORMATIKAI ESZKÖZÖK Adatbázis-kezelés
|
15
Itt a korábbiaktól eltérően a Mentés gombot nyomjuk meg. A táblázat adatait megtekintve ellenőrizhetjük az új egyedi, növekvő azonosító számot:
A Műveletek fülre kattintva adjunk beszédes nevet (ovoda) a táblánknak. Szokás a magyar ékezetes betűk mellőzése.
© Dr. Fülep Dávid (Széchenyi István Egyetem), 2015-2017
ÜZLETI INFORMATIKAI ESZKÖZÖK Adatbázis-kezelés
|
16
A PhpMyAdmin rendszerben egy-egy tábla adataiban egyszerű esetekben a Keresés gomb megnyomásával kereshetünk, összetettebb esetekben mindenképp szükség van a megfelelő parancsok ismeretére. E tantárgy során az SQL nyelv megismerése a cél, ezért a gyakorlatok során is a parancsok kiadását preferáljuk, és a Keresés gomb mögötti funkció vizsgán sem lesz használható. A keresést is normál SQL parancsként kell kiadnunk. A legegyszerűbb esetek nagyon könnyen érthetőek, elsőként keressük meg, van-e olyan gyerek, akinek benzin a jele. Kattinsunk az SQL menüpontra, ahol a következő parancsot kell kiadnunk (vegyük észre, hogy ebben az egyszerű esetben az alapból megjelenő parancsot kell csak kis mértékben módosítanunk): SELECT * FROM ovoda WHERE Jel=”benzin”
A választ tábla formájában kapjuk. Most keressünk Petra nevű gyerekeket. Ehhez a Név mezőt is be kell vonnunk a keresésbe, ahol a % jel akárhány tetszőleges karaktert jelent. Ekkor persze már nem pontos egyezést, hanem mintaillesztést használunk, amire a LIKE kulcsszóval jelzünk. Így biztosítjuk, hogy a Petra szó a név mezőben bárhol előfordulhasson: SELECT * FROM ovoda WHERE Név LIKE ”%Petra%”
© Dr. Fülep Dávid (Széchenyi István Egyetem), 2015-2017
ÜZLETI INFORMATIKAI ESZKÖZÖK Adatbázis-kezelés
|
17
Keressük az összes olyan gyereket, akinek az apja a Béla nevet viseli! Az eredménylista legyen a gyerekek neve szerint rendezve, és a gyerek neve mellett csak a szülők nevét tartalmazza: SELECT Név, Anyjaneve, Apjaneve FROM ovoda WHERE Apjaneve LIKE “%Béla%” ORDER BY Név Az eredmény:
© Dr. Fülep Dávid (Széchenyi István Egyetem), 2015-2017
ÜZLETI INFORMATIKAI ESZKÖZÖK Adatbázis-kezelés
|
18
A listában észrevehetjük, hogy az egyik gyereknek nincsen anyja, pontosabban az anyjának nincsen neve. Ezt a szerkesztés gombra kattintva javíthatjuk ki egy kitalált névvel. (A név szerkesztését az UPDATE paranccsal is megtehetnénk, de ne akarjunk minden SQL parancsot egyszerre megtanulni, a mai alkalommal maradjunk a SELECT adatlekérdező parancs gyakorlásánál.) Ellenőrizzük, van-e másik gyerek, akinél az Anyjaneve mező szintén nincs kitöltve. Az IS NULL kulcsszó segítségével kell keresnünk. Ha találtunk hibát, javítsuk ki. SELECT * FROM ovoda WHERE Anyjaneve IS NULL Keressünk 2009-ben született gyerekeket! Az efféle feladatokhoz ellenőriznünk kell, hogyan tárolódnak a dátumok. A mi táblánkban jelen esetben egyszerű szöveges adat a születési dátumot tartalmazó mező. (Vannak kimondottan dátumok és időpontok tárolására szolgáló mezők is, ilyenekre majd később látunk példákat) (Szülidő LIKE 2009-%) Az előző megfigyelésünk alapján változtassuk fix hosszúságúra a szülidő mezőt, ezzel elkerülhetünk bizonyos adatbeviteli hibákat, ráadásul a tárolást is hatékonyabbá tesszük (lásd később). (CHAR 10) Keressünk májusi születésű gyerekeket! (%-05-%) Keressünk olyan gyerekeket, akik szeptember 23-án születtek! (%-09-23) Keressünk olyan gyerekeket, akik nem Győrben laknak! (NOT LIKE Győr,%)
A feladat befejezése Az adatbázisban történő munka kapcsán figyeljük meg, hogy alapvetően nincsen szükség mentésre, a módosításaink azonnal tárolódnak. Így a munka végeztével kijelentkezhetünk a phpMyAdmin rendszerből, de valójában a böngészőablak bezárásával is pontosan ugyanazt érjük el. Az adataink megmaradnak, és a későbbi gyakorlatokon tovább is dolgozunk majd rajtuk.
© Dr. Fülep Dávid (Széchenyi István Egyetem), 2015-2017