title · web viewdr. halassy béla: az adatbázisok kezelésének alapvető kérdései, 1978,...

34
ADATBÁZIS-KEZELÉS Segédanyag a gyakorlathoz Összeállította: Várady Lajos [email protected] 1

Upload: others

Post on 10-Feb-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TITLE · Web viewDr. 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,

ADATBÁZIS-KEZELÉSSegédanyag a gyakorlathoz

Összeállította: Várady [email protected]

1

Page 2: TITLE · Web viewDr. 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,

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

Page 3: TITLE · Web viewDr. 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,

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

Page 4: TITLE · Web viewDr. 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,

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

Page 5: TITLE · Web viewDr. 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,

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

Page 6: TITLE · Web viewDr. 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,

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

Page 7: TITLE · Web viewDr. 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,

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

Page 8: TITLE · Web viewDr. 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,

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

Page 9: TITLE · Web viewDr. 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,

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

Page 10: TITLE · Web viewDr. 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,

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

Page 11: TITLE · Web viewDr. 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,

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

Page 12: TITLE · Web viewDr. 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,

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

Page 13: TITLE · Web viewDr. 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,

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

Page 14: TITLE · Web viewDr. 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,

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

Page 15: TITLE · Web viewDr. 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,

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

Page 16: TITLE · Web viewDr. 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,

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

Page 17: TITLE · Web viewDr. 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,

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

Page 18: TITLE · Web viewDr. 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,

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

Page 19: TITLE · Web viewDr. 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,

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

Page 20: TITLE · Web viewDr. 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,

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

Page 21: TITLE · Web viewDr. 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,

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

Page 22: TITLE · Web viewDr. 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,

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

Page 23: TITLE · Web viewDr. 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,

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

Page 24: TITLE · Web viewDr. 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,

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

Page 25: TITLE · Web viewDr. 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,

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

Page 26: TITLE · Web viewDr. 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,

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

Page 27: TITLE · Web viewDr. 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,

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

Page 28: TITLE · Web viewDr. 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,

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

Page 29: TITLE · Web viewDr. 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,

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