SQL Tankönyv elmélet

  • Upload
    carefex

  • View
    241

  • Download
    0

Embed Size (px)

Citation preview

TARTALOMJEGYZK

Oldal 1. Az SQL trtnete s jellemzi ......................................................................................................1 2. Az SQL objektumai ......................................................................................................................1 2.1. Katalgus tblzatok ................................................................................................................1 2.2. Tblzat......................................................................................................................................1 2.3. Szinonima...................................................................................................................................2 2.4. Alias nv .....................................................................................................................................2 2.5. VIEW (ltvny) ........................................................................................................................2 2.6. Index ...........................................................................................................................................2 3. A dBASE IV. SQL hasznlata...................................................................................................3 3.1. Az SQL kezelse ......................................................................................................................3 3.2. Az SQL parancsok bevitele ....................................................................................................4 4. Adatbzis kezel mveletek ...........................................................................................................5 4.1. A ltez AB -ok listzsa - SHOW DATABASE ................................5 4.2. j AB ltrehozs - CREATE DATABASE ...........................5 4.3. Ltez AB megnyitsa - START DATABASE ..............................5 4.4. Aktv (korbban megnyitott) AB bezrsa - STOP DATABASE ..................................5 4.5. Ltez AB trlse - DROP DATABASE ..................................5 5. Tblzat kezel mveletek .............................................................................................................6 5.1. Tblzat ltrehozs - CREATE TABLE ....................................6 5.2. Tblzat Import / Export - DBDEFINE.................................................7 5.3. Tblzat attribtumainak bvtse - ALTER TABLE ADD .........................7 5.4. Tblzat trlse - DROP TABLE ..........................................8 6. Adatkarbantart mveletek...........................................................................................................8 6.1. Feltlts rekordokkal - INSERT INTO ... VALUES .....................8 6.2. Adatok (mezk tatalmnak) mdostsa - UPDATE ... SET.........................................9 6.3. Rekordok (sorok) trlse - DELETE ...................................................10 7. Az SQL lekrdezsek ( a SELECT parancs s alparancsai ) ..............................................10 7.1. A SELECT parancs szerkezete - SELECT FROM ................................10 7.2. A WHERE alparancs felttel listjnak szerkezete s elemei...........................................12 7.3. A WHERE alparancsban hasznlatos lltsok - BETVEEN, IN, LIKE ...................13 7.4. Csoportkpz fggvnyek - COUNT, SUM, MAX, MIN, AVG .................................14 7.5. ORDER BY ... alparancs.....................................................................................................14 7.6. GROUP BY ... alparancs.....................................................................................................15 7.7. HAWING ... alparancs.....................................................................................................15 7.8. A halmaz mveletek - UNION | INTERSECT | MINUS ................................................16 7.9. Lekrdezs tbb tbla adataibl ............................................................................................18 8. 9. Ltvny ltrehozsa Indexels - CREATE VIEW ...........................................................................19 - CREATE INDEX ON .............................................................20

10. Adatvdelem az SQL -ben..........................................................................................................21 10.1. Hozzfrsi jog ........................................................................................................................21 10.2. Felhasznli jog .......................................................................................................................22

1

1. Az SQL trtnete s jellemzi

1979. az IBM kifejlesztette a SEQUEL egysgestett lekrdez nyelvet. Ebbl alakult ki az SQL nv. Az adatbzis ( ksbbiekben AB ) kezel programokat gyrt szoftveres cgek trekszenek a lekrdez nyelv szabvnyostsra. Az ISO 1989 -ben, majd 1992 -ben adott ki SQL92 szabvnyt. (A dBASE IV - SQL mg az 1989 -es szabvny szerint dolgozik.) Az SQL fejlett, Relcis AB kezel, lekrdez nyelv. Nhny 1992 -es nyelv: INFORMIX, INGRES, MS SQL Server, Novell XQL, ORACLE, SYBASE.

SQL jellemzk: - az adatkatalgus is az AB rsze, - az adatdefinci s az AB kezels elklnl, - az adatdefinci, -kezels, -biztonsg nllan is programozhat, - adatcsere lehetsge, ms program nyelven kezelt adatllomnyokkal.

Szakknyvek: - Novotrade Kiad: Jack L. s Carolyn J.Hursch - dBASE IV SQL, - COMPUTERBOOKS Kiad: Stolnicki Gyula - SQL kziknyv - MS Query - Felhasznli Kziknyv

2. Az SQL objektumai

Katalgus tblzatok Tblzatok ( bzistblk ) Szinonimk Alias tblanevek Ltvnyok ( ms nven VIEW -k ) Indexek

2.1. Katalgus tblzatok: az AB paramtereit rgzt, az adatokat trol tblzatokkal azonos kiterjeszts rendszer tblzatok.

2.2 Tblzat (ms nven Relci, Egyed tpus) : a Relcis AB alapegysge, sorokbl (Rekord, Egyed elforduls) s oszlopokbl (Attribtum, Tulajdonsg ) ll. A tblzatban adatokat trolunk, amelyek a sor/oszlop metszetben (Mez, Attribtum elforduls, Tulajdonsg elforduls) helyezkednek el. TBLANV Oszlop1 adat adat adat Egyed tpus Oszlop2 adat adat adat . OszlopN adat adat adat Egyed Tulajdonsg tpus

Tulajdonsg elforduls elforduls

2

2.3. Szinonima: a tblzat vagy VIEW szmra valamilyen okbl j nevet kell adni (a rgi is rvnyben marad) amellyel szintn hivatkozni lehet r. (pl. tl hossz az eredeti nv s sokszor kell a parancsokban megadni.)

2.4. Alias nv: az eredeti nvvel egytt adjuk meg parancsokban, amikor az egymsba gyazott) hivatkozsok ezt ignylik. (rekurzv kls kulcs alkalmazsa esetn)

