Adatbázisok - 4. rész

 

Az adatbázisokról szóló sorozat első három cikkében áttekintettük az relációs adatbázisok alapját és azok legfontosabb tulajdonságait. Ezek az információk szerves részét képezik annak anyagrésznek, amelyet a mostani cikkünkben elkezdünk. Ez pedig nem más, mint a relációs adatbázisok szabványosított lekérdező nyelve: az SQL nyelv.

 

 

Egy kis történelem…

 

1970-ben Codd alkotta meg a relációs adatmodell alapjait, és Ő volt az személy is, aki legelőször javaslatot tett egy egységes, a relációs adatmodellen alapuló új programnyelv létrehozására. A legelső, a relációs adatbázismodell koncepcióján alapuló lekérdezőnyelv az ALPHA volt. Nagyon sok más nyelv is megszületett ebben az időben, amelyek szintén az ALPHA filozófiáján alapultak (pl. SEQUEL, QUEL, SIDA stb.), de ezek soha nem terjedtek el széles körben, és éppen emiatt soha nem is váltak szabvánnyá. Sokan ekkor még kétkedésüknek adtak hangot, hogy a relációs modellen alapuló adatbázisok valóban életképesek-e?

Az igazi áttörést az 1980-as évek elején megjelenő személyi számítógépek (PC) és azok széles körben való elterjedése hozta magával. Ekkor született meg a dBase, majd később a FoxBase, Clipper és sok más, szintén PC-re írt relációs adatbáziskezelő nyelv. Az IBM cég által 1983-ban megjelentetett DB2 adatbáziskezelő rendszer alapján 1986-ban az ANSI (Amerikai Szabványügyi Hivatal), 1987-ben pedig az ISO (Nemzetközi Szabványügyi Szervezet) is szabványosította az SQL (struktúrált lekérdező nyelv) nyelvet.

 

Hiba lenne azt gondolni, hogy ekkor az az SQL szabványosítása itt véget ért. Nemsokára újabb szabványok is megszületettek (Pl. SQL89, SQL92), amelyek már az időközben felmerült igényekből megszületett fejlesztéseket, módosításokat vagy éppen kiegészítéseket is tartalmaztak.

 

Kialakulnak az SQL nyelvre épülő adatbáziskezelő rendszerek

Az SQL nyelvet alapul véve, több adatbáziskezelő rendszer is létrejött az idők folyamán. Így született meg a MsSQL Server, Oracle, Paradox csak, hogy a legjelentősebb adatkezelő rendszereket említsem. Ezek általános jellemzője, hogy bár az SQL nyelv szabványos elemeire épülnek, de a gyártók ennyivel nem elégedtek meg, mert termékeikbe beépítettek kisebb-nagyobb kiegészítéseket, ezáltal növelve meg az adott rendszer funkciókészletét. Így hoztak létre gyakorlatilag új lekérdező programnyelveket. Pl. a Microsoft SQL Serverében ezt Transact SQL-nek, még az Oracle rendszerében PL/SQL-nek nevezzük.

 

Joggal tehetjük fel most a következő kérdést:

 

Mennyire szabványosak, vagy éppen mennyire kompatibilisek egymással ezek a rendszerek? Erre egy kicsit bonyult helyes választ adni. Általánosságban azt mondhatjuk, hogy ameddig a szabvány SQL lekérdező nyelvet használják a relációs adatkezelő műveletekhez, valamint az adattáblák felépítése is a szabványosított SQL-ben lefektetett megállapodások szerint épül fel, addig gond nélkül lehet adatokat egyik rendszerből a másikba importálni, adatokat cserélni az egyes adatbázisok között.

 

Mihelyst azonban az egyes rendszerek sajátosságainak megfelelően, vagyis az SQL szabványtól eltérő módon szeretnénk adatműveleteket végrehajtani, problémák adódhatnak az egyes adatbáziskezelő rendszerek között.

 

Minden relációs adatbáziskezelő nyelvre jellemző, hogy az adatokat logikai táblaként értelmezik.

(Az, hogy az adatokat a háttértárolón vagy éppen a memóriában fizikailag hogyan tárolják, az ebből a szempontból számunkra nem lényeges.) Minden relációs adatbáziskezelő nyelvben éppen ezért mindig az eső lépés a relációk (vagyis a táblák) szerkezetének a pontos meghatározása, valamint az ebben szereplő attribútumok (tulajdonságok) megfogalmazása. Ez azt jelenti, hogy pontosan definiáljuk az egyes tulajdonságok típusát és méretét (hasonlóan a programozási nyelvek változóinak deklarációjához), meghatározva ezzel azt, hogy a későbbiekben milyen értékeket tárolhatnak.

 

Bár az adattípusok az egyes rendszerekben nagyon eltérőek is lehetnek, mégis minden rendszer tartalmazza a következő attribútom-típusokat:

 

·                                                         numerikus egész

·                                                         decimális

·                                                         karakteres

·                                                         dátum

·                                                         logikai

 

(Később pontosan is bemutatásra kerülnek majd az egyes adatbázisrendszerek saját típusai.)

 

Host-nyelv, önálló programnyelv

Kétféle adatbáziskezelő nyelv létezik. Az egyik az ún. host (befogadó) típusú nyelv, amely csak egy másik programnyelvvel együtt képes működni. Ez igaz a relációs adatkezelő rendszerekre is. Aki programozott már PHP-ben, vagy éppen ASP-ben az tudja, hogy adatkezelő műveleteknél csak az SQL szabványban meghatározott parancsokat használhatjuk. Ilyenkor a HTML és PHP/ASP kódba szúrjuk bele az SQL parancsokat, és ezen programnyelvek parancsértelmezője hajtja végre az SQL utasításokat. Hasonlóképpen pl. a Pascal nyelvben is használhatunk SQL parancsokat.

 

Az adatbáziskezelő nyelvek másik típusa, ún. önálló programnyelv. Ez azt jelenti, hogy magában a programozási nyelvben is találunk adatkezelő utasításokat a hagyományos programozási utasítások (ciklus- és feltétel kezelés, Input/Output utasítások stb.) mellett. Ilyen önálló adatkezelő nyelv pl. a dBase nyelv.

 

Mi azonban ebben a cikksorozatban nem foglalkozunk az önálló programozási nyelvekkel, csak megemlítettük, hogy ilyen is létezik.

 

Nézzük inkább meg az SQL parancsok csoportosítását.

 

Általánosságban az SQL parancsokat három csoportba sorolhatjuk.

 

Az első csoportba tartoznak az ún. adatdefiníciós SQL parancsok. Ezeknek a parancsoknak a segítségével hozunk létre adatbázisokat és adattáblákat, valamint ugyanezen utasítások segítségével tudjuk a táblákat adatokkal feltölteni, a táblákat/adatokat módosítani,  vagy éppen törölni.

 

A második csoportba tartoznak a lekérdező parancsok. (Valójában ebből csak egy parancs létezik az SQL nyelvben, de később látni fogjuk, hogy ennek az egy parancsnak a használatával hányféle lekérdezést fogunk tudni megvalósítani. Ezért is használom tudatosan a többes számot.)

 

Végül, de nem utolsó sorban vannak vezérlő parancsok amelyekkel pl. fájlok megnyitását/lezárását, kurzorok létrehozását tudjuk vezérelni.

 

 

A következő cikkünkben részletesen is megismerkedünk az SQL parancsokkal.

 

Kiszely Gábor - kg@kgb.hu