ADATB`ZIS-KEZEL S. SegØdanyag a gyakorlathoz. sszeæll totta: VÆrady Lajos varadyl@math.klte.hu



Hasonló dokumentumok
8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte

Adatbázisok* tulajdonságai

Adatbázis-kezelés, információs-rendszerek

B I T M A N B I v: T M A N

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

Adatbázis-kezelés. Harmadik előadás

BEVEZETÉS Az objektum fogalma

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Adatbázis rendszerek SQL nyomkövetés

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE) október október 22. Adatbázisok 1 / 14

Adatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

Adatbázisok I A relációs algebra

SQL parancsok feldolgozása

Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány)

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Adatbázis használat I. 5. gyakorlat

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

Bevezetés: az SQL-be

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Adatbázisok I. Az SQL nyelv

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

Adatbázisok biztonsága

Készítette: Szabóné Nacsa Rozália

ORACLE. SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

Elemi alkalmazások fejlesztése IV.

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

LEKÉRDEZÉSEK SQL-BEN. A relációs algebra A SELECT utasítás Összesítés és csoportosítás Speciális feltételek

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

ADATBÁZISOK I. Az esetleges hibákat kérlek a csongor@csongorbokay.com címen jelezd! Utolsó módosítás: március 20.

Adatbázis Rendszerek II. 8. Gyakorló környezet

Adatbázisok elmélete 10. előadás

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

Adatbázis kezelés Delphiben. SQL lekérdezések

SQL gyakorló feladatok. 6. Adatbázis gyakorlat április 5.

Adatbázisok I. Jánosi-Rancz Katalin Tünde 327A 1-1

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

Megszorítások. AB1_06A_Megszorítások - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Adatbázisok elmélete 9. előadás

Az SQL nyelv. SQL (Structured Query Language = Strukturált Lekérdező Nyelv).

Vizuális programozás gyakorlat

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

3. Előadás. Az SQL adatbázisnyelv (Tartalom) Az SQL története. Az SQL felépítése. Adattípúsok. SQL utasítások

Adatbázisok elmélete 9. előadás

ADATBÁZIS HASZNÁLAT I. 4. gyakorlat

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.


SQL DDL-1: táblák és megszorítások

Adatbázis-kezelés alapok Adatbázisok című tárgyhoz, ismétlés kapcsán

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

BUJDOSÓ GYÖNGYI. Bevezetés az SQL-be OKTATÁSI SEGÉDANYAG AZ ADATBÁZISKEZELÉS CÍMŰ GYAKORLATHOZ DEBRECENI EGYETEM INFORMATIKAI KAR

B I T M A N B I v: T M A N

GEIAL Kovács László. GEIAL Kovács László GEIAL Kovács László

Adatok szűrése, rendezése

A könyv tartalomjegyzéke

Java és web programozás

Adatbázis Rendszerek II. 3. SQL alapok

Gazdasági folyamatok térbeli elemzése. 5. elıadás

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

Keskeny Zoltán 2007/08 SQL. Structured Query Language. (gyakorlat az SQL2 szabvány alapján) Keskeny Zoltán tanév

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

Adatbázisok I. Jánosi-Rancz Katalin Tünde 327A 1-1

BEVEZETÉS Az objektum fogalma

Java és web programozás

II. év. Adatbázisok és számítógépek programozása

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

Adatbázis rendszerek Ea: Eskúel. Structured Query Language

Adatbázis rendszerek Ea: Esqúel. Structured Query Language

Tranzakciókezelés PL/SQL-ben

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

Relációsémák létrehozása SQL nyelvben

Paraméteres-, összesítı- és módosító lekérdezések

Relációs algebrai lekérdezések átírása SQL SELECT-re (példák)

Adatbáziskezelés - SQL. Forrás: dr. Kovács László: Adatbázisok tervezésének és kezelésének módszertana Computerbooks

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

Az SQL*Plus használata

5.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2

LOGISZTIKAI ADATBÁZIS RENDSZEREK BEVEZETÉS

INTEGER egész típusú érték megadása, hozzá hasonló, de számábrázolási tartományában eltérő típus még a SMALLINT, szinonimája a DECIMAL

A relációs algebra egy speciális algebra, amely néhány egyszerű, de hathatós. operandusok. Egy reláció megadható a nevével vagy közvetlenül, sorainak

ADATBÁZIS RENDSZEREK I BEADANDÓ

Adatbázisok az iskolában 2012 Adatmodellezés. Dr. Balázs Péter

GEIAL Kovács László. GEIAL Kovács László

Átírás:

ADATB`ZIS-KEZEL S SegØdanyag a gyakorlathoz sszeæll totta: VÆrady Lajos varadyl@math.klte.hu 1

