• Nem Talált Eredményt

Az SQL formális szabályai

7. Lecke: Az SQL nyelv és nyelvjárásai, a MySQL

7.5 Az SQL formális szabályai

Ahogyan korábban említettük, az SQL nem tartozik a hagyományos érte-lemben vett programozási nyelvek közé, azaz nem procedurális nyelv. Nem tartalmaz vezérlési szerkezeteket, nem támogatja a felhasználói interakciót és a fájlkezelést, továbbá csak korlátorozottan és nyelvjárástól függően engedi a változók használatát, illetve az eljárások, illetve függvények deklarálását.

A deklaratív nyelvekkel azért hozható összefüggésbe, mert nem támogatja, és nem is teszi szükségessé a feladat megoldásának leírását. Az SQL-ben a forrásadatokat, és az azok feldolgozása nyomán várt eredményt kell a lehető legpontosabban leírnunk. Az eredmény kialakítása, a feladat elvégzése az adatbázis-kezelő rendszer dolga.

A nyelv logikus fölépítésű, és gyorsan megérthető. Az SQL-mondatok min-dig a műveletet meghatározó paranccsal kezdődnek, és pontosvesszővel (;) fejeződnek be. A parancsot, meghatározott sorrendben különböző kötelező és opcionális elemek követhetik:

 az SQL fenntartott szavai (kulcsszavak),

 tábla- és mezőhivatkozások,

 értékek, literálok,

 matematikai, szöveges és logikai kifejezések,

 a kifejezésekbe írt függvényhivatkozások.

Az SQL-mondatok megfogalmazását csak az nehezítheti, hogy a parancsok a várt eredmény minél pontosabb megfogalmazhatósága érdekében számos opcionális nyelvi elemmel egészíthetők ki. Ez flexibilitás – a nyelv egyébként pontosan meghatározott nyelvtana ellenére – a műveletek árnyalt, apró részle-tekre is kiterjedő megfogalmazását teszi lehetővé az adatbázis kezelője számára.

A nagyszámú opcionális elem nagy szabadságot biztosít ugyan a feladatok leírásában, de megnehezíti a parancsok nyelvtani szabályainak ábrázolását.

Ezért mielőtt a tényleges parancsok bemutatására rátérnénk, meg kell ismer-nünk a nyelvtani szabályok leírására használt formalizmusokat.

NAGYBETŰS szavak: az SQL nem érzékeny a kis- és nagybetűk közötti különbségekre. A formai leírásokban használt nagybetűs szavak olyan nyelvi szavakat jelölnek, amelyeket pontosan a leírásban megadott mó-don, változtatás nélkül lehet csak használni. Ezek mindig az SQL saját kulcsszavai. A mondatokat állítmányaként felfogható parancsok, a pa-rancsokat kiegészítő paraméterek megadására alkalmas záradékok, és az azokat kiegészítő egyéb fenntartott szavak alkothatják.

Dőlt betűk: a nagybetűvel írt szavakkal szemben a dőlt betűs szövegek nem megadott formában kerülnek az SQL mondatokba. Helyükre is-mert, vagy a leírás későbbi részben részletezett nyelvi elemeket kell behelyettesíteni.

[szögletes zárójelben megadott szöveg]: Mint azt rövidesen tapasztal-juk, az SQL-mondatokban általában meglehetősen kevés a kötelező nyelvi elem. Ugyanakkor szinte mindegyik parancsot opcionálisan hasz-nálható, elhagyható nyelvi elemek egész sora egészíti ki. Ezek közül mindig csak azokat kell használni, amelyek a kívánt eredmény pontos leírásához szükségesek.

Az elhagyható nyelvi elemek szögletes zárójelek között szerepelnek.

Ez egyben azt is jelenti, hogy ha egy parancs, vagy paraméter nincsen szögletes zárójelben, akkor használata kötelező!