2.5. VIEW (ltvny) . ltszlagos (virtulis) tblzat.

Azonos mdon hasznlhat, mint egy valdi tblzat. A program csak a ltrehozshoz szksges utastsokat s paramtereket trolja el s amikor hasznlni kvnjuk jra generlja. A VIEW valdi tblzat(ok) s/vagy msik VIEW (-k) oszlopaibl sszelltott Tulajdonsg tpusokat s szrfelttelekkel meghatrozott Egyed elfordulsokat tartalmaz.

Fontos tudni, hogy a VIEW -ban vgrehajtott mdosts, visszahat arra a tblra, amelybl kszlt.

A VIEW -k alkalmazsnak clja: - redundancia (adatismtls) elkerlse, - adat vdelem - megakadlyozhat, hogy az eredeti tblzattal dolgozzon illetktelen szemly. - a VIEW ltrehozsa mindig kapcsoldik, egy t kvet SELECT (kivlaszt) parancshoz, mert meg kell hatrozni, hogy milyen adatok szerepeljenek a VIEW -ban s ezek honnan szrmazzanak - a VIEW oszlopnevei lehetnek az eredetiek (ahonnan szrmaznak) de adhatunk teljesen j oszlop neveket is, - VIEW ltrehozsval, jraszervezhet az AB pl. kt tbla sszevonhat s az eredeti tblk trlhetk, - ltvny ltrehozhat tetszleges szm tblzatbl, - NEM INDEXELHET.

2.6. Index: a tblzat s VIEW sorba rendezse egy vagy tbb Attribtum szerint. Elre kell ltrehozni ket, majd az SQL hasznlata kzben mr nem kell vele foglalkozni, mert a tblhoz rendelst a program megteszi. ( Fontos a j AB tervezs ! )

3

3. A dBASE IV. SQL hasznlata

3.1. Az SQL kezelse A dBASE -en bell indthat az SQL. A dBASE bejelentkezse utn, a Parancs sorban ki kell adni a megjelenik az SQL . prompt. SET SQL ON parancsot, amire

Bellthat a C:\DBASE \ CONFIG.DB llomnyban, hogy azonnal az SQL. prompt jelentkezzen be: ASSIST = OFF -ra llts s SQL = ON bers

Az SQL -bl kilpni a prompt utn kiadott QUIT paranccsal lehet.

Az SQL s a dBASE kztt brmikor tvlthatunk: dBASE SQL SQL dBASE dBASE prompt utn: SQL prompt utn: SET SQL ON SET SQL OFF

FIGYELEM ! Az SQL tblzat dBASE -ben kzvetlenl olvashat, de mdostani TILOS ! Ha hasznlni is akarjuk az SQL tblt a dBASE -ben, akkor t kell msolni egy dBASE knyvtrba ! Fordtva is lehetsges az adatcsere, de csak megfelel SQL paranccsal importlhat a dBASE llomny.

dBASE llomny hasznlatba vtele SQL alatt: Az szksges dBASE llomnynak az SQL knyvtrban kell lennie s ki kell adni a kvetkez parancsot:

DBDEFINE llomny nv ;

Az SQL HELP: Hasonlan mkdik, mint a dBASE IV. -ben, hvhat az F1 -gyel vagy a HELP bersval. On-line HELP segt a hibs parancs bersakor is, a hiba valszn oknak megjelentsvel.

4

3.2. Az SQL parancsok bevitele

SQL parancs bevitelre kt md van: - az SQL. prompt utn, egy sorban folyamatosan, max. 254 karakteres lehet, - a CTRL + HOME letse utn, a bejelentkez szerkeszt kpernyn strukturlt formban, max. 1024 karakteres lehet.

Minden parancsot ; (pontosvessz) zr le !

Parancssoros bevitelkor -rel indtjuk a vgrehajtst, A szerkeszt kpernys parancsbevitelt esetn, az csak a sorvltsra szolgl, a CTRL + END letssel trtnik az rvnyests.

A parancs ltalnos szerkezete:

PARANCSSZ < paramterek > ZRADK < paramter > < opertor > < felttel > ;

A zradkot nevezik mg ALPARANCS nak s KLAUZA nak is. pl. parancssoros zemmdban a Parancs s indtsa: SELECT oszlop1, oszlop2 FROM tbla WHERE adat1 10 ;

pl. szerkeszt zemmdban a Parancs s indtsa: SELECT oszlop1, oszlop2 FROM tbla WHERE adat1 10 ; < CTRL + END > - j sor kezdse - a parancs indtsa

a TAB ot csak egyszer kell hasznlni, ezutn a szerkeszt mr automatikusan belltja a kvetkez sorban.

5

4. Adatbzis kezel mveletek

4.1 A ltez AB -ok listzsa

SHOW DATABASE ;

Minden korbban ltrehozott AB listzsra kerl, fggetlenl az elrsi tvonaltl. Ez az informci az AB ler tblban troldik s a kezelnek nem is kell tudnia. (indokt lsd a 4.2. pontban)

4.2. j AB ltrehozs

CREATE DATABASE [< tvonal>] ;

Hatsra ltrejn egy j alknyvtr a megadott tvonal knyvtrban -vel, amelyben az j AB mkdsi krnyezett ler paramter tblzatok is ltrejnnek. Az AB adminisztrcis llomnyba pedig eltroldik az j AB elrsi tvonala s neve. Vigyzni kell, mert ha nem adunk meg tvonalat mindig az indt knyvtrba hozza ltre az j AB -t.

4.3. Ltez AB megnyitsa

START DATABASE < ABnv > ;