TARTALOM 1. REL`CI KON V GEZHET M VELETEK... 3 1.1 PROJEKCI (EGY T`BLA VERTIK`LIS MEGSZOR T`SA)... 3 1.2 SZELEKCI (EGY T`BLA HORIZONT`LIS MEGSZOR T`SA)... 3 1.3 UNI... 3 1.4 METSZET... 3 1.5 K L NBS G... 4 1.6 DESCARTES SZORZ`S... 4 1.7 SSZEKAPCSOL`S... 4 2. AZ ORACLE SQL... 5 2.1 SQL PARANCSOK... 5 2.2 SZERKESZT PARANCSOK... 5 2.3 SZ KS GES ALAPFOGALMAK... 6 2.3.1 LiterÆl... 6 2.3.2 KifejezØs... 6 2.3.3 VÆltoz... 6 2.3.4 OperÆtorok... 7 2.4 QUERY NYELV... 8 2.4.1 Projekci megval s tæsa... 8 2.4.2 Szelekci megadæsa... 8 2.4.3 A kivælasztott sorok rendezøse... 9 2.4.4 Csoportok køpzøse... 9 2.4.5 JOIN... 11 2.4.6 EgymÆsbaÆgyazott lekørdezøsek... 12 2.4.7 TÆblÆkban k dolt hierarchiæk... 14 2.5 ADATDEFIN CI S NYELV... 18 2.5.1 Adatt pusok... 18 2.5.2 TÆblÆk løtrehozæsa, t rløse, m dos tæsa... 18 2.6 ADATMANIPUL`CI S NYELV... 19 2.7 ADATVEZ RL NYELV... 22 2.7.1 Tranzakci -kezeløs... 22 2.7.2 PrivilØgiumok Øs hozzæførøsi jogok... 22 3. TOV`BBI INFORM`CI K... 24 4. F GGEL K... 25 F GGEL K A A CREATE TABLE UTAS T`S... 25 F GGEL K B A SULI K NYVT`R ADATB`ZIS... 25 F GGEL K C R VID T SEK... 29 2

1. RelÆci kon vøgezhetı mßveletek 1.1 Projekci (egy tæbla vertikælis megszor tæsa) Def: Legyen R D1... D n, akkor R projekci ja Di 1,..., Di -ra. Ekkor k Π i1,..., ik ( R) = {s s2 R œgy, hogy s2 ( Di 1,..., Di k ) = 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: σ (R Ψ ), 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 OKOD 001 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 S a a b a a b a a b a c b b c d a c b e f g b c d e f g 1.4 Metszet PØlda QI R = S S a a b 3

1.5 K l nbsøg Q \ R = S S a c b 1.6 Descartes szorzæs PØlda Q R = S S Q.A B C D R.A E a a b a a b a a b b c d a a b e f g a c b a a b a c b b c d a 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... D m ; R 2 D 1... D n. Legyen D = D = D. 1 1 ' A R 1 Øs R 2 relæci k sszekapcsolæsa a D kapcsol attribœtum szerint az a D(, R 2 ), R1 amire D( R 1, R 2 )={(d1,...,di-1,d,di+1,...,dm,d1,...,dj-1,dj+1,...,dn ) (d1,...,di- 1,d,di+1,...,dm,) R 1 ; Øs (d1,...,dj-1,d,dj+1,...,dn ) R 2 } 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 E a a b a a b a c b a a b ' i ' j 4

kiad_azon kiad_nev varos isbn cim K001 TANKONYVKIADO LONDON 100002 EGRI CSILLAGOK K001 TANKONYVKIADO LONDON 100003 KOSZIVU EMBER FIAI K002 AKADEMIAI KIADO NEW YORK 100001 TUSKEVAR K002 AKADEMIAI KIADO NEW YORK 100005 ANATOMIA K003 GONDOLAT KIADO LONDON 100004 EMPATIA K003 GONDOLAT KIADO LONDON 100006 RECEPTEK PØlda k lsı joinra kiad_azon kiad_nev varos isbn cim K001 TANKONYVKIADO LONDON 100002 EGRI CSILLAGOK K001 TANKONYVKIADO LONDON 100003 KOSZIVU EMBER FIAI K002 AKADEMIAI KIADO NEW YORK 100001 TUSKEVAR K002 AKADEMIAI KIADO NEW YORK 100005 ANATOMIA K003 GONDOLAT KIADO LONDON 100004 EMPATIA K003 GONDOLAT KIADO LONDON 100006 RECEPTEK K004 KOSSUTH KIADO LONDON NØgy røsznyelve bonthat : 1. lekørdezı QUERY Language 2. Az oracle sql 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 parancsok SQLPLUS EXIT vagy QUIT CONN[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ı parancsok SET PAUSE ON/OFF LIST [szæm] A[PPEND] C[HANGE] ksor1/ksor2 I[NPUT] DEL SAVE fnev [CRE REP APP] GET EDIT [fnev] DEF[INE] væltoz =ØrtØk DEF[INE] væltoz UNDEF[INE] væltoz DEFINE _EDITOR=editor nøv KØpernyıg rgetøs laponkønti megællæssal. SQL buffer listæzæsa. AktulÆis sor vøgøre karakterek fßzøse. Bufferben løvı SQL parancshoz œj sor hozzæfßzøse. Az aktuælis sort t rli a bufferbıl. A buffer tartalmæt fæjlba rja. Kimentett SQL fæjlt bufferbe visszat lt. Az op.r. editoræt h vja meg fnev szerkesztøsre. VÆltoz t definiælhatunk Megjelen ti a væltoz ØrtØkØt Megsz nteti a væltoz t Megadhatjuk, mely editor hasznælja a rendszer az EDIT paranccsal 5

@ STA[RT] fnev p1[ p2] SQL kiterjesztøsß fnev parancsfæjlt futtat, p1,p2,,pn paramøterek, amelyekre a parancsfæjlban &1,&2,,&n -nel lehet hivatkozni. RUN vagy / a buffer tartalmæt futtaja SPOOL [ON/OFF/OUT] [fnev] FÆjlba menti a køpernyı tartalmæt HOST KilØpØs az op.r.-be. DESC[RIBE] [felhasznæl i TÆbla szerkezetøt rja ki. nøv]tæbla[@adatbæzis] `bra 2.1 Az aktuælis buffer Øs a k lsı editor EDIT az editor SAVE parancsa Külsõ editor az editor SAVE parancsa EDIT fájl Kurrens buffer GET fájl SAVE fájl START fájl Operációs rendszer fájl 2.3 Sz ksøges alapfogalmak 2.3.1 LiterÆl A 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 6

2.3.4 OperÆtorok LekØrdezı 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 Nem AND s OR Vagy ALL(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øs EXISTS (szelekci s_utas tæs) IN(kifejezØs[,kifejezØs] szelekci s_utas tæs) kifejezøs IS NOT NULL kifejezøs IS NULL LIKE kifejezøs NOT BETWEEN kifejezøs AND kifejezøs NOT EXISTS (szelekci s utas tæs) NOT IN(kifejezØs[,kifejezØs] szelekci s utas tæs) NOT LIKE kifejezøs Igaz, ha a szelekci s_utas tæs ad vissza ØrtØket %=*, _=? Numerikus +,-,*,/ RelÆci s vagy sszehasonl t operætor =!=, <>, ^= > < >= <= DÆtumra jelentøs 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æsa SELECT [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 varos LONDON LONDON NEW YORK NEW YORK LONDON LONDON 2.4.2 Szelekci megadæsa SELECT [DISTINCT] kifejezøs [aliasnøv][, kifejezøs [aliasnøv]] FROM tæblanøv WHERE 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 NOT AND OR jelentøs A hasznælhat operætorokr l bıvebben a 2.3.4 røszben olvashatunk. 8

PØlda ORACLE SELECT o_azon, Vnev, Unev, lakcim FROM olvaso WHERE lakcim like EGER% AND okod=6; MSSQL SELECT o_azon, Vnev, Unev, lakcim FROM olvaso WHERE lakcim like "EGER*" AND okod=6; o_azon Vnev Unev lakcim 005 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_dat 100002 EGRI CSILLAGOK 2/12/97 100003 KOSZIVU EMBER 7/1/94 SELECT * FROM olvaso WHERE okod IS NULL; o_azon vnev unev lakcim beir_dat okod 001 GIPSZ JAKAB DEBRECEN FAL U. 1. 1/4/90 002 KEMENY HELEN APAFA FA U. 12. 2/27/95 2.4.3 A kivælasztott sorok rendezøse SELECT [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_dat 100002 EGRI CSILLAGOK 2/12/97 100003 KOSZIVU EMBER FIAI 6/21/94 SELECT isbn, lelt_szam,kolcs_e FROM peldany ORDER BY isbn, lelt_szam; 2.4.4 Csoportok køpzøse SELECT [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 okod HAVING 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ønyek INITCAP(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ønyek ABS(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ønyek ADD_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 10

PØlda ORACLE SELECT lelt_szam, o_azon, SYSDATE-kolcs_dat ota_kint_van FROM kolcson; MSACCESS SELECT lelt_szam, o_azon, nowkolcs_dat as ota_kint_van FROM kolcson; lelt_szam o_azon ota_kint_van L002 002 259.991331018522 L003 003 55.991331018522 L004 002 92.991331018522 L005 001 41.991331018522 L007 002 37.991331018522 L008 001 212.991331018522 2.4.4.5 Az NVL f ggvøny NVL(oszlopkif, kif) =oszlopkif, ha az nem NULL, egyøbkønt =kif PØlda: SELECT NVL(ar,0) FROM peldany; 2.4.5 JOIN SELECT [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 SELECT Vnev, Unev, lakcim, kolcs_dat FROM olvaso o, kolcson k WHERE o.o_azon=k.o_azon AND SYSDATE-kolcs_dat>30; MSACCESS SELECT Vnev, Unev, lakcim, kolcs_dat FROM olvaso INNER JOIN kolcson ON olvaso.o_azon=kolcson.o_azon WHERE now-kolcs_dat>30; Vnev Unev lakcim kolcs_dat KEMENY HELEN APAFA FA U. 12. 1/5/97 MINTA MOKUS SARAND FELFAL U. 9. 7/28/97 KEMENY HELEN APAFA FA U. 12. 6/21/97 GIPSZ JAKAB DEBRECEN FAL U. 1. 2/21/97 ORACLE SELECT a.kiad_azon, kiad_nev, varos, isbn,cim FROM konyv k, kiado a WHERE a.kiad_azon=k.kiad_azon; MSACCESS SELECT kiado.kiad_azon, kiad_nev, varos, isbn, cim FROM kiado INNER JOIN konyv ON kiado.kiad_azon=konyv.kiad_azon ; 11

kiad_azon kiad_nev K001 TANKONYVKIADO varos LONDON isbn cim 100002 EGRI CSILLAGOK K001 TANKONYVKIADO LONDON 100003 KOSZIVU EMBER FIAI K002 AKADEMIAI KIADO NEW YORK 100001 TUSKEVAR K002 AKADEMIAI KIADO NEW YORK 100005 ANATOMIA K003 GONDOLAT KIADO LONDON 100004 EMPATIA K003 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 SELECT a.kiad_azon, kiad_nev, varos, isbn, cim FROM kiado a, konyv k WHERE a.kiad_azon=k.kiad_azon (+); MSACCESS 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 cim K001 TANKONYVKIADO LONDON 100002 EGRI CSILLAGOK K001 TANKONYVKIADO LONDON 100003 KOSZIVU EMBER FIAI K002 AKADEMIAI KIADO NEW YORK 100001 TUSKEVAR K002 AKADEMIAI KIADO NEW YORK 100005 ANATOMIA K003 GONDOLAT KIADO LONDON 100004 EMPATIA K003 GONDOLAT KIADO LONDON 100006 RECEPTEK K004 KOSSUTH KIADO LONDON PØlda nem equijoinra ListÆzzuk ki azokat, akik køsıbb iratkoztak be, mint GIPSZ JAKAB. ORACLE 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; MSACCESS 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 SELECT vnev, unev, count(k.lelt_szam) FROM olvaso o, kolcson k WHERE o.o_azon=k.o_azon (+) group by o.o_azon,vnev,unev; MSACCESS 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øsek Az 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 12

A belsı SELECT-bıl Ætvehet nk t bb oszlopot is. PØlda ListÆzzuk ki azokat, akik køsıbb iratkoztak be, mint GIPSZ JAKAB. ORACLE SELECT vnev,unev,lakcim FROM olvaso WHERE beir_dat>(select beir_dat From olvaso where vnev=gipsz AND unev=jakab); MSACCESS 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 SELECT v.isbn,cim FROM konyv v, peldany p WHERE 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); MSACCESS 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 cim 100002 EGRI CSILLAGOK 100005 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 SELECT lelt_szam,k.isbn,cim,ar,kiad_az on FROM konyv k,peldany p WHERE p.isbn=k.isbn and ar>(select avg(ar) FROM peldany, konyv WHERE k.kiad_azon=kiad_azon); MSACCESS SELECT lelt_szam,k.isbn,cim,ar,kiad_az on 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,cim FROM konyv WHERE isbn in (select isbn From peldany where kolcs_e=1); 13

ListÆzzuk ki azokat a mßveket, amelyeket Londonban adtak ki, Øs van k lcs n zhetı pøldæny belıl k. 2.4.7 TÆblÆkban k dolt hierarchiæk SELECT [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_azon GROUP BY s.szerzo_azon ORDER BY MAX(vnev), MAX(unev); 11. SELECT MAX(vnev), MAX(unev), COUNT(NVL(lelt_szam,0)) FROM olvaso o, kolcson k WHERE o.o_azon=k.o_azon (+) GROUP BY o.o_azon HAVING COUNT(NVL(lelt_szam,0))>1 ORDER BY COUNT(NVL(lelt_szam,0)) DESC; 12. SELECT MAX(vnev), MAX(unev),COUNT(NVL(ISBN,0)) FROM olvaso o, elojegy e WHERE 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 k WHERE 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 k 16

WHERE o.o_azon=k.o_azon (+) AND vnev=gipsz AND unev=jakab Van-e jelenleg az TUSKEVAR b l pøldæny GIPSZ JAKABnÆl? SELECT vnev,unev FROM olvaso o, kolcson k WHERE 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 pusok CHAR 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æsa CREATE 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øv ADD oszlopnøv adatt pus (szølessøg); [DROP megszor tæs] j oszlop tæblæhoz adæsa. ALTER TABLE tæblanøv MODIFY 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 kiado ADD telefon NUMBER(10); ALTER TABLE kiado MODIFY 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 nyelv INSERT 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=sysdate WHERE rend_szam=0001; 5. 21

2.7 AdatvezØrlı nyelv 2.7.1 Tranzakci -kezeløs Tranzakci : 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 ROLLBACK A tranzakci utæni Ællapotot r gz ti. 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 Jogok Az 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 RESOURCE 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 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 22

DBA az Æltala løtrehozott tæblækra, indexekre igønybe veheti a rendszer AUDITING szolgæltatæsæt 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 jogok SELECT INSERT DELETE REFERENCES INDEX ALTER UPDATE 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æsa PrivilØ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æsa GRANT 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 Introduction to Structured Query Language SQLFAQ: Table of Contents SQLReference Page SQLStandards Home Page SQLTutorial minisql ftp://pc123a.math.klte.hu/anonymous/adatb/sql21/index.htm ftp://pc123a.math.klte.hu/anonymous/adatb/sqltut/sqltut.htm http://epoch.cs.berkeley.edu:8000/sequoia/dba/montage/faq/sql_toc.html http://www.contrib.andrew.cmu.edu/~shadow/sql.html http://www.jcc.com/sql_stnd.html http://w3.one.net/~jhoffman/sqltut.htm 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] ] A tæblæk løtrehozæsa F ggeløk B A Suli k nyvtær adatbæzis 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)), varos char(15) null 25

); 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 OLVASO O_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 KIADO KIAD_AZON KIAD_NEV VAROS --------- --------------- --------------- K001 TANKONYVKIADO LONDON K002 AKADEMIAI KIADO NEW YORK K003 GONDOLAT KIADO LONDON K004 KOSSUTH KIADO LONDON KONYV ISBN CIM KIAD KIAD_DAT _AZON ------ -------------------- ---- --------- 100001 TUSKEVAR K002 01-JAN-93 100002 EGRI CSILLAGOK K001 12-FEB-97 100003 KOSZIVU EMBER FIAI K001 21-JUN-94 100004 EMPATIA K003 24-NOV-91 100005 ANATOMIA K002 01-JUL-90 100006 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 L007 100004 1 300 27

L008 100005 1 650 L009 100004 0 300 L010 100004 1 340 L011 100005 0 680 L012 100006 1 600 L013 100006 1 600 KOLCSON LELT_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 ELOJEGY ISBN O_AZON ELOJ_DAT ------ ------ --------- 100002 003 22-AUG-97 100005 002 21-JUN-97 SZERZO SZERZO_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 IRTA SZERZO_AZON ISBN ----------- ------ S01 100001 S02 100002 S03 100003 S04 100004 S04 100005 S05 100005 S06 100006 S07 100006 DOLGOZO d_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 DDL DML DCL SQL DB DBA DBMS RDBMS AdatbÆzisrendszer Data Definition Language (adatdefin ci s nyelv) Data Manipulation Language (adatmanipulæci s nyelv) Data Control Language (adatvezørlı nyelv) Structured Query Language (struktœrælt lekørdezı nyelv) Data Base (adatbæzis) Data Base Administrator (adatbæzis adminisztrætor) Data Base Management System (adatbæzis-kezelı rendszer) Relational Data Base Management System (relæci s adatbæzis-kezelı rendszer) 29