| függőleges vonal (cső karakter): Az egyes nyelvi elemek között elhe-lyezve azt jelzi, hogy azok közül egyet, és csak egyet választanunk kell SQL-mondat megfogalmazásakor.

Nyelvi elemek sorrendje: Mint említettük az egyes SQL parancsokhoz számos opcionálisan használható elem kapcsolódik. Ezek használatáról a cél ismertében dönthetünk. A használt nyelvi elemek sorrendje azon-ban nem felcserélhető, mindig a formális leírást követi.

Kis- és nagybetűk: Mint tudjuk, a szintaktikai leírásokban az SQL nyelv fenntartott szavait nagybetűkkel tűntetjük fel. A jobb olvashatóság ér-dekében a tényleges SQL mondatokban is szokás a kulcsszavak nagybe-tűs leírása, ez azonban nem kötelező. Az adatbázis-kezelő rendszerek nem különböztetik meg a kis-és nagybetűket. A DBMS számára a se-lect ugyanazt jelenti, mint a SELECT. A fájlrendszerben is megjele-nő adatbázis elemek – mint például a MySQL+adatbázisok a táblái – ne-veiben azonban a DBMS-t futtató gép operációs rendszere határozza meg a kis- és nagybetű érzékenységet. A Unix-rendszereken futó MySQL esetében van különbség egy táblanév kis- és nagybetűs változata kö-zött, Windows operációs rendszer esetében nincs.

Szövegliterálok: A szövegliterálokat az SQL-ben – de az informatikában általában is – egyszeres, vagy dupla aposztrófok közé zárjuk.

SELECT ‘szöveg’) v.

SELECT (“szöveg”)

{kapcsos zárójelbe zárt szöveg}: A kapcsos vagy francia zárójelek közé zárt szöveg logikai egységet alkotó nyelvi elemeket jelöl. A tényleges SQL-mondatokban nem szabad szerepeltetni a zárójeleket.

Sortörés: Az SQL mondatok szavait egy vagy több közkarakterrel (szó-köz, tabulátor, sorvég) kell elválasztani. A mondatokat tehát a szavak határán tetszőleges számú sorra tördelhetjük, a sorokban pedig további közkarakterekkel tagolhatjuk a szöveget. Az egynél több egymást köve-tő közkaraktert egyszerűen figyelmen kívül hagyja DBMS. Ez alkalmas a mondatok olvashatóságának fokozására, ami pedig sokat segíthet az esetleges hibák felkutatásában. A hosszabb mondatok ugyanis sokkal könnyebben átláthatók és megérthetők, ha több sorba tördelve, és a sorokban behúzásokat elhelyezve gépeljük be őket. Az egyes parancsok formális leírásaiban is alkalmazzuk ezeket a sortöréseket, de használat-kor szabadon dönthetünk alkalmazásukról.

Az alábbi példa egy egyszerű DCL-parancson keresztül mutatja be a formális leírás értelmezését. A parancs a felhasználók jelszavának megváltoztatására alkalmas.

SET PASSWORD [FOR user] = PASSWORD('jelszó')

| OLD_PASSWORD('jelszó') | 'kódolt jelszó'

A fenti szintaktikai leírást az alábbiak szerint értelmezhetjük.

A jelszó megadásakor kötelező használni a SET és PASSWORD kulcsszavalat, amelyeket kötelezően egyenlőségjel követ.

Ezután három lehetőség közül az egyiket kell használnunk.

A PASSWORD függvény paraméterként szövegliterál formájában adjuk meg az új jelszót,

vagy

az OLD_PASSWORD függvényt használjuk hasonló módon, vagy

közvetlenül a kódolt jelszót adjuk meg literálként.

A FOR user elhagyható. Ha megadjuk a FOR kulcsszót, akkor utá-na a megfelelő felhasználó azonosítójáutá-nak kell szerepelnie. A FOR user használatával egy pontosan megadott felhasználó, elhagyá-sával saját magunk jelszavát változtatjuk meg.