MySQL mindenkinek 3

MySQLElég volt a dumából, ideje lenne nekilátni a valódi munkának! A türelmetlenség legalább akkora erénye a jó programozónak mint amekkora hátránya. A megfelelő tervezés és háttérinformációk sok későbbi többlet munkától kímél meg bennünket. Kellőképpen telepumpáltuk a fejünket az okossággal, szóval akkor hajrá!

A MySQL szerver

MySQL adatbázisokkal való játszadozásunkhoz szükségünk lesz pár műanyag katonára. Az egyik maga a MySQL szerver. Ennek telepítéséről nem akarok itt írni, a legjobb leírások alapján is 2 napig tart első alkalommal életre kelteni, aztán pár átkínlódott kísérlet után az ember bármilyen rendszeren összerakja 2 perc alatt. Linux rendszereken a csomagkezelők elég jól a kezünk alá dolgoznak, a kevésbé humánus rendszereken (illetve akár Linuxon is) az Xampp talán a legjobb választás. Ha kezeink nincsenek megkötve akkor kísérletezzünk az 5-ös verzióval, mivel jópár igen hasznos újítással van felvértezve.

A MySQL parancssori kliens

A különböző kliensek közül kétségtelenül a legintelligensebb és legrugalmasabb a mysql kliens parancssora.

Általánosságban minden parancssori alkalmazással kapcsolatban két igazságot kell kimondanunk.

  • Ha a kezdőknek el akarjuk venni a kedvét bármilyen programozással kapcsolatos ügytől vegyük elő a parancssort.
  • Ha egy haladó felhasználó életét meg akarjuk keseríteni tiltsuk le a parancssoros hozzáféréstől.

phpMyAdmin

A különféle grafikus MySQL kliensek közül a phpMyAdmin a legelterjedtebb. Könnyen telepíthető minden operációs rendszeren, csupán futó webszervert és phpt kíván maga alá. Ezek véletlenségből részei a fent emlegetett Xampp csomagnak. Ennek telepítésébe sem kívánok belebonyolódni pont az igaz rá mint a MySQL-re.

A phpMyadmin esetünkben a többi előnye mellett azért egy jó grafikus kliens választás mert katt-katt alapon majdnem bármilyen adatbázis műveletet is elérhetünk.

Ha mondjuk a webszerver phpmyadmin könyvtárába telepítjük, akkor böngészőben meghívva a http://localhost/phpmyadmin címet a következő kép fogad.

Adatbázis létrehozása

Éles rendszereken többnyire a rendelkezésünkre álló mezei júzernek nem lesz joga adatbázist létrehozni, de jelenleg a cseppet sem biztonságos jelszó nélküli root-ként futunk, szóval semmi sem akadályoz meg abban, hogy létrehozzuk első adatbázisunkat.

Ha valaki még emlékszik rá, a sorozat első részében azt mondtuk, hogy az adatbázis az adattábláink összessége. Létrehozásához három dolgot kell tennünk.

  • Ki kell találnunk egy nevet az adatbázis számára. Amennyiben lehetséges hanyagoljuk az ékezetes karaktereket és a hagyományoknak megfelelően csak kisbetűket használjunk. Én a rendkívül ötletes iskola nevet adtam az adatbázisnak és bepötyögtem az Új adatbázis létrehozása mezőbe.
  • Ki kell választanunk az adatbázisban használni kívánt karakterkódolást.
  • Rá kell böknünk a Létrehoz gombra.

Karakterkódolások

Praktikusan a webalkalmazások minden egyes rétege külön karakterkódolással rendelkezhet és számtalan fura hibát okoz ha az egyes rétegek kommunikációjában valamiféle karakterkódolási inkompatibilitás lép fel. Mindehhez hozzáadódik a MySQL karakterkódolási rendszere.

A MySQL megkülönböztet karakterkódolást és collation-t (egybevetés). A collation rendezéseknél fontos, például amíg a general_ci az ékezetes betűket hátra solrolja a hungarian_ci a helyükre teszi őket.

Beállíthatunk magának a MySQL szervernek, a MySQL kliens-szerver kapcsolatnak, egy konkrét adatbázisnak, táblának sőt oszlopnak is karakterkódolást. Persze ha csak nincs valami speciális oka akkor mindezeknek azonos karakterkódolást fogunk adni. A szerver alapértelmezett karakterkódolásának módosításához általában nem lesz jogosultságunk, de a többit be tudjuk állítani. Ha adataink tartalmaznak ékezetes betűket akkor az utf-8 karakterkészlet alkalmazása javasolt. A további kavarodások elkerülése érdekében érdemes a webszerver fájljait utf-8-ban tárolni, és utf-8 header-rel kiküldeni őket. Ha az adatbázis kapcsolatunk is utf-8-ban kommunikál akkor jó eséllyel elhárítottunk minden karakterkódolási galibát. A csatlakozás után közvetlenül az első parancs lehet a SET NAMES utf8; ami időnként hasznos ilyen esetekben. Az egyszerűség kedvéért a MySQL kötőjel nélkül használja az utf8 elnevezést, ellentétben minden más webalkalmazás réteggel.