A szablytalanul trlt - nem az SQL programon bell, hanem DOS alatt - AB -ok is listzsra kerlnek, amelyeket termszetesen nem lehet elindtani. (lsd AB adminisztrcis llomnyt, amelybl csak akkor trldik az AB ha SQL en bell trltnk.)

4.4. Aktv (korbban megnyitott) AB bezrsa

STOP DATABASE [] ;

Az megadsa nem ktelez, mert gyis csak az aktulis (fut) adatbzis az, amelyik lezrhat. Msik AB indtsa automatikusan lelltja a futt, teht egyszerre csak egy AB hasznlhat !

4.5. Ltez AB trlse

DROP DATABASE ;

Fontos, hogy elbb be kell zrni az AB -t, majd csak ezutn trlhet. A parancs az AB adminisztrcis llomnyt aktualizlja, de fizikailag nem trli a knyvtrat ! Ha trlni is akarjuk, akkor azt fjlkezel programmal tehetjk meg.

6

5. Tblzat kezel mveletek 5.1. Tblzat ltrehozs CREATE TABLE ( [(hossz)], [(hossz)], ... [(hossz)] ) ;

max. 8 karakter hossz, betvel kezddik s az _ (als vons) karakter lehet benne. Az SQL parancsok betkombincii kizrtak. max. 10 karakteres lehet, betvel kell kezddnie. -at s megadsuk mdjt lsd az albbi sszefoglalban:

Pl. CREATE TABLE mintatabla ( azonosito nev sz_datum jelzo fizetes

INTEGER, CHAR (25), DATE, LOGICAL DECIMAL (8,2) ) ;

Tbla ltrehozs sorn szerkeszt zemmdban clszer dolgozni, hogy a fenti ttekinthet parancs szerkezet alakuljon ki. A mvelet vgeztvel egy res adattbla jn ltre, amelyet majd feltltnk adatokkal.

A Tblzat mretei:

max. 255 oszlop, (ennyi attribtumot definilhatunk) max. 4000 byte / sor (az egy rekordban trolhat karakterek szma), max. 2 billi byte karakter egy tblban (a trolt adatmennyisgre vonatkozik)

AdattpusSMALLINT INTEGER DEClMAL (x,y)

Lers ( a dBASE IV ltal definilt adattpus jellemzk )Hat szmjegy egsz szm (az eljelet is belertve) A megengedett rtktartomny: -99 999 ... 999 999. Tizenegy jegy egsz szm (az eljellel egytt). A megengedett rtktartomny: -9 999 999 999 ... 99 999 999 999. Az eljellel egytt x szmjegy, fixpontos decimlis szm y tizedessel. Az x l s 19 kztti, az y 0 s 18 kztti szm kell legyen. Pldul a DECIMAL(6,2) tpus mezbe -999,99 ... 9999,99 kzti rtket rhatunk. Az eljellel s a tizedesjellel egytt x szmjegy, fixpontos decimlis szm y tizedesjeggyel. Az x l s 20 kztti, az y 0 s 18 kztti szm kell legyen. Pldul a DECIMAL(6,2) tpus mezbe 99,99 ... 999,99 kzti rtkeket rhatunk. Az eljellel s a tizedesjellel egytt x szmjegy lebegpontos szm y tizedesjeggyel. Az x lehetsges rtkei 1... 20, az y lehetsges rtkei 0 ... 18. Ezzel az adattpussal a 0,1 x 10-307... o,9 x 10+-108 tartomny fedhet le. A szmokat norml alakban is megadhatjuk, pl. -9.99E+235. n karakter hossz fzr (string). Az n l s 254 kztti szm kell legyen. Az rtkeket karakter tpus mezkbl, vltozkbl v. fzrekbl olvashatjuk be. A SET DATE s a SET CENTURY parancsokkal meghatrozott formtum dtum. Az eredeti formtum: hnap/nap/v (mm/dd/yy). Az adatokat dtum tpus mezkbl, dtum tpus vltozkbl, ( / / ) formtum fzrekbl vagy a dBASE CTOD( ) fggvnyt hasznlva olvashatjuk be. Pl. CTOD("02/15/86"). Logikai igaz vagy hamis rtket trol. A .T. jelli az igaz, az .F. a hamis rtket. Az adatokat logikai vltozkbl vagy oszlopokbl olvashatjuk be, vagy hasznlhatjuk a .T., .t., .Y., .y., .F, .f., .N., .n. llandkat.

NUMERIC (x,y)

FLOAT (x,y)

CHAR (n) DATE

LOG1CAL

7

5.2. Tblzat Import / Export

Az import lehetsgek csak meghatrozott llomny formtumokra rvnyesek (mint a dBASE esetben). Ms formtumok esetn clszer az EXCEL - dBASE konverzi s dBASE -bl mr kzvetlenl importlhat (tvehet) a tblzat. Importlni lehet res (ekkor csak a szerkezett) vagy mr adatokkal teli tblt is.

dBASE tbla SQL AB ba trtn importlsnak menete:

- elbb a dBASE IV. tbla tmsolsa az AB aktulis knyvtrba, - majd a DBDEFINE < tblanv > aktivl parancs kiadsa.

Exportlni dBASE -be nem is kell, mert kzvetlenl hasznlhat egy SQL tbla a dBASE -ben. A dBASE be exportlt tblzat ott csak olvashat lesz, tilos mdostani

5.3. Tblzat attribtumainak bvtse - j attribtum (oszlop) hozzadsa:

ALTER TABLE ADD ( [(hossz)], [(hossz)], ... [(hossz)]) ; Az j attribtumok (oszlopok) az eredeti tbla attribtumai utn kerlnek felvtelre, beszrs nem lehetsges. (De nem is kell, lsd CODD 3. megllaptsa.) Az j attribtum elfordulsok (mezk) termszetesen resek lesznek, amiket ksbb ki lehet tlteni.

