TITLE · Web viewDr. Halassy Béla: Az adatbázisok kezelésének alapvető kérdései, 1978,...
Transcript of TITLE · Web viewDr. Halassy Béla: Az adatbázisok kezelésének alapvető kérdései, 1978,...
TARTALOM
1. RELÁCIÓKON VÉGEZHETŐ MŰVELETEK................................................................................
1.1 PROJEKCIÓ (EGY TÁBLA VERTIKÁLIS MEGSZORÍTÁSA).......................................................................1.2 SZELEKCIÓ (EGY TÁBLA HORIZONTÁLIS MEGSZORÍTÁSA)..................................................................1.3 UNIÓ...................................................................................................................................................1.4 METSZET.............................................................................................................................................1.5 KÜLÖNBSÉG........................................................................................................................................1.6 DESCARTES SZORZÁS..........................................................................................................................1.7 ÖSSZEKAPCSOLÁS...............................................................................................................................
2. AZ ORACLE SQL.................................................................................................................................
2.1 SQL PARANCSOK................................................................................................................................2.2 SZERKESZTŐ PARANCSOK...................................................................................................................2.3 SZÜKSÉGES ALAPFOGALMAK..............................................................................................................
2.3.1 Literál..........................................................................................................................................2.3.2 Kifejezés......................................................................................................................................2.3.3 Változó.........................................................................................................................................2.3.4 Operátorok..................................................................................................................................
2.4 QUERY NYELV..................................................................................................................................2.4.1 Projekció megvalósítása.............................................................................................................2.4.2 Szelekció megadása.....................................................................................................................2.4.3 A kiválasztott sorok rendezése....................................................................................................2.4.4 Csoportok képzése.......................................................................................................................2.4.5 JOIN............................................................................................................................................2.4.6 Egymásbaágyazott lekérdezések.................................................................................................2.4.7 Táblákban kódolt hierarchiák.....................................................................................................
2.5 ADATDEFINÍCIÓS NYELV.....................................................................................................................2.5.1 Adattípusok..................................................................................................................................2.5.2 Táblák létrehozása, törlése, módosítása.....................................................................................
2.6 ADATMANIPULÁCIÓS NYELV..............................................................................................................2.7 ADATVEZÉRLŐ NYELV........................................................................................................................
2.7.1 Tranzakció-kezelés......................................................................................................................2.7.2 Privilégiumok és hozzáférési jogok.............................................................................................
3. TOVÁBBI INFORMÁCIÓK................................................................................................................
4. FÜGGELÉK...........................................................................................................................................
FÜGGELÉK A A CREATE TABLE UTASÍTÁS...................................................................................FÜGGELÉK B A „SULI KÖNYVTÁR” ADATBÁZIS.........................................................................FÜGGELÉK C RÖVIDÍTÉSEK..............................................................................................................
2
1. Relációkon végezhető műveletek
1.1 Projekció (egy tábla vertikális megszorítása)Def: Legyen R D Dn 1 ... , akkor R projekciója D Di ik1
,..., -ra. Ekkor = {s| s R2 úgy, hogy s2|( D Di ik1
,..., ) = s}
Példa: Az OLVASO (o_azon, vnev, unev, lakcim, kiad_azon, beir_dat, okod) tábla projekciója a vnev, unev, lakcim attribútumokra.
VNEV UNEV LAKCIM GIPSZ JAKAB DEBRECEN FAL U. 1. KEMENY HELEN APAFA FA U. 12. MINTA MOKUS SARAND FELFAL U. 9. KEREK ERNO SZOB TINTA U.13. POR OSZKAR EGER DOBO U.21.
1.2 Szelekció (egy tábla horizontális megszorítása)Jelölése: , ahol SQL keresési feltétel
A szelekció a reláció azon elemei (sorok), amelyek eleget tesznek a SQL keresési feltételnek.
Példa: Szelekció az OLVASO (o_azon, vnev, unev, lakcim, kiad_azon, beir_dat, okod) táblából, feltétel: vnev=’GIPSZ’ and unev=’JAKAB’.
O_AZON VNEV UNEV LAKCIM BEIR_DAT OKOD001 GIPSZ JAKAB DEBRECEN FAL U. 1. 04-JAN-90
Az unió, metszet és különbség műveletek csak pontosan azonos attribútumokat tartalmazó táblákon végezhetők. Mivel a reláció egy halmaz, ezek a műveletek a halmazelméletben tanultakkal megegyező eredményt szolgáltatnak.
1.3 UnióPélda
Q(A,B,C) R(D,A,E) relációk uniója az S reláció.
Q A B C R D A E Sa a b a a b a a ba c b b c d a c b
e f g b c de f g
1.4 Metszet Példa
Q R S
Sa a b
3
1.5 KülönbségQ R S\
Sa c b
1.6 Descartes szorzásPélda
Q R S
S Q.A B C D R.A Ea a b a a ba a b b c da a b e f ga c b a a ba c b b c da c b e f g
1.7 Összekapcsolás összekapcsolás/join, a Descartes szorzással kapott halmaz egy részhalmaza
Def: Legyen R D Dm1 1 ... ; R D Dn2 1 ' '... . Legyen D D Di j ' .
A R1 és R2 relációk összekapcsolása a D kapcsoló attribútum szerint az a D( R1, R2 ), amire D( R1 , R2 )={(d1,...,di-1,d,di+1,...,dm,d1`,...,dj-1`,dj+1`,...,dn`) | (d1,...,di-1,d,di+1,...,dm,) R1 ; és (d1`,...,dj-1`,d,dj+1`,...,dn`) R2 }
Két kiinduló táblát használ. Az eredmény a két tábla soraiból épül fel. Mindkét kiinduló táblában ki kell jelölni egy attribútumot (kapcsoló attribútum). Az eredménytábla sorai a következőképpen keletkeznek:
a Válasszuk ki az első tábla első sorát (aktuális sor).
b Keressük meg a második táblában azokat a sorokat, amelyek kapcsoló attribútuma ugyanazt az értéket tartalmazza, mint az aktuális sor kapcsoló attribútuma. Ha van ilyen sor, akkor folytassuk a következő lépéssel, ha nincs válasszuk a következő aktuális sort.
c Az eredménytábla sorait úgy kapjuk, hogy az aktuális sort az összes lehetséges módon folytatjuk az előző lépésben megkeresett kapcsolódó sorokkal.
d Az eredménytábla összes sorát úgy kapjuk, ha az első tábla összes során mint aktuális soron végiglépkedünk.
Ez volt az equijoin. (kapcsoló attribútumok értékegyenlőségén alapszik)
A nem equijoin a kapcsoló attribútumok egyenlőségtől eltérő relációján alapszik.
A külső join nemcsak a kapcsolódó sorokat teszi az eredménytáblába, hanem az első tábla azon sorait is, amelyhez nem létezett kapcsolódó sor a második táblából.
Példa equijoinra
S Q.A B C D R.A Ea a b a a ba c b a a b
4
kiad_azon kiad_nev varos isbn cimK001 TANKONYVKIADO LONDON 100002 EGRI CSILLAGOKK001 TANKONYVKIADO LONDON 100003 KOSZIVU EMBER FIAIK002 AKADEMIAI KIADO NEW YORK 100001 TUSKEVARK002 AKADEMIAI KIADO NEW YORK 100005 ANATOMIAK003 GONDOLAT KIADO LONDON 100004 EMPATIAK003 GONDOLAT KIADO LONDON 100006 RECEPTEK
Példa külső joinra
kiad_azon kiad_nev varos isbn cimK001 TANKONYVKIADO LONDON 100002 EGRI CSILLAGOKK001 TANKONYVKIADO LONDON 100003 KOSZIVU EMBER FIAIK002 AKADEMIAI KIADO NEW YORK 100001 TUSKEVARK002 AKADEMIAI KIADO NEW YORK 100005 ANATOMIAK003 GONDOLAT KIADO LONDON 100004 EMPATIAK003 GONDOLAT KIADO LONDON 100006 RECEPTEKK004 KOSSUTH KIADO LONDON
2. Az oracle sqlNégy résznyelve bontható:
1 lekérdező QUERY Language
2 adatdefiníciós DDL (Data Definition Language)
3 adatmanipulációs DML (Data Manipulation Language)
4 adatvezérlő DCL (Data Control Language
2.1 SQL parancsokSQLPLUSEXIT vagy QUITCONN[ECT] [felh_név[/jelszó]]| [felh_név[/jelszó@adatbázis]]DISCONNECT; Az SQL parancsokat ;-vel kell lezárni. HELP parancsnév/* Megjegyzés */
2.2 Szerkesztő parancsokSET PAUSE ON/OFF Képernyőgörgetés laponkénti megállással.LIST [szám] SQL buffer listázása.A[PPEND] Aktuláis sor végére karakterek fűzése.C[HANGE] ksor1/ksor2I[NPUT] Bufferben lévő SQL parancshoz új sor hozzáfűzése.DEL Az aktuális sort törli a bufferből.SAVE fnev [CRE|REP|APP] A buffer tartalmát fájlba írja.GET Kimentett SQL fájlt bufferbe visszatölt.EDIT [fnev] Az op.r. editorát hívja meg fnev szerkesztésre.DEF[INE] változó=érték Változót definiálhatunkDEF[INE] változó Megjeleníti a változó értékétUNDEF[INE] változó Megszünteti a változótDEFINE _EDITOR=’editor név’ Megadhatjuk, mely editor használja a rendszer az
EDIT paranccsal@|STA[RT] fnev p1[ p2]… SQL kiterjesztésű fnev parancsfájlt futtat, p1,p2,…,pn
5
paraméterek, amelyekre a parancsfájlban &1,&2,…,&n -nel lehet hivatkozni.
RUN vagy / a buffer tartalmát futtajaSPOOL [ON/OFF/OUT] | [fnev] Fájlba menti a képernyő tartalmátHOST Kilépés az op.r.-be.DESC[RIBE] [felhasználói név]tábla[@adatbázis]
Tábla szerkezetét írja ki.
Ábra 2.1 Az aktuális buffer és a külső editor
Külsõ editor
Kurrens bufferOperációsrendszer
fájl
EDIT
GET fájl
SAVE fájl
az editor SAVEparancsa
az editor SAVEparancsa
EDITfájl
START fájl
2.3 Szükséges alapfogalmak
2.3.1 LiterálA CHAR, DATE, NUMBER standard ORACLE adattípusok értékeinek konstans alakja.
Pl: ‘karaktersorozat’
-123.45
‘01-JAN-97’
2.3.2 Kifejezés Literál, változó, függvény, mezőnév magában is, vagy ezeknek operátorokkal való
összekapcsolása kifejezést alkot.
A kifejezésnek értéke van: pl. egy szám, szöveg, dátum, vagy igaz, hamis.
Az igaz, hamis értékű kifejezést logikai kifejezésnek, vagy feltételnek hívjuk.
2.3.3 Változó Neve van
Értéket adhatunk neki (DEF[INE] változó = érték, vagy a @|RUN parancsfájl p1[ p2]… paraméterek segítségével, lásd 2.2 részben)
Hivatkozhatunk rá (ACCEPT vagy DEFINE által létrehozott változóra &változónév, az @|RUN parancsfájl p1[ p2]… paraméterekre &1, &2 stb. lásd 2.2)
A változóknak csak literálokat adhatunk értékül. (Lásd 2.2 rész.)
Pl:’&varos’
2.3.4 OperátorokLekérdező
6
szelekciós_utasítás UNION szelekciós_utasítás szelekciós_utasítás eredményét mint halmazt kell felfogni.
szelekciós_utasítás MINUS szelekciós_utasítás -„-szelekciós_ut. INTERSECT szelekciós_ut. -„-Logikai
NOT NemAND ÉsOR VagyALL(kifejezés[,kifejezés]… | szelekciós utasítás) Minden. Előtte szerepelnie kell relációs
operátornak.ANY(kifejezés[,kifejezés]… | szelekciós utasítás) Valamelyik. Előtte szerepelnie kell
relációs operátornak.BETWEEN kifejezés AND kifejezésEXISTS (szelekciós_utasítás) Igaz, ha a szelekciós_utasítás ad vissza
értéketIN(kifejezés[,kifejezés]… | szelekciós_utasítás)kifejezés IS NOT NULLkifejezés IS NULLLIKE kifejezés %=*, _=?NOT BETWEEN kifejezés AND kifejezésNOT EXISTS (szelekciós utasítás)NOT IN(kifejezés[,kifejezés]… | szelekciós utasítás)NOT LIKE kifejezés
Numerikus
+,-,*,/
Relációs vagy összehasonlító
operátor jelentés=!=, <>, ^=><>=<=
Dátumra
dátumkifejezés - dátumkifejezés napok száma a két dátum között
Sztringekre
karakterkifejezés || karakterkifejezés Konkatenáció
7
2.4 QUERY nyelv
2.4.1 Projekció megvalósításaSELECT [DISTINCT] kifejezés [aliasnév][, kifejezés [aliasnév]]…
FROM táblanév;Példa
SELECT Vnev, Unev, lakcim FROM olvaso;SELECT * FROM konyv;SELECT * FROM tab; (csak az Oracle-nél)
SELECT varos FROM kiado; SELECT DISTINCT varos FROM kiado;
varos varosLONDON LONDONNEW YORK NEW YORKLONDONLONDON
2.4.2 Szelekció megadásaSELECT [DISTINCT] kifejezés [aliasnév][, kifejezés [aliasnév]]…
FROM táblanévWHERE keresési_feltétel;
2.4.2.1 Keresési feltétel (logikai kifejezés) egyszerű összehasonlítás
összehasonlítás egy halmaz elemeivel
összehasonlítás NULL értékkel
összetett keresési feltétel
Egyszerű összehasonlítás
oszlopnév relációs_operátor kifejezés|konstans
Összehasonlítás egy halmaz elemeivel
oszlopnév összehasonlító_operátor halmaz_definícióoperátor jelentés
BETWEEN kif. AND kif.
IN (lista)
LIKE kar_minta _ , %
Összehasonlítás NULL értékkel
oszlopnév IS NULLÖsszetett keresési feltételek
operátor jelentés
NOT
AND
OR
A használható operátorokról bővebben a 2.3.4 részben olvashatunk.
8
Példa
ORACLE MSSQL
SELECT o_azon, Vnev, Unev, lakcim FROM olvaso WHERE lakcim like ‘EGER%’ AND okod=6;
SELECT o_azon, Vnev, Unev, lakcim FROM olvaso WHERE lakcim like "EGER*" AND okod=6;
o_azon Vnev Unev lakcim005 POR OSZKÁR EGER DOBO U.21.
SELECT isbn,cim, kiad_dat FROM konyv WHERE kiad_dat BETWEEN ‘01/01/94’ AND ‘01/01/98’;
isbn cim kiad_dat100002 EGRI CSILLAGOK 2/12/97100003 KOSZIVU EMBER 7/1/94
SELECT * FROM olvaso WHERE okod IS NULL;
o_azon vnev unev lakcim beir_dat okod001 GIPSZ JAKAB DEBRECEN FAL U. 1. 1/4/90002 KEMENY HELEN APAFA FA U. 12. 2/27/95
2.4.3 A kiválasztott sorok rendezéseSELECT [DISTINCT] kifejezés [aliasnév][, kifejezés [aliasnév]]…
FROM táblanév[WHERE keresési_feltétel]ORDER BY kifejezés [DESC] [, kifejezés[DESC]]…;
Példa
SELECT isbn, cim,kiad_dat FROM konyv WHERE kiad_azon=’K001’ /* MSACCESS-ben ‘ helyett „*/
ORDER BY cim;
isbn cim kiad_dat100002 EGRI CSILLAGOK 2/12/97100003 KOSZIVU EMBER FIAI 6/21/94
SELECT isbn, lelt_szam,kolcs_e FROM peldanyORDER BY isbn, lelt_szam;
2.4.4 Csoportok képzéseSELECT [DISTINCT] kifejezés [aliasnév][, kifejezés [aliasnév]]…
FROM táblanév [WHERE keresési_feltétel]GROUP BY kifejezés [,kifejezés]…[HAVING csopkiv. feltétel][ORDER BY kifejezés [DESC] [, kifejezés[DESC]]…];
9
2.4.4.1 Csoportfüggvények (Oracle-nél és az Access-nél is ugyanaz)AVG([DISTINCT|ALL] kifejezés) A Null értéket figyelmen kívül hagyja.COUNT([DISTINCT|ALL] {*|kifejezés}) A Null értéket figyelmen kívül hagyja.MAX([DISTINCT|ALL] kifejezés)MIN([DISTINCT|ALL] kifejezés)SUM([DISTINCT|ALL] kifejezés)
A függvények NUMBER típusú adatokra alkalmazhatók, kivéve a MAX(), MIN(), COUNT() függvényeket, amelyek CHAR és DATE típusú adatokra is működnek.
Példa
SELECT okod, min(beir_dat), max(beir_dat), COUNT(*)FROM olvaso
GROUP BY okodHAVING COUNT(*)>1;
okod min(beir_dat) max(beir_dat) COUNT(*)1/4/90 2/27/95 2
6 5/12/93 5/22/93 2
2.4.4.2 Sztringátalakító függvényekINITCAP(kifejezés)INSTR(kifejezés,’sztring’)LENGTH(kifejezés)LOWER(kifejezés)SUBSTR(kifejezés, kp, hossz)UPPER(kifejezés)
2.4.4.3 Aritmetikai függvényekABS(kifejezés)GREATEST(kifejezés,kif2)LEAST(kifejezés,kif2)MOD(kifejezés, osztó)POWER(kifejezés,kitevő)ROUND(kifejezés,szám)SIGN(kifejezés)SQRT(kifejezés)TRUNC(kifejezés,szám)
egyéb műveletek:*,/,+,-
2.4.4.4 Dátumkezelő függvényekADD_MONTHS(dát,hónapszám)GREATEST(d1,d2)LEAST(d1,d2)MONTHS_BETWEEN(d1,d2)ROUND(dátum,formátum)TO_DATE(sztring)TO_CHAR(dátum[,formátum])SYSDATE
Példa
ORACLE MSACCESS
10
SELECT lelt_szam, o_azon, SYSDATE-kolcs_dat ota_kint_van FROM kolcson;
SELECT lelt_szam, o_azon, now-kolcs_dat as ota_kint_van FROM kolcson;
lelt_szam o_azon ota_kint_vanL002 002 259.991331018522L003 003 55.991331018522L004 002 92.991331018522L005 001 41.991331018522L007 002 37.991331018522L008 001 212.991331018522
2.4.4.5 Az NVL függvényNVL(oszlopkif, kif) =oszlopkif, ha az nem NULL, egyébként =kif
Példa: SELECT NVL(ar,0) FROM peldany;
2.4.5 JOINSELECT [DISTINCT] kifejezés [aliasnév][, kifejezés [aliasnév]]…
FROM táblanév [aliasnév], táblanév [aliasnév]WHERE kapcs_oszlop1 összehas_operátor kapcs_oszlop2 AND további_feltétel[GROUP BY kifejezés [,kifejezés]…][HAVING csopkiv_feltétel][ORDER BY kifejezés [DESC] [, kifejezés[DESC]]…];
Példa
ORACLE MSACCESS
SELECT Vnev, Unev, lakcim, kolcs_dat FROM olvaso o, kolcson kWHERE o.o_azon=k.o_azon AND SYSDATE-kolcs_dat>30;
SELECT Vnev, Unev, lakcim, kolcs_dat FROM olvaso INNER JOIN kolcson ON olvaso.o_azon=kolcson.o_azonWHERE now-kolcs_dat>30;
Vnev Unev lakcim kolcs_datKEMENY HELEN APAFA FA U. 12. 1/5/97MINTA MOKUS SARAND FELFAL U. 9. 7/28/97KEMENY HELEN APAFA FA U. 12. 6/21/97GIPSZ JAKAB DEBRECEN FAL U. 1. 2/21/97
ORACLE MSACCESS
SELECT a.kiad_azon, kiad_nev, varos, isbn,cim FROM konyv k, kiado aWHERE a.kiad_azon=k.kiad_azon;
SELECT kiado.kiad_azon, kiad_nev, varos, isbn, cim FROM kiado INNER JOIN konyv ON kiado.kiad_azon=konyv.kiad_azon;
kiad_azon kiad_nev varos isbn cimK001 TANKONYVKIADO LONDON 100002 EGRI CSILLAGOKK001 TANKONYVKIADO LONDON 100003 KOSZIVU EMBER FIAIK002 AKADEMIAI KIADO NEW YORK 100001 TUSKEVARK002 AKADEMIAI KIADO NEW YORK 100005 ANATOMIA
11
K003 GONDOLAT KIADO LONDON 100004 EMPATIAK003 GONDOLAT KIADO LONDON 100006 RECEPTEK
Outer Join(+) azt a táblát egészíti ki NULL értékekkel, amely a kapcsoló oszlop mellett van.
ORACLE MSACCESS
SELECT a.kiad_azon, kiad_nev, varos, isbn, cimFROM kiado a, konyv k WHERE a.kiad_azon=k.kiad_azon (+);
SELECT kiado.kiad_azon, kiad_nev, varos, isbn, cim FROM kiado LEFT JOIN konyv ON kiado.kiad_azon=konyv.kiad_azon;
kiad_azon kiad_nev varos isbn cimK001 TANKONYVKIADO LONDON 100002 EGRI CSILLAGOKK001 TANKONYVKIADO LONDON 100003 KOSZIVU EMBER FIAIK002 AKADEMIAI KIADO NEW YORK 100001 TUSKEVARK002 AKADEMIAI KIADO NEW YORK 100005 ANATOMIAK003 GONDOLAT KIADO LONDON 100004 EMPATIAK003 GONDOLAT KIADO LONDON 100006 RECEPTEKK004 KOSSUTH KIADO LONDON
Példa nem equijoinra
Listázzuk ki azokat, akik később iratkoztak be, mint GIPSZ JAKAB.
ORACLE MSACCESS
SELECT x.vnev,x.unev,x.lakcim, y.vnev,y.unev FROM olvaso x,olvaso y WHERE x.beir_dat>y.beir_dat AND UPPER(y.vnev)=’GIPSZ’ AND UPPER(y.unev)=’JAKAB’;
SELECT x.vnev,x.unev,x.lakcim, y.vnev,y.unev FROM olvaso as x,olvaso as y WHERE x.beir_dat>y.beir_dat AND y.vnev="GIPSZ" AND y.unev="JAKAB";
Pl: Listázzuk ki, hogy az egyes olvasóknál hány könyv van.
ORACLE MSACCESS
SELECT vnev, unev, count(k.lelt_szam)FROM olvaso o, kolcson kWHERE o.o_azon=k.o_azon (+)group by o.o_azon,vnev,unev;
SELECT vnev, unev, count(kolcson.lelt_szam) FROM olvaso left join kolcson on olvaso.o_azon=kolcson.o_azon group by olvaso.o_azon,vnev,unev;
2.4.6 Egymásbaágyazott lekérdezésekAz első SELECT WHERE részében újabb SELECT, össz. 15.
A beágyazott SELECT egyszerre több rekordot is visszaadhat. Ezek kezelésére használhatók a következők:
ANY
ALL
EXISTS
A belső SELECT-ből átvehetünk több oszlopot is.
Példa
12
Listázzuk ki azokat, akik később iratkoztak be, mint GIPSZ JAKAB.
ORACLE MSACCESSSELECT vnev,unev,lakcimFROM olvaso WHERE beir_dat>(select beir_dat From olvaso where vnev=’GIPSZ’ AND unev=’JAKAB’);
SELECT vnev,unev,lakcim FROM olvaso WHERE beir_dat>(select beir_dat From olvaso where vnev="GIPSZ" AND unev="JAKAB");
Listázzuk ki azon könyveket (ISBN, cim), amelyek Gipsz Jakabnál vannak.
ORACLE MSACCESSSELECT v.isbn,cim FROM konyv v, peldany pWHERE v.isbn=p.isbn AND lelt_szam IN
(SELECT lelt_szam FROM kolcson k, olvaso o WHERE k.o_azon=o.o_azon AND UPPER(vnev)=’GIPSZ’ AND UPPER(unev)=’JAKAB’);
SELECT konyv.isbn,cim FROM konyv inner join peldany ON konyv.isbn=peldany.isbn where lelt_szam IN (SELECT lelt_szam FROM kolcson inner join olvaso ON kolcson.o_azon=olvaso.o_azon where vnev="GIPSZ" AND unev="JAKAB");
isbn cim100002 EGRI CSILLAGOK100005 ANATOMIA
Példa korrelált lekérdezésre: a belső SELECT hivatkozik a külsőre.
Listázzuk ki azokat a könyveket, amelyeknek az ára nagyobb a könyv kiadója által kiadott könyvek átlagáránál.
ORACLE MSACCESSSELECT lelt_szam,k.isbn,cim,ar,kiad_azon FROM konyv k,peldany p WHERE p.isbn=k.isbn and ar>(SELECT avg(ar) FROM peldany, konyv WHERE k.kiad_azon=kiad_azon);
SELECT lelt_szam,k.isbn,cim,ar,kiad_azon FROM konyv as k,peldany as p WHERE p.isbn=k.isbn and ar>(SELECT avg(ar) FROM peldany, konyv WHERE k.kiad_azon=kiad_azon);
lelt_szam isbn cim ar kiad_azon --------- ------ -------------------- -------- --------- L001 100001 TUSKEVAR 1100 K002 L002 100001 TUSKEVAR 1100 K002 L003 100001 TUSKEVAR 1150 K002 L004 100002 EGRI CSILLAGOK 800 K001 L005 100002 EGRI CSILLAGOK 800 K001 L006 100003 KOSZIVU EMBER FIAI 1200 K001
Pl: Lisázzuk ki azokat a műveket, amelyek kölcsönözhetők.
SELECT szerzo,cimFROM konyvWHERE isbn in (select isbn From peldanywhere kolcs_e=1);
Listázzuk ki azokat a műveket, amelyeket Londonban adtak ki, és van kölcsönözhető példány belőlük.
13
2.4.7 Táblákban kódolt hierarchiákSELECT [ALL] | [DISTINCT] {*| kifejezés [aliasnév]} [,kifejezés [aliasnév]]...
FROM táblanév
CONNECT BY PRIOR oszlopnév1= oszlopnév2
START WITH oszlopnév=kifejezés;
A CONNECT BY részben adható meg a hierarchiát kódoló két oszlop neve (az oszlopnév1 az alacsonyabb, míg a oszlopnév2 a magasabb szinten lévő adat a hierarchiában).
A visszakeresés kiindulási pontját a START WITH után lehet megadni.
Példa:
Listázzuk ki NAGY KLARA összes beosztottját!
SELECT LPAD(' ', 2*LEVEL)||VNEV||UNEV STRUKTURA,LEVEL,D_AZON,FONOK FROM DOLGOZO CONNECT BY PRIOR D_AZON = FONOK START WITH VNEV='NAGY' AND UNEV=’KLARA’;
STRUKTURA LEVEL D_AZON FONOK -------------------------------------- NAGY KLARA 1 D01 KISS TEREZ 2 D02 D01 SZILARD ISTVAN 3 D04 D02 BARNA PETER 2 D03 D01 KEREK EMIL 3 D05 D03 FUTO ERZSEBET 2 D06 D01
Listázzuk ki NAGY KLARA összes közvetlen beosztottját!
SELECT LPAD(' ', 2*LEVEL)||VNEV||UNEV STRUKTURA,LEVEL,D_AZON,FONOK FROM DOLGOZO WHERE level=2 CONNECT BY PRIOR D_AZON = FONOK START WITH VNEV='NAGY' AND UNEV=’KLARA’;
Számítsuk ki a különböző vezetői szinteken az átlagfizetést!
SELECT LEVEL,AVG(FIZETES) FROM DOLGOZO CONNECT BY PRIOR D_AZON = FONOK START WITH VNEV='NAGY' AND UNEV=’KLARA’ GROUP BY LEVEL;
14
FELADATOK
1 Határozzuk meg, hány londoni kiadó van az adatbázisunkban.
2 Határozzuk meg, kik azok a debreceniek, akik 1990 februárjában iratkoztak be.
3 Határozzuk meg, hány darab kölcsönözhető, és hány darab köteles példány van a könyvtárunkban.
4 Határozzuk meg, hány darab 1994 január 1-től régebbi kölcsönözhető mű (létezik kölcsönözhető példánya) van a könyvtárunkban.
5 Melyik kiadótól van a legrégebbi könyvünk.
6 Listázzuk ki az olvasókat és adataik mellet azt, hogy az általuk legrégebben kivitt példány hány hete van náluk, névsor szerint rendezve.
7 Listázzuk ki a FEKETE ISTVAN által írt könyveket.
8 Irassuk ki azokat a könyveket, amelyekre egynél több előjegyzés van.
9 Irassuk ki azokat a könyveket, amelyek drágábbak, mint a TANKONYVKIADO által kiadott könyvek átlagára.
10 Irassuk ki, hogy az egyes szerzők hány könyvet írtak, névsor szerint rendezve.
11 Irassuk ki, hogy az egyes olvasóknál hány példány van kint, darabszám szerint csökkenően rendezve, és a listában csak azok legyenek benne, akiknél legalább két könyv van.
12 Irassuk ki, hogy az egyes olvasók hány könyvre jegyeztek elő.
13 Hány olvasónak nincs még figyelmeztetése (okod IS NULL).
14 Mennyi pénz szükséges a jelenlegi dolgozók havi bérének 10 %-os emeléséhez.
15 Irassuk ki, hogy az EGRI CSILLAGOKra jegyeztek-e elő, és ha igen, akkor ki(k).
16 Határozzuk meg a könyvtárosok átlagfizetését.
17 Irassuk ki BARNA PETER szintjén az átlagfizetést.
18 Irassuk ki az EGRI CSILLAGOK című könyv bent lévő példányait.
19 Kiviheti-e GIPSZ JAKAB az TUSKEVAR című könyvet? És az EGRI CSILLAGOKat.
20 Listázzuk ki a CIMVAL változó által meghatározott könyvből bent lévő kivihető (kölcsönözhető és nincs kikölcsönözve) példányokat.
15
MEGOLDÁSOK
1 SELECT COUNT(kiad_azon) FROM kiado WHERE varos=’LONDON’;
2 SELECT * FROM olvaso WHERE lakcim LIKE ‘DEBRECEN %’ AND beir_dat<’01-MAR-1990’ AND beir_dat>=’01-FEB-1990’;
3 SELECT kolcs_e, COUNT(*) FROM peldany GROUP BY kolcs_e;
4 SELECT COUNT(ISBN) FROM konyv WHERE kiad_dat<’01-JAN-1994’ AND ISBN IN (SELECT ISBN FROM peldany WHERE kolcs_e=1);
5 SELECT cim,kiad_dat,a.* FROM kiado a, konyv k WHERE k.kiad_azon=a.kiad_azon AND kiad_dat=(SELECT MIN(kiad_dat) FROM konyv);
6 SELECT o.*, (sysdate-kolcs_dat)/7 FROM olvaso o,kolcson k WHERE o.o_azon=k.o_azon AND kolcs_dat = (SELECT MIN(kolcs_dat) FROM kolcson WHERE o_azon=o.o_azon);
7 SELECT * FROM konyv WHERE ISBN IN (SELECT ISBN FROM irta i, szerzo s WHERE i.szerzo_azon=s.szerzo_azon AND vnev=’FEKETE’ AND unev=’ISTVAN’);
8 SELECT * FROM konyv WHERE ISBN IN (SELECT ISBN FROM elojegy GROUP BY ISBN HAVING COUNT(ISBN)>1);
9 SELECT * FROM konyv WHERE ar>(SELECT AVG(NVL(ar,0)) FROM konyv k, kiado a WHERE a.kiad_azon=k.kiad_azon (+) AND kiad_nev=’TANKONYVKIADO’); {ez a megoldás akkor is helyes, ha a KOSSUTH KIADO szerepelt volna a kérdésben}
10 SELECT MAX(vnev), MAX(unev), COUNT(s.szerzo_azon) FROM szerzo s, irta i WHERE s.szerzo_azon=i.szerzo_azonGROUP BY s.szerzo_azonORDER BY MAX(vnev), MAX(unev);
11 SELECT MAX(vnev), MAX(unev), COUNT(NVL(lelt_szam,0)) FROM olvaso o, kolcson kWHERE o.o_azon=k.o_azon (+)GROUP BY o.o_azonHAVING COUNT(NVL(lelt_szam,0))>1ORDER BY COUNT(NVL(lelt_szam,0)) DESC;
12 SELECT MAX(vnev), MAX(unev),COUNT(NVL(ISBN,0)) FROM olvaso o, elojegy eWHERE o.o_azon=e.o_azon (+)GROUP BY o.o_azon;
13 SELECT * FROM olvaso WHERE okod IS NULL OR okod=0;
14 SELECT SUM(1.1*fizetes-fizetes) FROM dolgozo;
15 SELECT * FROM olvaso WHERE o_azon in (SELECT o_azon FROM elojegy e,konyv kWHERE k.ISBN=e.ISBN AND cim=’EGRI CSILLAGOK’);
16 SELECT AVG(fizetes) FROM dolgozo WHERE beosztas=’KONYVTAROS’;
17 SELECT AVG(fizetes) FROM dolgozo WHERE LEVEL=(SELECT LEVEL FROM dolgozo CONNECT BY PRIOR d_azon=fonok START WITH vnev=’BARNA’ AND unev=’PETER’) CONNECT BY PRIOR d_azon=fonok START WITH vnev=’BARNA’ AND unev=’PETER’;
18 SELECT lelt_szam FROM peldany MINUS SELECT k.lelt_szam FROM kolcson k, peldany p WHERE k.lelt_szam=p.lelt_szam AND ISBN = (SELECT ISBN FROM konyv WHERE cim=’EGRI CSILLAGOK’);
19 GIPSZ JAKABnál kint lévő könyvek száma kisebb-e, mint a maximálisan kivihető könyvek száma (3)?SELECT COUNT(NVL(lelt_szam,0))<3 FROM olvaso o, kolcson kWHERE o.o_azon=k.o_azon (+) AND vnev=’GIPSZ’ AND unev=’JAKAB’
16
Van-e jelenleg az TUSKEVAR ból példány GIPSZ JAKABnál?SELECT vnev,unev FROM olvaso o, kolcson kWHERE o.o_azon=k. o_azon AND vnev=’GIPSZ’ AND unev=’JAKAB’ AND lelt_szam IN(SELECT lelt_szam FROM konyv k, peldany p WHERE k.ISBN=p.ISBN AND cim=’TUSKEVAR’);Az előjegyzési sorban GIPSZ JAKAB előtt lévők száma kisebb-e, mint ahány szabad, kivihető példány van az TUSKEVARból jelenleg a könyvtárban?Az előjegyzési sorban GIPSZ JAKAB előtt lévők száma:SELECT COUNT(e.o_azon) FROM olvaso o, elojegy e WHERE o.o_azon=e.o_azon AND ISBN=(SELECT ISBN FROM konyv WHERE cim=’ TUSKEVAR’) AND eloj_dat < (SELECT eloj_dat FROM olvaso o, elojegy e WHERE o.o_azon=e.o_azon AND vnev=’GIPSZ’ AND unev=’JAKAB’);Hány szabad, kivihető példány van az TUSKEVARból?SELECT COUNT(p.lelt_szam) FROM peldany p, kolcson k WHERE p.lelt_szam =k.lelt_szam (+) AND kolcs_e=1 AND o_azon is NULL AND ISBN = (SELECT ISBN FROM konyv WHERE cim=’ TUSKEVAR’);Az EGRI CSILLAGOK című könyv esetén a megoldás ugyanez, érdemes ilyen esetekben változókat használni (cim=&CIMVALT).
20 SELECT p.lelt_szam FROM peldany p, kolcson k WHERE p.lelt_szam =k.lelt_szam (+) AND kolcs_e=1 AND o_azon is NULL AND ISBN = (SELECT ISBN FROM konyv WHERE cim=&CIMVAL);
17
2.5 Adatdefiníciós nyelv
2.5.1 AdattípusokCHAR NUMBER[(n[)]][,d)} DATE
LONG RAW VARCHAR
LONG VARCHAR DECIMAL INTEGER
SMALLINT FLOAT LONG RAW
2.5.2 Táblák létrehozása, törlése, módosításaCREATE TABLE táblanév
(oszlopnév adattípus (szélesség) [NOT NULL],oszlopnév adattípus (szélesség) [NOT NULL],oszlopnév adattípus (szélesség) [NOT NULL]);
Táblanév: max 30 karakter, egyedi, a névképzési szabályoknak megfelelő.
A CREATE TABLE utasítás teljes leírását lásd a Függelék A-ben.Példa Lásd Függelék B.
ALTER TABLE táblanévADD oszlopnév adattípus (szélesség);[DROP megszorítás]
Új oszlop táblához adása.
ALTER TABLE táblanévMODIFY oszlopnév adattípus (új_szélesség) [NOT NULL|NULL];[DROP megszorítás]
Meglévő oszlop szélesítése.
Példa
ALTER TABLE kiadoADD telefon NUMBER(10);
ALTER TABLE kiadoMODIFY varos CHAR(20);
Táblában lévő oszlopot nem lehet direkt módon törölni. (Helyette: Új tábla létrehozása kevesebb oszloppal, értékek átmásolása, régi tábla törlése.)
Csak olyan oszlop típusát lehet megváltoztatni, illetve méretét csökkenteni, amelyben minden sor értéke NULL.
Egy létező oszlop csak akkor változtatható NOT NULL típusúvá, ha minden sorában nem NULL érték áll.
DROP TABLE táblanév;Példa A Suli-könyvtár adatbázisának törlése (a táblák törlési sorrendje lényeges)
drop table elojegy;drop table kolcson;drop table peldany;drop table konyv;drop table kiado;drop table olvaso;
CREATE VIEW nézetnév [aliasnév]AS szelekciós utasítás;
18
ORDER BY rész nem lehet benne, több táblára is működik.
DROP VIEW nézetnév;
CREATE [UNIQUE] INDEX indnév. ON tábnév. (oszlnév [ASC|DESC]);
DROP INDEX indnév.[ON tábnév];
2.6 Adatmanipulációs nyelvINSERT INTO tábnév [(on1,on2,…)]
VALUES (e1,e2,e3,…) | szelekciós utasítás;
UPDATE tábnév SET on1=e1,on2=e2,….WHERE keresési felt. | szelekciós utasítás;
DELETE FROM tábnév [WHERE keresési felt. | szelekciós utasítás};
Csak teljes sor törlése.
Ha nincs WHERE vagy szelekciós, akkor minden sort töröl.
19
FELADATOK
Képzeljük el, hogy egy könyvesboltot vezetünk. Készítsünk egy olyan adatbázist, amelyben nyilvántarthatjuk a készleten lévő könyveket, a rendeléseket, és az eladásokat.
1 Hozzuk létre a következő táblákat.
2 Vigyünk fel néhány szállítót a szallito táblába.
3 Rendeljünk könyveket.
4 A rendelés megérkezésekor, állítsuk be a teljesítés dátumát az adott napi dátumra, és aktualizáljuk a készletet, ahol az egységárat a beszerzési ártól (rendeles tábla egysegar mezője) állítsuk nagyobbra.
5 Az egyes könyvek eladásakor aktualizáljuk a készletet (darab mező), és bővítsük az eladás táblát.
6 Kérdezzük le, hogy milyen könyvekből kell új rendelést feladni (pl. darab<2).
20
MEGOLDÁSOK
1 CREATE TABLE szallito (szall_azon CHAR(3) NOT NULL PRIMARY KEY,szall_nev CHAR(20) CHECK (szall_nev=UPPER(szall_nev)),cim CHAR(30) CHECK (cim=UPPER(cim)) );
CREATE TABLE rendeles (rend_szam CHAR(4) NOT NULL PRIMARY KEY,ISBN CHAR(6) NOT NULL, rend_dat DATE DEFAULT SYSDATE NOT NULL,szall_azon NOT NULL REFERENCES szallito,telj_dat DATE,egysegar NUMBER (4) NOT NULL,mennyiseg NUMBER (4));
CREATE TABLE keszlet (ISBN CHAR(6) NOT NULL, besz_dat DATE DEFAULT SYSDATE NOT NULL,PRIMARY KEY(ISBN, besz_dat),cim CHAR(20) NOT NULL CHECK (cim=UPPER(cim)),szerzo CHAR(25) CHECK (szerzo=UPPER(szerzo),egysegar NUMBER(4) NOT NULL,darab NUMBER(4) NOT NULL);
CREATE TABLE eladas (ISBN CHAR(6) NOT NULL, egysegar NUMBER(4) NOT NULL, besz_dat DATE DEFAULT SYSDATE NOT NULL);
2 INSERT INTO szallito VALUES (‘001’,’FOSPED’,’BUDAPEST’);
3 INSERT INTO rendeles VALUES (‘0001’, ‘100001’,SYSDATE,’001’,NULL,1300,10);
4 UPDATE rendeles SET telj_dat=SYSDATEWHERE rend_szam=’0001’;
5
21
2.7 Adatvezérlő nyelv
2.7.1 Tranzakció-kezelésTranzakció: Tetszőleges adatmanipulációs utasítások egy sorozata.
lefutott a tranzakció ellentmondásmentes adatbázis
nem futott le a tranzakció ellentmondásos adatbázis
COMMIT
A tranzakció utáni állapotot rögzíti.
ROLLBACK
A tranzakció előtti állapotot állítja vissza.
Ezek a parancsok automatikusan és expliciten is meghívásra kerülnek.
2.7.2 Privilégiumok és hozzáférési jogok
2.7.2.1 JogokAz Oracle rendszerbe történő bejelentkezéshez szükséges
felhasználói név
jelszó
jogok
A jogok lehetnek
a rendszer használatával kapcsolatos jogok (privilégiumok)
a táblák használatával kapcsolatos jogok (hozzáférési jogok)
2.7.2.2 Privilégiumok Connect
Resource
Dba
CONNECT
bejelentkezhet az Oracle RDBMS-be és használhatja
betekinthet táblákba, amelyekre SELECT jogot kapott
betekinthet a Public minősítésű táblákba
az adatmanipulációs utasításokat használhatja azokra a táblákra, amelyekre a tábla tulajdonosa megfelelő jogokat adott (INSERT, DELETE, UPDATE)
nézettáblákat (view) definiálhat
RESOURCE
minden CONNECT jog
táblák, indexek létrehozása és törlése
az általa létrehozott táblákra vonatkozóan jogokat adhat tovább más felhasználóknak
az általa létrehozott táblákra, indexekre igénybe veheti a rendszer AUDITING szolgáltatását
22
DBA
minden RESOURCE jog
bármely felhasználó adataiba betekinthet, és lekérdezést hajthat végre
jogokat adhat és vonhat vissza bárkitől
PUBLIC-nak minősíthet adatokat
rendszer AUDITING
teljes adatbázis export/import
2.7.2.3 Táblákra vonatkozó hozzáférési jogokSELECT INDEX
INSERT ALTER
DELETE UPDATE
REFERENCES
A tábla tulajdonosa vagy DBA jogú felhasználó adhatja illetve vonhatja vissza ezeket a hozzáférési jogokat.
2.7.2.4 Privilégiumok és hozzáférési jogok adása és visszavonásaPrivilégiumok és hozzáférési jogok adása illetve visszavonása a GRANT illetve a REVOKE utasítással történik.
2.7.2.4.1 Privilégiumok adása és visszavonása (csak DBA)GRANT privilégium TO felhasználó IDENTIFIED BY jelszó;REVOKE privilégium FROM felhasználó;
2.7.2.4.2 Hozzáférési jogok adása és visszavonásaGRANT ALL | hozzáférési_jog [,hozzáférési_jog …] ON táblanév TO PUBLIC | felhaszáló [,felhaszáló] [WITH GRANT OPTION];
GRANT oszlop_jog (oszlop)[, oszlop_jog (oszlop) …] ON táblanév TO PUBLIC | felhaszáló [,felhaszáló] [WITH GRANT OPTION];
REVOKE ALL | hozzáférési_jog [,hozzáférési_jog …] ON táblanév FROM PUBLIC | felhaszáló;
A felhasználó helyett állhat a PUBLIC is, ekkor mindenki számára biztosítjuk a jogokat.
Az összes hozzáférési jog helyett állhat ALL.
oszlop_jog: UPDATE, REFERENCES
[WITH GRANT OPTION] ha megadjuk, a felhasználó továbbadhatja a jogokat.
23
3. További információk
Quittner Pál: Adatbázis-kezelés a gyakorlatban, Akadémiai kiadó, Budapest, 1993
Dr. Halassy Béla: Az adatbázisok kezelésének alapvető kérdései, 1978, Budapest, KSH
Priskinné R. Zsuzsa és Erdélyiné: Építsünk könnyen és lassan adatmodellt, 1997, Veszprém
Váthy Ágnes, Németh Krisztián: Adatmodellezési feladatok I., Veszprém 1996, Veszprémi Egyetem
Stolnicki Gyula: SQL kézikönyv, ComputerBooks (http://www.computerbooks.hu/sql.htm)
Juhász I., Almási B., Márton Á., Balogh J.,: ORACLE 6.0 referencia kézikönyv
Balogh Judit, Rutkovszky Edéné: SQL Példatár, 1994
Teach Yourself SQL in 21 Days, Second Edition
ftp://pc123a.math.klte.hu/anonymous/Adatb/sql21/index.htm
Introduction to Structured Query Language
ftp://pc123a.math.klte.hu/anonymous/Adatb/SQLTut/sqltut.htm
SQLFAQ: Table of Contents
http://epoch.CS.Berkeley.EDU:8000/sequoia/dba/montage/FAQ/SQL_TOC.html
SQLReference Page http://www.contrib.andrew.cmu.edu/~shadow/sql.html
SQLStandards Home Page
http://www.jcc.com/sql_stnd.html
SQLTutorial http://w3.one.net/~jhoffman/sqltut.htm
miniSQL http://www.Hughes.com.au/
24
4. Függelék
Figure A A SELECT utasítás
SELECT [ALL] | [DISTINCT] {*|[tábla.]*|[tábla.]kifejezés [aliasnév]} [,[tábla.]kifejezés [aliasnév]]... FROM [felhasználó.]tábla [aliasnév] [,[felhasználó.]tábla [aliasnév]]... WHERE feltétel CONNECT BY feltétel START WITH feltétel GROUP BY kifejezés[,kifejezés]... HAVING feltétel UNION | INTERSECT | MINUS SELECT... ORDER BY kifejezés | ASC | DESC,... FOR UPDATE OF oszlop, oszlop... NOWAIT;
Függelék A A CREATE TABLE utasítás
CREATE TABLE [felhasználó.]tábla(oszlopelem|táblamegszorítás [,oszlopelem|táblamegszorítás]… );
oszlopelem: név típus [DEFAULT kifejezés] [oszlopmegszorítás]
oszlopmegszorítás:
[NULL | NOT NULL | [CONSTRAINT megszorítás] ][UNIQUE | PRIMARY KEY [CONSTRAINT megszorítás] ][REFERENCES [felhasználó.] tábla [(oszlop)] [CONSTRAINT megszorítás] ][CHECK (feltétel) [CONSTRAINT megszorítás] ]
táblamegszorítás:
[UNIQUE | PRIMARY KEY (oszlop[,oszlop]…)[CONSTRAINT megszorítás] ][FOREIGN KEY (oszlop [,oszlop]…)][REFERENCES [felhasználó.]tábla [oszlop[,oszlop]… [CONSTRAINT megszorítás] ][CHECK (feltétel) [CONSTRAINT megszorítás] ]
Függelék B A „Suli könyvtár” adatbázis
A táblák létrehozása
create table szerzo ( szerzo_azon char(3) not null primary key, Vnev char(15) not null check (Vnev = UPPER(Vnev)), Unev char(10) not null check (Unev = UPPER(Unev)), telszam char (12) null );create table olvaso ( o_azon char(3) not null primary key, Vnev char(15) not null check (Vnev = UPPER(Vnev)), Unev char(10) not null check (Unev = UPPER(Unev)), lakcim char (20) not null, beir_dat date not null, okod number(2) null );create table kiado ( kiad_azon char(4) not null primary key, kiad_nev char(15) not null check (kiad_nev=upper(kiad_nev)),
25
varos char(15) null );create table konyv ( isbn char(6) not null primary key, cim char(20) not null check (cim=upper(cim)), kiad_azon char(4) not null references kiado(kiad_azon), kiad_dat date null );create table peldany ( lelt_szam char(4) not null primary key, isbn char(6) not null references konyv(isbn), kolcs_e number(1) not null check (kolcs_e=0 or kolcs_e=1), ar number(4) not null );create table kolcson ( lelt_szam char(4) not null references peldany(lelt_szam), o_azon char(3) not null references olvaso(o_azon), primary key (lelt_szam), kolcs_dat date not null );create table elojegy ( isbn char(6) not null references konyv(isbn), o_azon char(3) not null references olvaso(o_azon), primary key (isbn,o_azon), eloj_dat date default sysdate not null );create table irta ( szerzo_azon char(3) not null references szerzo(szerzo_azon), isbn char(6) not null references konyv(isbn), primary key (szerzo_azon,isbn) );create table dolgozo ( d_azon char(3) not null primary key, Vnev char(15) not null check (Vnev = UPPER(Vnev)), Unev char(10) not null check (Unev = UPPER(Unev)), beosztas char(20), belepes date default sysdate not null, fizetes number(6), fonok char(3) );grant ALL on irta to PUBLIC;grant ALL on szerzo to PUBLIC;grant ALL on elojegy to PUBLIC;grant ALL on kolcson to PUBLIC;grant ALL on peldany to PUBLIC;grant ALL on konyv to PUBLIC;grant ALL on kiado to PUBLIC;grant ALL on olvaso to PUBLIC;grant ALL on dolgozo to PUBLIC;
26
Kapcsolatok
A táblák adatai
OLVASOO_AZON VNEV UNEV LAKCIM BEIR_DAT OKOD ------ --------------- ---------- -------------------- --------- ------------- 001 GIPSZ JAKAB DEBRECEN FAL U. 1. 04-JAN-90 002 KEMENY HELEN APAFA FA U. 12. 27-FEB-95 003 MINTA MOKUS SARAND FELFAL U. 9. 30-NOV-94 7 004 KEREK ERNO SZOB TINTA U.13. 22-MAY-93 6 005 POR OSZKAR EGER DOBO U.21. 12-MAY-93 6
KIADOKIAD_AZON KIAD_NEV VAROS --------- --------------- --------------- K001 TANKONYVKIADO LONDON K002 AKADEMIAI KIADO NEW YORK K003 GONDOLAT KIADO LONDON K004 KOSSUTH KIADO LONDON
KONYVISBN CIM KIAD KIAD_DAT _AZON------ -------------------- ---- ---------100001 TUSKEVAR K002 01-JAN-93100002 EGRI CSILLAGOK K001 12-FEB-97100003 KOSZIVU EMBER FIAI K001 21-JUN-94100004 EMPATIA K003 24-NOV-91100005 ANATOMIA K002 01-JUL-90100006 RECEPTEK K003 01-JUL-92
PELDANY LELT_SZAM ISBN KOLCS_E AR--------- ------ --------- ---------- - L001 100001 1 1100 L002 100001 1 1100 L003 100001 1 1150 L004 100002 1 800 L005 100002 1 800 L006 100003 0 1200
27
L007 100004 1 300 L008 100005 1 650 L009 100004 0 300 L010 100004 1 340 L011 100005 0 680 L012 100006 1 600 L013 100006 1 600
KOLCSONLELT_SZAM O_AZON KOLCS_DAT --------- ------ --------- L002 002 05-JAN-97 L003 003 28-JUL-97 L004 002 21-JUN-97 L005 001 11-AUG-97 L007 002 15-AUG-97 L008 001 21-FEB-97
ELOJEGYISBN O_AZON ELOJ_DAT ------ ------ --------- 100002 003 22-AUG-97 100005 002 21-JUN-97
SZERZOSZERZO_AZON VNEV UNEV TELSZAM ----------- --------------- ---------- ------------ S01 FEKETE ISTVAN S02 GARDONYI GEZA S03 JOKAI MOR S04 BUDA BELA S05 TARSOLY EMIL S06 KUDLIK JULIA S07 PSOTA IREN
IRTASZERZO_AZON ISBN ----------- ------S01 100001S02 100002S03 100003S04 100004S04 100005S05 100005S06 100006S07 100006
DOLGOZOd_azon Vnev Unev beosztas belepes fizetes fonok------- ------- -------- ------------- ---------- ------- ----- D01 NAGY KLARA IGAZGATO 30-NOV-92 110000 NULL D02 KISS TEREZ OSZTALYVEZETO 13-JAN-94 82000 D01 D03 BARNA PETER OSZTALYVEZETO 23-SEP-93 79000 D01 D04 SZILARD ISTVAN KONYVTAROS 17-MAR-91 28000 D02 D05 KEREK EMIL KONYVTAROS 10-OCT-92 31000 D03 D06 FUTO ERZSEBET ELJARO 01-FEB-96 30000 D01
28
Függelék C Rövidítések
ABR Adatbázisrendszer
DDL Data Definition Language (adatdefiníciós nyelv)
DML Data Manipulation Language (adatmanipulációs nyelv)
DCL Data Control Language (adatvezérlő nyelv)
SQL Structured Query Language (struktúrált lekérdező nyelv)
DB Data Base (adatbázis)
DBA Data Base Administrator (adatbázis adminisztrátor)
DBMS Data Base Management System (adatbázis-kezelő rendszer)
RDBMS Relational Data Base Management System (relációs adatbázis-kezelő rendszer)
29