CREATE DATABASE

Akkor visszatérve a phpMyAdminhoz beállítjuk, hogy utf8és utf8_hungarian_ci collation és rábökhetünk a létrehoz gombra.

A phpMyAdmin létrehozza az adatbázist és meg is mutatja az ehhez szükséges SQL parancsot.

CREATE DATABASE `iskola` 
	DEFAULT CHARACTER SET utf8 
	COLLATE utf8_hungarian_ci;

Táblák létrehozása

Adatbázisunk már létrejött, így következő lépésként létrehozhatjuk a tábláinkat. Kezdjük a diákok táblával. Ehhez az Új tábla létrehozása az iskola adatbázisban című mezőbe beírjuk, hogy iskola a mezők számához pedig, hogy 2.

Ennek hatására belépünk a tábla létrehozó részbe. Itt meg kell adnunk a táblánk mezőinek nevét, típusát, valamint néhány további részletet.

Az id mezőt SMALLINT típusúnak választottuk UNSIGNED, azaz előjel nélküli tulajdonsággal. Így 0-65.535 közötti értéket vehet fel. Tiltjuk, hogy a mező NULL értéket vegyen fel a not null kiválasztásával.

A diak mezőt VARCHAR típusúnak választottuk 45 karakteres hosszúsággal és tiltjuk a null értékeket. Jó szokás ha mindig megadunk egy alapértelmezett értéket is minden mezőnek. Itt 0-t adtunk meg.

Két dolgot kiválasztottunk még itt amiről eddig nem esett szó.

PRIMARY KEY

Amennyiben az egyes tábláinkat össze akarjuk kapcsolni – márpedig döntő többségben összeakarjuk ha már egyszer relációs adatbázissal dolgozunk – akkor szükségünk lesz valamiféle azonosítóra, ami arra szolgál, hogy minden egyes rekord egyértelműen beazonosítható legyen.

Hogy keressünk egy könnyen érthető példát általános iskolában az osztályunkban én voltam az egyetlen Sándor, szóval ha valaki szólt, hogy Sanyi, Sanya, Sancilla akkor mindenki tudta, hogy kiről volt szó, a név egyértelműen azonosított. Jánosból viszont három is volt, náluk ez nem volt egyértelmű azonosító. Így egyikük Jani lett, a másikuk Jancsi, a harmadik meg János. Ők így kapták meg egyértelmű azonosítójukat. Kicsit számítógépesítve megállapításunkat kimondhatjuk, hogy amenyiben nagy tömegű adattal dolgozunk szükségünk van az adatokat egyedileg azonosítani. Az azonosító nem ismétlődhet, mivel akkor nem azonosítana egyedileg. Például egyik Jánosunkat sem hívhattuk volna egyszerűen hülyegyereknek, mert ez nem elég egyértelmű, legalább az osztályunk 40%-ára rápasszolt volna az elnevezés velem együtt 🙂

Itt lép színre az id mező. Ha megnézzük a tábláinkat akkor azok a táblák amik nem csak kapcsolatot írnak le, hanem a tényleges adatokat tartalmazzák mind-mind tartalmaznak egy id mezőt. Egyediségét úgy biztosítjuk, hogy numerikus adattípust választunk neki, és extra tulajdonságként AUTO_INCREMENT-et állítunk be neki. Az AUTO_INCREMENT mezőknek az az áldásos tulajdonsága, hogy új rekord beszúrásakor automatikusan megkapja a következő számot. Azaz ha az utolsó rögzített id 4 akkor új rekord beszúrásakor az automatikusan 5-öt kap.

Ezen felül az adatbázis szerver tudtára is kell adnunk, hogy ezt a mezőt akarjuk azonosítóként használni. Erre szolgál a a kis kulccsal ábrázolt kiválasztott jellemző. Ha rámutatunk az egérrel akkor a nevét is megmondja: Elsődleges vagy Primary. Ha jobban megnézzük az eddigi adatbázis modellt ábrázoló képeinket ott is jelölve vannak a kis kulcsocskák. Az egyedi azonosítókat PRIMARY KEY-nek hívjuk.

Táblatípusok

A másik ügy amiről mégnem beszéltünk azok a táblatípusok. A MySQL többféle táblatípust ismer. A két leggyakrabban használatos táblatípus a MyISAM és az InnoDB. Az egyes táblatípusok eltérhetnek tárolási, indexelési eljárásukban, illetve szolgáltatásaikban. Egyenlőre válasszuk az alapértelmezett MyISAM táblatípust, az InnoDB típussal egy későbbi részben fogunk megismerkedni.

Tehát a táblát az alábbiak szerint hozzuk létre.

CREATE TABLE

A fentieket végrehajtva a phpMyAdmin létrehozza az új táblát a következő SQL utasítás segítségével.

CREATE TABLE `iskola`.`diakok` (
	`id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
	`diak` VARCHAR( 45 ) NOT NULL DEFAULT '0'
) ENGINE = MYISAM;

A fentiek segítségével remélhetőleg mindenki létre tudja hozni az összes felvázolt adattáblát. Türelmetlenek számára letölthető a teljes SQL script.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.