Pl.

ALTER TABLE mintatabla ADD ( cim katona telefon

CHAR (40) , LOGICAL , CHAR (10) ) ;

- attribtum trls a tblbl:

NEM LEHETSGES NEM LEHETSGES

- attribtum sorrend s/vagy tpus mdostsa:

Figyelem ! Mivel oszlopot trlni, sorrendet vagy tpust vltoztatni nem lehet, de ha erre mgis szksg lenne, akkor ezt csak a tbla jraszerkesztsvel tudjuk megoldani. Ekkor az eredeti tblbl a levlogats (SELECT) parancs segtsgvel ltrehozhat a kvnt tartalm j tbla majd a rgit trljk. (lsd ksbb)

8

5.4. Tblzat trlse

DROP TABLE

A parancs hatsra nem csak a tbla, hanem minden hozz kapcsold objektum is automatikusan trldik! Ez a parancs nem j a tbla tartalmnak trlsre ( teljes adattartalom rtsre) ! Ha trlni kell a tbla tartalmt, lsd a 6.3. pontot.

6. Adatkarbantart mveletek

6.1. Feltlts rekordokkal

- teljes adatsor (egy teljes rekord) felvitele beszr utastssal:

INSERT INTO VALUES ( adat1, adat2, . . . , adatN ) ; A felviend adatok az eredeti tbla attribtum sorrendjben, vesszvel elvlasztva kerlnek felsorolsra. Fontos! Ebben az esetben ktelesek vagyunk minden adat megadsra, s a CREATE utastsban definilt tpust kell alkalmazni! Ha nem akarunk egy adatot megadni akkor is ki kell tenni az elvlaszt vesszt. Ilyenkor az adatmez tartalma annak alaprtelmezse lesz. Pl. . . . VALUES ( adat1, adat2, , adat4, , , adat7, , ) ; Ez egy 8 attribtumot tartalmaz tbla rekordjnak felvitele, amikor nem adtuk meg a 3. 5. 6. s 8. adatot.

Az adatok megadsnak szintaktikja tpusonknt: Numerikus adat: a szepartor karakter tizedes pont Karakteres: Dtum: az adat idzjelek kz illesztend Pl. 3.45, 120, 2003, 78.0004 Pl. abc , FERI , Audi

dtum formtumban kapcsos zrjelek kztt, ponttal elvlasztva { 9999.99.99 } vagy szveges formtumban de karakterrl dtum formtumra talakt fggvny argumentumaknt CTOD ( "9999/99/99" ) Pl. { 2001.02.23 } , vagy CTOD ( "2001/02/23" ) Hamis: .F. .f. .N. .n.

Logikai: a logikai rtket pontok kz kell rni Igaz: .T. .t. .Y. .y.

Pl. INSERT INTO mintatabla ( 3412, Kiss Gerg, {1990.07.10}, 12345.60, Mr F u. 12.,22-134627, .Y. ) ;

- nem teljes adatsor (a rekord nem minden adatnak) beszrsa:

Ekkor a VALUES eltt fel kell sorolni, hogy melyik attribtumok (oszlopok) adatait kvnjuk felvinni. Az adatlistban a felsorols sorrendjben kell az adatokat elhelyezni. INSERT INTO (, A !=, ! a nem egyenl, a nem kisebb illetve nem nagyobb jele. A felttel logikai opertorral sszektve tbb relcit is tartalmazhat, az opertorok: NOT, AND, OR A kt sszehasonltand adatnak (bal s jobb oldal) azonos tpusnak kell lennie. A numerikus tpusok viszont tpustl fggetlenl hasonlthatk. A karakteres adatok hasonltsnl a kis s NAGY bet eltrnek szmt, mert a hasonlts az ASCII kdok alapjn trtnik. Ha tbb azonos nev oszlop szerepel a lekrdezsben, itt is egytt kell szerepelnie a tblanvnek az oszlopnvvel. (ugyangy mint a SELECT -nl) Pl. WHERE nev = "Kiss Antal" AND tabla1.fizetes !> 60000 OR jelzo = NOT .T.

13

7.3. A WHERE alparancsban hasznlt LLTSOK Az LLTS t nevezik mg Prdiktum fggvny -nek is. Az lltsok szerkezete: WHERE LLTS

- a BETWEEN llts

WHERE [ NOT ] BETWEEN AND

A mez tartalma beleesik az rtkhatrokba, illetve kvl esik [ NOT ] a megjellt rtkhatrokon. Csak BETWEEN esetn a hatrok is elfogadott rtkek, NOT BETWEEN esetn a hatrok nem elfogadott rtkek. A hatrrtkek numerikus, karakter s dtum tpusak lehetnek.

Pl.

WHERE fizetes BETWEEN 50000 AND 80000 WHERE sz_dat NOT BETWEEN {1978.06.12} AND {2000.01.31}

- az IN llts WHERE [ NOT ] IN ( rtk1, rtk2, . . . , rtkN )

A mez tartalma, IN esetn a zrjelek kzt felsorolt rtkek valamelyike, NOT IN esetn egyik felsorolt rtkkel sem egyez. A lista tartalmazhat numerikus, karakter s dtum tpus konstansokat. Pl. WHERE azonosito IN ( 2312, 3521, 4581, 3499 ) - csak ezek vesznek rszt a feldolgozsban WHERE azonosito NOT IN ( 2312, 3521, 4581, 3499 ) - ezeken kvl mindenkit feldolgozunk

- a LIKE llts WHERE [ NOT ] LIKE karaktersorozat A LIKE utn megadott karaktersorozatot tartalmazza a mez, illetve NOT LIKE esetn nem tartalmazza. Ez az llts csak karakteres adattpus adatokra vonatkozhat A hasonlt karaktersorozatban hasznlhatk JOKER karakterek. A % jel karakter sorozatot helyettest, az als vons _ egyetlen karaktert helyettest. Itt is lnyeges a kis s a NAGY bet klnbzsge ! Pl. WHERE nev LIKE Kovcs% WHERE nev LIKE %Piroska - a Kovcs vezetkneveket vlasztja ki - a Piroska keresztneveket vlasztja ki

14

WHERE cm NOT LIKE MR%

- csak azokat nem vlasztja ki akiknek a lakcme MR ral kezddik, DE a Mr vagy mr kezdett mr ki fogja vlasztani.

7.4. Csoportkpz fggvnyek

A fggvnyek szerkezete:

FGGVNYNV ( argumentum )

( argumentum ) - annak az attribtumnak a neve, amelyre a fggvny vonatkozik, vagy lehet egy attribtumot tartalmaz kifejezs is. A COUNT esetn az argumentum lehet a * (csillag) is, amikor a tbla rekordjainak darabszmt akarjuk lekrdezni. COUNT ( ) SUM ( ) MIN ( ) MAX ( ) AVG ( ) - ttel (rekord) szmll, - oszlop sszegt szmtja ki, - az oszlopban szerepl minimum. rtket adja vissza, - az oszlopban szerepl maximum. rtket adja vissza, - az oszlop rtkeinek tlagt szmtja ki

A fggvnyeket ltalban a SELECT utn alkalmazzuk. A COUNT kivtelvel mindegyik csak numerikus tpus mezre alkalmazhat. pl. SELECT COUNT ( * ) FROM dolgozo ; SELECT COUNT ( * ) FROM nevsor WHERE V_NEV ="Kovcs"; - a dolgozo llomny ttelszmt adja

- a nvsorban tallhat Kovcs vezetknevek szma

SELECT MAX(fizetes), MIN(fizetes), AVG(fizetes) FROM dolgozo; - a dolgozi fizetsek maximumt, minimumt s tlagt adja meg

7.5. ORDER BY ... alparancs

ORDER BY [ ASC | DESC ]

- vesszvel elvlasztott oszlopnv (attribtum) felsorols

vagy

- a SELECT -ben felsorolt oszlopnv lista elemeinek sorszma, vesszvel elvlasztva

[ ASC ] - a rendezsi sorrend emelked sorrend legyen, nem szksges kirni mert ez az alaprtelmezs [ DESC ] - a rendezsi sorrend cskken sorrend legyen, ezt ha szksges meg kell adni

Ha a rendezs 2 vagy tbb elem (attribtum) szerint trtnik a rendezs egymsba gyaz jelleg. Ez azt jelenti, hogy az els helyen szerepl attribtum egyezsge esetn veszi figyelembe a msodik helyen szerepl, a msodik egyezsge esetn a harmadik (s gy tovbb) helyen szerepl attribtumok rtkt a vgs sorrend kialaktsban.

Pl.

SELECT nv, cm, telefon FROM mintatbla ORDER BY cm ;

15

SELECT nv, cm, telefon FROM mintatbla ORDER BY cm DESC, nv ; SELECT nv, cm, telefon FROM mintatbla ORDER BY 2 DESC, 1 ; 7.6. GROUP BY ... alparancs

GROUP BY

Csoport mveletek (sszegzs, min / max rtk, darabszm vagy tlagrtk csoportonknti kiratsra szolgl alparancs. Az oszlop tartalma alapjn (az azonos mez rtkekbl) csoportot kpez, majd a csoportbl csak egyetlen sort jelent meg. A csoportkpz fggvnyt a SELECT -ben kell definilni. (lsd a 7.1. pontot) Elrs, hogy az eltte lev SELECT utasts tkletesen meg kell egyeznie a GROUP BY .

Pl.

SELECT cm, nv, MAX (fizetes) FROM mintatbla GROUP BY cm ; - a parancs kirja annak az azonos cmen lak szemlynek a cmt, nevt s keresett, aki az adott cmen a legnagyobb fizetssel rendelkezik.

7.7. HAWING ... alparancs

HAWING

A GROUP BY utn hasznlva, egy csoport rtkre ( sszegre, minimumra, stb.) vonatkoz felttel. Figyelem ! Ha nem GROUP BY utn hasznljuk, az egsz tblt egyetlen csoportnak tekinti.

Pl.

SELECT cm, nv, MAX (fizetes) FROM mintatbla GROUP BY cm HAWING MAX (fizetes) > 100000 ;

Az elz kiratsbl csak a 100 ezer forintnl magasabb fizetseket vlasztja ki eredmnyl.

16

7.8. A halmaz mveletek

7.81. UNION - tbla "gyest" halmazmvelet

(E=AUB)

Abban az esetben hasznljuk, ha kt (vagy tbb) tblbl ki szeretnnk ratni az azonos jelleg (pldul cm) adatokat, (vagyis egyesteni akarjuk kt vagy tbb - tbla adatait). Ilyenkor a forrs llomnyok adatait egyms utn rja gy, hogy a tbbszrsen elfordul adatokbl csak egyet visz t az eredmny tblba. Ha az sszes azonos tartalm adatot meg kvnjuk jelenteni az eredmny tblban, akkor arrl az ALL parancs kiadsval kln gondoskodni kell. A forrsadatokra szigor elrsok vonatkoznak. Egy oszlopban azonos tpus adatoknak kell lenni s az oszlopok szma is azonos kell, hogy legyen. Az attribtum neveknek ( mezneveknek) azonban nem kell azonosaknak lenni.

SELECT < attribtum felsorols > FROM < tblanv1 > UNION [ ALL ] SELECT < attribtum felsorols > FROM < tblanv2 > UNION [ ALL ] . . SELECT < attribtum felsorols > FROM < tblanvN > ;

A SELECT utastsban rtelmezettek az alparancsok ( WHERE, GROUP BY, ORDER BY, stb. ) is. < attribtum felsorols > tartalmra vonatkoz elrs, hogy csakis azonos darabszm elem lehet benne s az azonos ( 1. 2. N. ) sorszm elemnek azonos tpusnak kell lennie. < tblanv > azoknak a tblknak a neve, amelyek adatait egy kzs listban kvnjuk egyesteni. Az [ ALL ] megadhat alparancs segtsgvel lehet az azonos tartalm mezk mindegyikt kiratni.

pl. SELECT lakik FROM lakhely UNION SELECT cim UNION SELECT laks FROM nvsor ; FROM cimlista

A lakik, cim s laks nev (egybknt lakcmet tartalmaz) adatokat emeli ki s helyezi el az eredmny tblban gy, hogy az esetleg kett vagy mindhrom llomnyban szerepl azonos tartalm (lakcm) adatokbl csak egyet tart meg.

17

7.82. INTERSECT - tbla "metszet" kpz halmazmvelet

(E=AB)

Abban az esetben hasznljuk, ha kt (vagy tbb) tblbl ki szeretnnk ratni az azonos tartalm (pldul helysgnv) adatot. Ilyenkor a forrs llomnyok (helysgnv) adatait vgig olvasva azokat ratjuk ki az eredmny tblban, amelyek mindegyik forrs tblban elfordulnak. A kirats azonban nem tartalmazza mindegyik (azonos tartalm) rekordot, csakis egy kerl be az eredmny tblba. Itt nem alkalmazhat az ALL parancs ! A forrsadatokra vonatkoz elrsok azonosak az UNION parancsnl lertakkal. A parancs szerkezete is azonos.

pl. SELECT helysg FROM lakhely UNION SELECT vros FROM cimlista UNION SELECT telepls FROM nvsor ;

A helysg, vros s telepls nev (egybknt a lakcm teleplsnevt tartalmaz) adatokat vizsglja s rja ki azokat a helysgneveket (csak egyszer !) az eredmny tblban, amelyek mindhrom forrs llomnyban benne voltak.

7.83. MINUS - tbla "klnbsg" kpz halmazmvelet

(E=AB)

A klnbsg kpzs mvelete csakis kt tblra rtelmezett. Eredmnyl azokat a adatokat kapjuk, amelyek az els (A) tblban benne vannak DE nincsenek benne a msodik (B) tblban. Ez teht azt jelenti, hogy azokat az adatokat fogjuk megkapni az eredmny tblban, amelyek az els SELECT utasts forrs tbljban benne vannak de nem szerepelnek a msodik SELECT utasts forrs tbljban. A forrsadatokra vonatkoz elrsok azonosak az UNION parancsnl lertakkal. A parancs szerkezete is azonos, de csak kt SELECT szerepelhet benne. Egyes SQL vltozatokban klnbsg kpzskor MINUS helyett EXCEPT utastst rnak.

pl. SELECT helysg FROM lakhely MINUS SELECT vros FROM cimlista ;

A helysg s vros nev (egybknt a lakcm teleplsnevt tartalmaz) adatokat vizsglja s rja ki azokat a helysgneveket, amelyek a lakhely nev tblban benne voltak DE nem voltak benne a cimlista nev tblban

18

7.9. Lekrdezs tbb tbla adataibl Tbb tbla sszekapcsolsa ( JOIN mvelet )

A JOIN mvelet kt vagy tbb tbla meghatrozott attribtumainak kzs megjelentst eredmnyezi egy kzs tblban. Az sszekapcsols gyakorlati clja ltalban egy kdolt attribtum termszetes nevnek megjelentse vagy informcik egyms mell rendelse. Ilyen lehet pldul egy kszlet kimutatsban a mennyisgi egysgek kdja helyett ( KG, L) a szveges megjelentsk (Kilogramm, Liter) vagy a Kszlet kimutatsban a kszletezett rucikkeket szllt cg azonostja helyett (SZ0083), nevnek (PARMALAT) kiratsa, amit egybknt kln trzsllomnyban trolunk a szllt egyb ler adataival egytt. Informci kzs megjelentse lehet pldul egy kzm ler adatainak (koordinti, technikai adatok) s karbantartsi adatainak (karbantartsi temterv, felhasznlt anyagok) sszerendelse kzs eredmny tblba. Az sszekapcsols a tblkban szerepl kzs attribtumok (kls kulcsok) azonos adattartalma alapjn jn ltre. Az utastsban a SELECT utn felsorolt attribtumok brmelyik sszekapcsolt tblbl szrmazhatnak az ignyelt sorrendben, ugyanakkor a FROM utn vesszvel elvlasztva fel kell sorolni azokat a tbla neveket, amelyekbl szrmaztatjuk az adatokat. A kapcsolatot a WHERE zradkban kell megadni egyenlsgi relcival (esetleg ezen relcik AND logikai opertorral sszekapcsolt sorozatval). A relci kt oldaln a kt tbla azon attribtumainak a neve szerepel a tbla nevvel egytt, amelyik alapjn az sszekapcsolsnak ltre kell jnnie. A kt attribtum nv nem kell, hogy azonos legyen ! Nem a nv a kapcsols felttele, hanem az azonos adattartalom. Fontos elrs, ha a kt (vagy tbb) sszekapcsolt tblban azonos nev attribtumok vannak s ezekre hivatkozunk akr a SELECT utn, akr egyb almondatban, akkor jelezni kell, hogy melyik tblbl vegye a feldolgozs. Az attribtum definilsnak szintaktikja szerint a forrstbla nv s az attribtum nv egytt szerepel egy ponttal elvlasztva ( pl. tblanv . adatnv ). Megjegyzs: a kapcsolds feltteleit a WHERE almondatban definiljuk. Ha ez elmarad, akkor teljes szorzatot (Descartes szorzatot) fog eredmnyl adni a lekrdezs.

Pl. A lekrdezsnek ki kell ratni a kszletet nyilvntart llomnybl azon cikkeknek a kszlett, amelyek mennysge 100 alatt van. Tudnunk kell azt is, hogy ezek a cikkek nv szerint melyik szllttl szrmaznak s mi a mennysgi egysg nevk. A szlltk adatai a Szllt, a mennyisgi egysg nevek a MEnv, a kszlet adatok pedig a Raktr nev llomnyokban vannak.

A tblk tartalma:

Szllit { szkod, szllito nv, szllt cme, . , stb. } MEnv { mennyegysg kd, mennyegysg nv, ttel szorz, , stb.} Raktr { cikkszm, cikk neve, MEkod, kszlet, szkod, egysgr, , stb.}

SELECT Szllt.szkod, szllit nv, cikkszm, cikk neve, kszlet, MEkod, mennyegysg nv FROM Szllt, MEnv, Raktr WHERE Szllt.szkod = Raktr.szkod AND mennyegysg kd = MEkod AND Kszlet < 100 ;

19

8. Ltvny VIEW ltrehozsa

A VIEW teht egy ltszlagos tblzat. Fizikailag nem ltezik, csak a ltrehozshoz szksges utastsok troldnak el s ha a feldolgozs sorn hivatkozunk r ezen utastsok alapjn ltrejn a memriban egy virtulis tbla. A VIEW tblaknt viselkedik, azaz mdosthat az adata, ami visszahat az eredeti tblra is. De mg jabb ltvny is kszthet belle. A VIEW egy vagy tbb, ltez tbla adataibl ll ssze, szrs (szelekci) illetve attribtum kivlogats (projekci) tjn. Ebbl kvetkezik, hogy ltrehozsa (CREATE VIEW) sorn meg kell adni a ltrehozand VIEW nevt, attribtumainak neveit, valamint a forrs attribtum neveket s azt, hogy ezek melyik tblban vannak.

CREATE VIEW < ltvnynv > [ < (ltvny oszloplista ) > ] AS SELECT < forrs oszlopnevek > FROM < forrs tblanv > [ WITH CHECK OPTION ] ;

< ltvnynv > - az j ltvny neve, amellyel ksbb hivatkozunk r [ < (ltvny oszloplista ) > ] - az j ltvny attribtumainak felsorolsa. Ha nem adjuk meg a -t, a forrs tbla vagy tblk (lsd ) mindegyike az eredeti nevvel s a felsorols sorrendjben tkerl a VIEW ba. Ha az attribtum neveket vagy akr csak a sorrendet meg akarjuk vltoztatni, mr meg kell adni a -t. < forrs oszlopnevek > < forrs tblanevek > - azoknak az attribtumoknak a nevei, amelyek tkerlnek majd a VIEW ba - annak a tblnak (azoknak a tblknak) a neve(i), amelyekbl szrmaznak az attribtumok

[ WITH CHECK OPTION ] - ha a ltvnyt adat mdostsra is hasznljuk, akkor clszer megadni, a nem megengedett mdosts letiltsa rdekben.

Pl.

CREATE VIEW telefonok ( nv, tel_szam, lakcm ) AS SELECT mintatbla ( nv, telefon, cm ) ; Minden mintatbla rekordbl kiratjuk a telefonok nev ltvnyba a nv, telefon s cm adatot. A ltvnyban j nevet kapott a telefon s a cm. CREATE VIEW mortelefon AS SELECT mintatbla ( nv, telefon, cm ) WHERE cm LIKE Mr% GOUP BY nv ; A mortelefon nev ltvnyban az eredeti nvvel szerepelnek az attribtumok, viszont csak a Mron lakk adatait soroljuk fel nvsorban.

20

9. Indexels

Az adatfeldolgozsi feladatok gyorsabb elvgzst a jl megtervezett INDEX llomnyok ltrehozsa biztostja. Az index tulajdonkppen egy elre definilt llad sorrend. Az adattblk mdostsval egytt az index llomnyok is azonnal mdosulnak. Az AB sszes indext a SYSIDXS.DBF rendszertbla tartalmazza. Egy tblzathoz, egy indexllomnyban max.47 indexelsi sorrendet adhatunk meg.

- Index ltrehozsa:

CREATE [ UNIQUE ] INDEX [ ] ON < ( oszlopnv lista [ DESC ] ) >;

[ UNIQUE ] - ha azt akarjuk, hogy az index egyben annak a tblnak amelyre vonatkozik az indexels egyedi azonostja is legyen (csak egyszer fordulhasson el a tblzatban), akkor egyedi UNIQUE indexet kell definilni [ < indexnv > ] - kln index nv megadsa nlkl, . MDX jn ltre. < tblanv > - annak a tblnak a neve, amelyre az indexels vonatkozik < ( oszlopnv lista ) > - a tbla azon attribtumainak a felsorolsa, amelyek szerint a rendezettsgnek rvnyeslnie kell. Itt is rvnyesl az egymsba gyazott rendezettsg. (lsd az ORDER BY parancsnl) [ DESC ] - a rendezettsg cskken sorrendisgt lltja be oszlopnevenknt, a nvekv sorrend az alaprtelmezett

Pl.

CREATE UNIQUE INDEX alapsor ON mintatbla (azonost) ;

A mintatblhoz ltrehoztunk egy alapsor nev indexet, amely azonost nvekv sorrendben rendez s egyttal az azonost attribtumot kineveztk egyedi azonostnak is.

CREATE INDEX nevsor ON mintatbla (cm, nv) ; Az index nevsor nven egy lakcm ezen bell nvsoros rendezettsget hozott ltre.

- Index megszntetse: Ha nincs szksg egy rendezettsgre, akkor az index meg is szntethet.

DROP INDEX ;

21

10. Adatvdelem az SQL -ben

- Az SQL adatvdelmi rendszere ktszint vdelmet biztost.

10. 1. Hozzfrsi jog: Az AB megnyitsnak jogosultsga.

A hozzfrsi jogokat a Rendszergazda (adatbzis adminisztrtor) jogosult kiadni. A jogosultsg a bejelentkez (az AB t megnyit) felhasznli nevhez s jelszavhoz kttt. A jogosultsg lehet csoportos is (workgroup). Ltezhet DEFAULT (alaprtelmezett) adatbzis is, amelybe nem kell kln bejelentkeznie a felhasznlknak. Az albbi SQL utastsokat a felhasznl, kezel szemly adja ki munkja sorn.

- AB megnyitsa: CONNECT TO a megnyitand AB neve USER felhasznlnv [ , jelsz ] ;

[ , jelsz ] - a jelsz hinya esetn a belptet eljrs rkrdez s akkor kln meg kell adni

- tlps msik nyitott AB ba. SET CONNECT TO { egy msik nyitott AB neve | DEFAULT }

DEFAULT - tlps a DEFAULT adatbzisba

- AB bezrsa. DISCONNECT { AB nv | ALL | CURRENT } ;

AB nv ALL

- a megadott nev AB bezrsa - minden nyitott AB bezrsa

CURRENT - az ppen hasznlt, aktv AB bezrsa

22

10. 2. Felhasznli jog: A megnyitsra jogosult szemly az AB objektumaival, milyen mveleteket vgezhet el tovbb milyen adatbzis-mveletek engedlyezettek szmra. A felhasznli jogosultsg teht kiterjed az AB egszvel illetve objektumaival vgezhet mveletek korltozsra. Ezen jogok is a rendszergazda ltal kerlnek rgztsre a megnyitsi joggal egytt s brmikor mdosthatk illetve visszavonhatk. Az utastsok kiadsra a rendszergazda jogosult.

- AB objektumokra vonatkoz Felhasznli (mveleti) jogok megadsa:

GRANT mveleti jog ON objektum TO { PUBLIC | felhasznl_1 [ , felhasznl_2 ] } [ WITH GRANT OPTION ] ;

PUBLIC - az sszes bejelentkez felhasznlra vonatkoztatja a jogokat [ WITH GRANT OPTION ] - a jog tovbbadsi jogosultsga a bejelentkez rszre

A jogosultsg megadsa sorn az AB objektumai, azaz a jogok trgyai a kvetkezk lehetnek: TABLE DOMAIN - az AB tbli, nzet tbli (view) - tbb tblban is hasznlt, azonos oszlop (attribtum) tulajdonsgok sszefoglal lersa, amely nllan is definilhat (CREATE DOMAIN oszloptpus neve ;) s mdostsa esetn minden tblban automatikusan mdosul az rintett oszlopok tulajdonsga

CHARACTER SET - az AB feldolgozsa sorn, az alaprtelmezsen kvl mg hasznlni kvnt, karakter kszlet(ek) illetve ezek megadsnak lehetsge ( CREATE CHARACTER SET karakterkszlet nv .;) COLLATION - a definilt tovbbi karakter kszlet rendezsi sorrendjt ler llomny illetve a rendezsi sorrend megadsnak lehetsge (CREATE COLLATION ;) - kt karakter kszlet karaktereit sszerendel llomny illetve az sszerendels definilsnak lehetsge (CREATE TRANSLATION ;)

TRANSLATION

A fenti objektumokhoz megadhat mveleti jogok: ALL - minden albbi mvelet elvgezhet INSERT - adatkezel mvelet, sorok bevitele a tblba DELETE - adatkezel mvelet, sorok trlse a tblbl UPDATE [ ( oszlop_1 [,oszlop_2 ] ) ] - adatkezel mvelet, minden illetve a felsorolt oszlopok mezinek mdosthatsga SELECT [ ( oszlop_1 [,oszlop_2 ] ) ] - adatkezel mvelet, minden illetve a felsorolt oszlopok mezinek lekrdezhetsge ALTER - tbla s nzettbla (view) szerkezetnek megvltoztatsa INDEX - tbla indexelse, index vltoztatsa, index trlse USAGE - az elzleg definilt karakterkszlet hasznlata EXECUTE - adatbzis-eljrs vgrehajtsa

23

- AB objektumokra vonatkoz mveleti jog visszavonsa:

REVOKE mveleti jog ON objektum FROM { PUBLIC | felhasznl_1 [ , felhasznl_2 ] } ;

- Teljes adatbzisra vonatkoz Felhasznli (adatbzis-kezelsi) jogok adsa:

GRANT adatbzis_jog TO { PUBLIC | felhasznl_1 [ , felhasznl_2 ] } ;

A megadhat jogok: CONNECT - kapcsolds az adatbzishoz, tovbb a ngy adatkezel mvelet elvgzsnek joga RESOURCE - objektumok definilsi, megszntetsi joga DBA - teljes kr adatbzis-mveletvgzsi engedly, belertve az AB megszntetst is A fenti jogok sorrendje egyttal azt is jelenti egyes adatbzis-kezelknl, hogy a felsorolsban ksbb szerepl jog az eltte lev(ke)t is magban foglalja.

- Teljes adatbzisra vonatkoz Felhasznli (adatbzis-kezelsi) jogok visszavonsa:

REVOKE adatbzis_jog FROM { PUBLIC | felhasznl_1 [ , felhasznl_2 ] } ;

24

SQL

Jegyzet

sszelltotta:

BARNA ENDRE