Adatbázis Rendszerek II. 3. Ea: MySQL alapok
B IT M A N
86/1
v: 2016.02.16 B IT MAN
Témakörök
MySQL letöltés, telepítés
Beállítások, indítófájl
Parancssoros használat
MySQL adatbázisok MySQL adattáblák
86/2
Bolt adatbázis (példa)
B IT M A N
MySQL letöltése (1) XAMPP – http://www.apachefriends.org
86/3
B IT M A N
MySQL letöltése (2)
86/4
B IT M A N
XAMPP telepítése (1)
86/5
B IT M A N
XAMPP telepítése (2)
86/6
B IT M A N
XAMPP telepítése (3)
86/7
B IT M A N
XAMPP telepítése (4)
86/8
B IT M A N
XAMPP Control Panel
86/9
B IT M A N
Témakörök
MySQL letöltés, telepítés
Beállítások, indítófájl
Parancssoros használat
MySQL adatbázisok MySQL adattáblák
86/10
Bolt adatbázis (példa)
B IT M A N
http://127.0.0.1
86/11
B IT M A N
MySQL root jelszó beállítás (1)
86/12
B IT M A N
MySQL root jelszó beállítás (2)
Újraindítás! 86/13
B IT M A N
MySQL indítófájl készítés
86/14
B IT M A N
Mysql.bat
86/15
B IT M A N
Témakörök
MySQL letöltés, telepítés
Beállítások, indítófájl
Parancssoros használat
MySQL adatbázisok MySQL adattáblák
86/16
Bolt adatbázis (példa)
B IT M A N
MySQL parancssoros felület
86/17
B IT M A N
Néhány alapparancs Show databases; Select version(), current_date;
86/18
B IT M A N
Néhány hasznos parancs Parancssor
>select database();
Parancssor
>show tables;
>use bolt; >select database();
Parancssor
>describe vásárlás;
107/19 86/19
B IT M A N
Témakörök
MySQL letöltés, telepítés
Beállítások, indítófájl
Parancssoros használat
MySQL adatbázisok MySQL adattáblák
86/20
Bolt adatbázis (példa)
B IT M A N
Relációs adatmodell - Alapok Kód
Építő elemek: MEZŐ REKORD RELÁCIÓ ADATBÁZIS
Név
A3 Kovács B
14 S1
Dolgozó
Munkakör Munkaidő Szupercég 86/21
B IT M A N
Létrehozási sorrend 1. Adatbázis, 2. Adattábla (reláció),
1. Mezők neve, típusa (sorrendiség!) 2. Megszorítások (inegritási feltételek) 3. Kapcsolatok az egyes táblák között, 4. Adatok felvitele.
86/22
B IT M A N
Adatbázisok Create database próba; Use próba;
Drop database próba;
86/23
B IT M A N
Témakörök
MySQL letöltés, telepítés
Beállítások, indítófájl
Parancssoros használat
MySQL adatbázisok MySQL adattáblák
86/24
Bolt adatbázis (példa)
B IT M A N
A mezők jellemzése Domain (mezőtípus): értelmezési tartomány, mely
megadja az elemhez tartozó értékkészletet, és meghatározza a végrehajtható műveletek körét. – Alapvető domainek (mezőtípusok): • Char(n) – karakteres; C(20), • Number(n,m) – numerikus; N(8,2), • Date – dátum. Mező: az adatbázis struktúra azon egysége, melyből a rekordok felépülnek. – A mező a legkisebb DB struktúra egység (egyértékű, atomi). – A mezők megadásánál meg kell adni a domain-t (típust) és az integritási feltételeket. 86/25
B IT M A N
A rekordok jellemzése Rekord: adatbázis struktúra elem, mely a logikailag
összetartozó, és egységként kezelhető elemi adatértékek (mezők) együttesét jelöli. – A rekordszerkezet leírását az ún. séma tartalmazza: • Tábla neve, • Mezők neve, típusa, integritási feltételei. – A rekordon belül bizonyos mezők speciális szerepet töltenek be: kulcsmező, kapcsoló mezők, index mezők, ezek paramétereit is meg kell adni a sémában. – A rekordhoz integritási feltételek köthetők.
86/26
B IT M A N
Séma leírás példa Séma leírás:
Termék [ Kód, Név, Ár, Méret ] Vásárlás [ TKód, VAzon, Dátum, Darab ] Vásárló [ Azonosító, Név, Fiz_mód, Lakcím ] Kód
Név
Azonosító
Név
Vásárlás
Vásárló
Termék Ár
86/27
Leírás Méret
Dátum
Darab
Lakcím
FizMód
B IT M A N
A relációk jellemzői A relációk rekordjaiban tároljuk a logikailag összetartozó
adatokat A relációban tárolt rekordok számát a reláció egyedszámának nevezzük. A relációk tulajdonságaiban (oszlopaiban) az azonos tulajdonságokra vonatkozó adatok jelennek meg. Egy tábla nem tartalmazhat két azonos nevű oszlopot. Az oszlopok (attribútumok) számát a reláció fokának Négyfokú reláció nevezzük.
Egyedszám: kettő 86/28
Azonosító
Név
Évfolyam
Osztály
001
Kati
11
A
002
Tibi
12
B
B IT M A N
A relációk jellemzői 2. Egy relációra vonatkozó követelmények: – A tulajdonságok sorrendje tetszőleges lehet, de a tábla kialakítása után a mezősorrend nem változhat, így minden rekord mezőszerkezete azonos. – Nem tartalmazhat két azonos tulajdonság oszlopot. – Nem lehet két egyforma rekord. – A rekordok sorrendje tetszőleges. – Egy cellába csak egy érték kerülhet, így a modellben közvetlenül nem tárolhatók az összetett és a többértékű tulajdonságok. – Az adatok viszonyára vonatkozó legfontosabb megkötés az elsődleges kulcs, amellyel a reláción belüli rekordok egyértelműen megkülönböztethetők egymástól. 86/29
B IT M A N
Kapcsolatok – A modell nem tárolja külön elemként a kapcsolatokat, hanem az egymással összefüggésben lévő relációkban megismétli valamelyik mezőt, és a kapcsolatot a mezőbe beírt adatok értékegyezősége adja.
– Két reláció között értelmezett a kapcsoló (idegen) kulcs, amely olyan értékeket tartalmaz, amely egy másik tábla elsődleges kulcsával megegyezik, így megvalósítva a két tábla közötti kapcsolatot. Útnyilvántartás
Autó
Sorszám Rszám Dátum Útvonal Km
Rendszám Típus Fogyaszt
Kapcsoló kulcs 86/30
Elsődleges kulcs
B IT M A N
Kapcsolatok 2. Ha a kapcsoló kulcsot nem kötelező megadni, akkor
olyan 1:1 kapcsolatot hozhatunk létre a két tábla között, amelyben nem minden rekordnak van párja a kapcsolt táblában. Útnyilvántartás
Autó
Sorszám Rszám Dátum Útvonal Km
Rendszám Típus Fogyaszt
Nem mindegyik autóhoz tartozik útnyilvántartás! Sorszám
Rszám
Dátum
Rendszám
Típus
Fogyaszt
1
ABC-123
14.02.21
ABC-123
Opel
8,5
14.02.16
FFF-663
Renault
7,2
EIS-104
Lada
12,4
DCT-432
Suzuki
6,4
2
86/31
B IT M A N
Kapcsolatok 3. Ha a kapcsoló kulcsot kötelező megadni, és nem
ismétlődhet az értéke, akkor olyan 1:1 kapcsolat van a két tábla között, amelyben minden rekordnak van párja a kapcsolt táblában. Útnyilvántartás
Autó
Sorszám Rszám Dátum Útvonal Km
Rendszám Típus Fogyaszt
Az útnyilvántartásnak autóhoz kell tartoznia! Sorszám
Rszám
Dátum
Rendszám
Típus
Fogyaszt
1
ABC-123
14.02.21
ABC-123
Opel
8,5
2
EIS-104
14.02.16
FFF-663
Renault
7,2
EIS-104
Lada
12,4
DCT-432
Suzuki
6,4
86/32
B IT M A N
Kapcsolatok 4. Ha a kapcsoló kulcsot kötelező megadni, és ismétlődhet
az értéke, akkor 1:N kapcsolat van a két tábla között, vagyis minden rekordhoz több rekord is kapcsolódhat a kapcsolt táblában. Az ilyen típusú kapcsoló kulcsot nevezik általában idegen kulcsnak. Útnyilvántartás
Autó
Sorszám Rszám Dátum Útvonal Km
Rendszám Típus Fogyaszt
Az útnyilvántartásnak autóhoz kell tartoznia, de egy autóhoz több útnyilvántartás is tartozhat. Sorszám
Rszám
Dátum
1
ABC-123
14.02.21
2
ABC-123
14.02.16
86/33
Rendszám
Típus
Fogyaszt
ABC-123
Opel
8,5
FFF-663
Renault
7,2
EIS-104
Lada
12,4
DCT-432
Suzuki
6,4 B IT MAN
Kapcsolatok 5. Ha a két tábla között N:M típusú kapcsolat van, akkor a
kapcsolatot külön táblával (kapcsolótábla) valósítjuk meg.
86/34
Termék
Vásárlás
Vásárló
TKód TNév Ár
TKód VKód
VKód
Név Cím
TKód
TNév
Ár
VKód
Név
Cím
T01
Tej
220
V01
Rozi
Kő u 11
T02
Vaj
210
TKód
VKód
V02
Peti
Só u 32
T03
Tea
550
T01
V01
V03
Miki
Bő u 17
T04
Só
145
T04
V01
V04
Évi
Lé u 46
T02
V03
T04
V01
T03
V04
T02
V04
B IT M A N
Index kulcsok A táblázatok rekordjai fizikailag abban a sorrendben
helyezkednek el a merevlemezen, amilyen sorrendben begépelték őket. Az adatok rendezettségét az index kulcs biztosítja, mely a fizikai táblázat rekordjainak logikai elrendezését határozza meg. Az index kulcsok lehetővé teszik az adatok gyorsabb hozzáférését. Az index létrehozása egy új táblázatot eredményez, melynek egyik oszlopában az indexelt mező elemei szerepelnek rendezetten, a másik oszlopában a rekordok elsődleges kulcsa található. 86/35
B IT M A N
Index kulcsok 2. Index tábla
Autó tábla
Rendszám
Kód
Kód
Rendszám
Típus
Szín
ABC123
A04
A01
BER666
Fiat
zöld
BER666
A01
A02
RTW285
Opel
kék
CDR420
A06
A03
DGZ531
Suzuki
kék
DGZ531
A03
A04
ABC123
Mercedes
fekete
LEM597
A05
A05
LEM597
Opel
fehér
RTW285
A02
A06
CDR420
Nissan
piros
Index kulcs
86/36
B IT M A N
Adatintegritás Az adatintegritás az adatok érvényességét, jóságát jelenti. Hitelesség, megbízhatóság, pontosság, ellentmondás mentesség. Hibás adatok: – 2 azonos kulcs, – elírt érték, – szám helyett szöveg Elkerülése: – Ellenőrzött adatbevitel, – Kulcsértékek figyelése, – Hivatkozások figyelése 86/37
B IT M A N
Az adatintegritás szintjei Mező szintű megszorítások Rekord szintű megkötések
Kód
Név
A3 Kovács B
14 S1
Reláció szintű előírások
Adatbázis szintű ellenőrzések
Dolgozó
Munkakör Munkaidő Szupercég 86/38
B IT M A N
Mező szintű megkötések
A3 Kovács B
14
S1
Egy mezőre vonatkozó érvényes érték előfordulások körét
lehet megadni: – A megkötés lehet logikai kifejezés, amely minden lehetséges értékre igaz vagy hamis értéket ad vissza • Check Kor>0 – A megkötés vonatkozhat arra, hogy a mezőben tárolt érték nem lehet üres (kötelező megadni) • Kód Not Null – Előírható egy sablon, mely az adat külalakjára vonatkozik • Rendszámban 3 betű, aztán kötelező –, végül 3 számjegy Az adatbázisba csak olyan mezőértékek vihetők be, melyek a megadott szabályoknak eleget tesznek. 86/39
B IT M A N
Rekord szintű megkötések
A3 Kovács B
14
S1
Egy teljes rekord elfogadhatóságát kell eldönteni Az ellenőrzési feltételben a reláció sémájában szereplő
mezők szerepelhetnek Az integritási feltétel célja az egy rekordon belül egymáshoz kapcsolódó mezők értékeinek vizsgálata – Ha a végzettség középfokú, a fizetés > 80000 Ft. – Ha a kategória élelmiszer, az áfa 10 vagy 15 % lehet. – Ha a kód A vagy B betűvel kezdődik, a tárolási hely a E vagy az F rekesz lehet.
86/40
B IT M A N
Reláció és adatbázis szint Reláció szint A teljes relációt, vagyis az összes rekord előfordulást át kell vizsgálni – Az adott mezőben ugyanaz az érték nem fordulhat elő többször a relációban (egyediség) – Kód Unique – Elsődleges kulcs mező (mezők) – Kód Primary key Adatbázis szint A feltétel több relációban, szétszórtan elhelyezkedő mezőkre vonatkozik, az ellenőrzéshez több reláció adatait is át kell olvasni – Idegen kulcs mező (csak egy másik táblában szereplő értékeket vehet fel) – Ha az A táblában a kód A7, a B táblában az érték csak 10 és 20 között lehet 86/41
B IT M A N
Egyed integritási szabály Minden relációban legyen egyedi értékű kulcs (mező vagy mezőcsoport), ami egyértelműen meghatározza a rekord előfordulásokat. A kulcs mező (mezők) értékét kötelező kitölteni, vagyis és a kulcs nem lehet üres. A kulcs lehet egyszerű (egy mező, pl. autó rendszáma vagy személy adószáma) vagy összetett (több mező, pl. tanfolyam címe, időpontja, repülőjárat száma és a dátum).
Hivatkozás integritási szabály Minden kapcsoló kulcs mező értéke vagy üres, vagy egy létező, hivatkozott táblabeli elsődleges kulcsértékre mutat. 86/42
B IT M A N
Adattáblák létrehozása (1) Create table táblanév( Ékezetes mezőnevek? oszlopnév mezőtípus definíciók, Inkább ne használjuk! oszlopnév mezőtípus definíciók, ... Not null, default, primary kulcsok, key, auto_increment, indexek, unique, comment megszorítások );
86/43
B IT M A N
Numerikus mezőtípusok (1) Egész típusú:
– TINYINT 1 byte – SMALLINT 2 byte – MEDIUMINT 3 byte – INT (INTEGER) 4 byte – BIGINT 8 byte Mindegyik lehet előjeles, vagy előjel nélküli: UNSIGNED
86/44
B IT M A N
Numerikus mezőtípusok (2) Lebegőpontos típusú:
– FLOAT(M,D) 24 tizedesig – DOUBLE(M,D) (Real) 53 tizedesig – DECIMAL(M,D) 1 byte/jegy – NUMERIC(M,D) 1 byte/jegy Mindegyik előjeles
86/45
B IT M A N
Dátum, idő mezőtípusok DATE: ÉÉÉÉ_HH_NN DATETIME: ÉÉÉÉ-HH-NN ÓÓ:PP:MM TIMESTAMP(méret):
– ÉÉÉÉHHNNÓÓPPMM (14 jegyű) – ÉÉHHNNÓÓPPMM (12 jegyű) – ÉÉÉÉHHNN (8 jegyű) – ÉÉHHNN (6 jegyű) TIME: ÓÓ:PP:MM YEAR: – 1901-2155 (4 jegyű) – (19)70-(20)69 (2 jegyű) 86/46
B IT M A N
Szöveges mezőtípusok CHAR: max 255 karakter, fix hossz VARCHAR: max 255 karakter, változó hossz BLOB: max 65535 krt, case sensitive
TEXT: max 65535 krt, nem case sensitive TINYBLOB/TEXT: max 255 karakter MEDIUMBLOB/TEXT: max 16777215 karakter LONGBLOB/TEXT: max 4294967295 karakter ENUM: lista max 65535 értékkel Karakterszámot lehet, de nem kell megadni!
86/47
B IT M A N
Adattáblák létrehozása – Definíciók Create table táblanév( oszlopnév mezőtípus definíciók, . . . Not null – Nem maradhat üresen a cella Default – Alapérték (egyeznie kell a mezőtípussal) Auto_increment – Automatikusan növelt mezőérték Unique – Egyediség, nem lehet egyforma érték a mezőben Comment – Megjegyzés Primary key – Elsődleges kulcs (jobb külön sorban megadni)
86/48
B IT M A N
Adattáblák létrehozása – Megszorítások Create table Melós( IDM int, IDM int Primary key, Check (IDM > 1000), Unique (IDM),
Index (IDM), Foreign key (IDM) references Munkakör(Mkód),
);
86/49
B IT M A N
Példák CREATE TABLE pld1 ( id INT PRIMARY KEY, nev VARCHAR(100), datum DATE, suly FLOAT(8,5));
CREATE TABLE pld2 ( az INT PRIMARY KEY, hely VARCHAR(100), darab INT(10) UNSIGNED, Foreign key (az) references pld1(id));
CREATE TABLE pld1 ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, nev VARCHAR(50) NOT NULL, darab INT(10) unsigned not null default '0', idopont TIMESTAMP(8) DEFAULT NOW(), Unique (nev) ) TYPE=innodb; 86/50
B IT M A N
Témakörök
MySQL letöltés, telepítés
Beállítások, indítófájl
Parancssoros használat
MySQL adatbázisok MySQL adattáblák
86/51
Bolt adatbázis (példa)
B IT M A N
Bolt adatbázis (példa)
86/52
ER modell
Táblák létrehozása
Adatok feltöltése
B IT M A N
MINIBOLT – ER modell Kkod
Nev
Tkod
Nev Ar
Kategoria
K-T
Termek Leiras
Idopont Sorszam
Vasarlas
Darab
Fkod
Leiras
Nev
Vasarlo
V-F
FizModok
VID Cim
86/53
B IT M A N
MINIBOLT – Táblák létrehozási sorrendje 2 Kkod
Nev
Tkod
Nev
Ar
Kategoria
Termek
K-T
Leiras
1
5 Sorszam
Idopont
Vasarlas
3 Darab
Fkod
Leiras
Nev
4
Vasarlo
V-F
FizModok
VID Cim
86/54
B IT M A N
MINIBOLT – Struktúra Kategoria
Termek
Kkod Nev
Kategoria Tkod Nev Ar
Leiras
Vasarlas Tkod Sorszam Idopont Darab VID
FizModok
Vasarlo VID Nev Cim
86/55
Fizmod
Fkod Leiras
B IT M A N
Bolt adatbázis (példa)
86/56
ER modell
Táblák létrehozása
Adatok feltöltése
B IT M A N
Órai feladatok 1. Nézzük meg, milyen adatbázisok léteznek:
Show databases; Ha létezik bolt adatbázis, töröljük le: Drop database bolt; Hozzuk létre a bolt adatbázist:
Create database bolt; Lépjünk be az adatbázisba: Use bolt;
86/57
B IT M A N
Órai feladatok 1. Hozzuk létre a táblákat: Create table Kategoria( Kkod char(3) primary key, Nev char(20)); Create table Termek( Tkod char(3) primary key, Nev char(20), Ar numeric(6), Leiras char(20), Kategoria char(3) not null references Kategoria); Create table FizModok ( Fkod tinyint(1) primary key, Leiras varchar(20) not null, Unique (Leiras) ); 86/58
B IT M A N
Órai feladatok 1. Hozza létre a MiniBolt adattábláit: Create table Vasarlo( VID char(3) primary key, Nev char(20), Cim char(20), Fizmod char(4)); Create table Vasarlas( Sorsz numeric(5), Datum date, Tkod char(3) not null references Termek, Darab numeric(4), VID char(3) not null references Vasarlo, unique (Sorsz, Datum) );
86/59
B IT M A N
Órai feladatok 2. Vigyük fel az alábbi rekordokat: insert into Kategoria values('k01', 'Kaja'); insert into Kategoria values('k02', 'Pia'); insert into Kategoria values('k03', 'Ruha'); insert into Kategoria values('k04', 'Egyéb'); insert into fizmodok values (1, 'Bankkártya'); insert into fizmodok values (2, 'Készpénz'); insert into fizmodok values (3, 'Átutalás'); insert into fizmodok values (4, 'Utánvét');
86/60
B IT M A N
Órai feladatok 2. Vigyük fel az alábbi rekordokat: insert into Vasarlo values('v01', 'Kék Alma', 'Mc. Kék u.12', 'kp'); insert into Vasarlo values('v02', 'Zöld Galamb', 'Mc. Hó u.72', 'atut'); insert into Vasarlo values('v03', 'Fekete Farkas', 'Mc. Vas u.25', 'bkar'); insert into Vasarlo values('v04', 'Kovács Éva', 'Eger. Lap u.4', 'bkar'); insert into Vasarlo values('v05', 'Kis Béla', 'Eger. Bé u.9', 'kp'); insert into Vasarlo values('v06', 'Kis Jenő', 'Eger. Cé u.11', 'atut'); insert into Vasarlo values('v07', 'Kis Noé', 'Eger. Cé u.11', 'kp'); insert into Vasarlo values('v08', 'Kis Tas', 'Eger. Cé u.11', 'bkar'); insert into Vasarlo values('v09', 'Hó Manó', 'Nyék. Tó u.74', 'atut'); insert into Vasarlo values('v10', 'Ká Rozi', 'Nyék. Ká u.5', 'kp'); insert into Vasarlo values('v11', 'Víz Jenő', 'Mc. Út u.39', 'bkar');
86/61
B IT M A N
Órai feladatok 2. Vigyük fel az alábbi rekordokat: insert into Termek values('t01', 'sör', 200, 'világos', 'k02'); insert into Termek values('t02', 'bor', 200, 'vörös', 'k02'); insert into Termek values('t03', 'zsömle', 20, 'kerek', 'k01'); insert into Termek values('t04', 'zsír', 100, 'disznó', 'k01'); insert into Termek values('t05', 'paprika', 100, 'zöld', 'k01'); insert into Termek values('t06', 'csipsz', 300, 'sajtos', 'k01'); insert into Termek values('t07', 'csipsz', 400, 'retkes', 'k01'); insert into Termek values('t08', 'mackó felső', 8000, 'Adidasss', 'k03'); insert into Termek values('t09', 'mackó alsó', 8000, 'Adidasss', 'k03'); insert into Termek values('t10', 'mackó póló', 5000, 'Adidasss', 'k03'); insert into Termek values('t11', 'Fű', 5000, 'KO', 'k04'); insert into Termek values('t12', 'AB2 puska', 5000, 'Mert megérdemled', 'k04'); insert into Termek values('t13', 'Benzin', 350, 'Óccsó', 'k04'); insert into Termek values('t14', 'Nő', 10000, 'Szőke', 'k04'); insert into Termek values('t15', 'Nő', 20000, 'Barna', 'k04'); insert into Termek values('t16', 'Óvszer', 2000, 'Családi csomag', 'k04'); 86/62
B IT M A N
Órai feladatok 2. Vigyük fel az alábbi rekordokat: insert into Vasarlas values(1, sysdate, 't14', 1, 'v06'); insert into Vasarlas values(2 , sysdate, 't15', 1, 'v06'); insert into Vasarlas values(3 , sysdate, 't16', 1, 'v06'); insert into Vasarlas values(4 , sysdate, 't03', 4, 'v01'); insert into Vasarlas values(5 , sysdate, 't04', 1, 'v01'); insert into Vasarlas values(6 , sysdate, 't02', 2, 'v02'); insert into Vasarlas values(7 , sysdate, 't06', 2, 'v02'); insert into Vasarlas values(8 , sysdate, 't07', 4, 'v02'); insert into Vasarlas values(9 , sysdate, 't08', 1, 'v03'); insert into Vasarlas values(10 , sysdate, 't09', 1, 'v03'); insert into Vasarlas values(11 , sysdate, 't11', 3, 'v04'); insert into Vasarlas values(12 , sysdate, 't12', 1, 'v04'); insert into Vasarlas values(13 , sysdate, 't13', 100, 'v05'); insert into Vasarlas values(1, sysdate-1, 't12', 1, 'v11'); insert into Vasarlas values(2 , sysdate-1, 't16', 5, 'v10'); insert into Vasarlas values(3 , sysdate-1, 't16', 1, 'v09'); insert into Vasarlas values(4 , sysdate-1, 't03', 6, 'v07'); 86/63
B IT M A N
Órai feladatok 3. 1. Készítsen egy UjKategoria nevű tárolt eljárást, mely
paraméterként megkapja egy új kategória adatait, és beszúrja a Kategoria táblába. Próbálja ki az eljárást. H 30 2. Készítsen egy KategoriaTorol nevű tárolt eljárást, mely kitöröl egy adott kódú kategóriát. Próbálja ki az eljárást. 3. Készítsen KategoriaDarab nevű tárolt függvényt, mely
visszaadja a kategóriák darabszámát. Hívja meg a függvényt.
86/64
H
37
B IT M A N
Órai feladatok 4. Készítsen egy UjTermek2 nevű tárolt eljárást, mely
paraméterként megkapja egy új termék adatait, és H beszúrja a termek táblába. Ha már létező kategóriakódot kap paraméterként, írjon üzenetet a képernyőre (Van már ilyen kategória: kkod), és ne hozza létre a kategóriát.
86/65
41
B IT M A N
Órai feladatok 5. Készítsen egy VasarloTorol nevű eljárást, , mely
paraméterként megkapja egy vásárló VID-jét. Ha nem létezik a személy, akkor írjon üzenetet a képernyőre (Nem létező személy: VID).
86/66
H
41
B IT M A N
Órai feladatok 6. Készítsen egy TermekAtlag nevű függvényt, amely
kiszámítja, és visszatérő értékként visszaadja a termék táblában lévő termékek átlagárát. Hívja meg a függvényt, használjon a visszatérő H értékhez parancssori változót. Írja ki az eredményt a képernyőre.
37
Hívja meg a függvényt a select paranccsal is!
86/67
B IT M A N
Órai feladatok 7. Készítsen egy TermKatAtlag nevű függvényt, amely
kiszámítja, és visszatérő értékként visszaadja a termék táblában lévő, adott kategóriájú termékek átlagárát. A függvény bemenő paramétere legyen a kategória H neve (nem a kódja!) Ha nem létezik a megadott kategória, írja ki ennek tényét a függvény a képernyőre (Nem létező kategória: KatBe), és adjon vissza 0 értéket!
37
Hívja meg a függvényt!
86/68
B IT M A N
Órai feladatok 8. 1. Készítsen egy OsszParos nevű tárolt eljárást, mely
paraméterként megkap egy kezdő és egy végértéket (egész számok), és kiszámítja a két végérték közötti páros számok összegét. H
49
Segítség: - A bemenő paraméterek értékét nem lehet felülírni! - IF MOD(szám, 2) = 0 THEN – ha a szám kettővel osztva nullát ad maradékul akkor
86/69
B IT M A N
Órai feladatok 9. 1. Készítsen egy tárolt függvényt, mellyel egy
paraméterként megadott maximális árú termékek árát egy szintén paraméterként megadott százalékkal megnöveli. A függvény az érintett termékek darabszámát adja vissza eredményül. 2. Gondoskodjon arról (külön eljárások segítségével), hogy egy elhibázott áremelés után, a termékek ára visszaállítható legyen.
86/70
B IT M A N
Felhasznált irodalom Kovács László: PL/SQL, elektronikus jegyzet Barabás Péter: Adatbázis rendszerek 2.,
elektronikus jegyzet Jeffery D. Ullman, Jennifer Widom: Adatbázisrendszerek Kende Mária, Nagy István: ORACLE példatár Don Burleson: Oracle Tips (www.dba-oracle.com)
86/71
B IT M A N
Adatbázis Rendszerek II. Ellenőrző kérdések
B IT M A N
86/72
B IT M A N
Ellenőrző kérdések 1. 1. Hogyan kell bejelentkezni a mysql parancssorban: A: use mysql username -p B: login mysql -u -p C: mysql -u username -p D: mysql login -u username password 2. Hogyan íratjuk ki a használható adatbázisok listáját? A: show databases; B: select databases; C: show user_databases; D: select user_databases; 86/73
B IT M A N
Ellenőrző kérdések 2. 3. Ha a bolt adatbázisban van termék tábla, akkor a select * from bolt.termék; parancs: A: Helyes B: Helytelen 4. Melyik létező mysql adattípus? A: tinyint E: bigint B: smallint F: longint C: mediumint G: integer D: int H: numeric
86/74
B IT M A N
Ellenőrző kérdések 3. 5. Melyik paranccsal lehet létrehozni adatbázis táblát? A: BUILD C: CREATE
B: CONSTRUCT D: MAKE E: PREPARE
6. Melyik paranccsal lehet törölni adatbázis táblát? A: CLOSE D: DROP
B: DELETE E: KILL
C: CLEAR
7. Helyes az alábbi parancs? SELECT az, count(*) FROM vásárló WHERE az='az';
A: Igen 86/75
B: Nem
B IT M A N
Ellenőrző kérdések 4. 8. Melyik paranccsal lehet kiíratni azokat a termékeket, melyeknek üres a leírás mezője? A: select név from termék where leírás =' '; B: select név from termék where leírás = NULL; C: select név from termék where leírás IS NULL; D: select név from termék where leírás EMPTY; E: select név from termék where leírás LIKE ' '; 9. Helyes az alábbi parancs? SELECT terméknév FROM termék WHERE ár > 200 and < 500; A: Igen 86/76
B: Nem
B IT M A N
Ellenőrző kérdések 5. 10. Melyik kulcsszó hiányzik a parancsokból? 1. 2. SELECT név FROM termék WHERE ár > 1000; 3. UPDATE termék SET
ár=ár*1.1;
4. SELECT név, ár FROM termék ORD
név;
SELECT count(*) FROM vásárló
;
SELECT count(*) INSERT
7.
A: TO D: FROM G: INTO 86/77
6.
5.
A FROM vásárló;
termék values (23, ′Retekmag′);
B: SET E: GROUP BY H: ORDER BY
C: WHERE F: SHORT BY I: Nem hiányzik kulcsszó
B IT M A N
Ellenőrző kérdések 6. 11. Alakítson kategóriákat, és sorolja az alábbi parancsokat az egyes kategóriákba! Kategóriák:
A: insert D: create G: drop 86/78
Parancsok:
B: select E: update H: delete
C: grant F: modify I: revoke
B IT M A N
Ellenőrző kérdések 7. 12. Milyen szintű megszorítások az alábbiak: Unique Not null Primary key Foreign key Check (a>30) Check (a>30 and b<10); A: mező C: tábla 86/79
B: rekord D: adatbázis
B IT M A N
Ellenőrző kérdések 8. 13. Írja be a hiányzó kifejezéseket! 1. 2. ALTER TABLE vásárló MODIFY COL 3. TINYINT(1) NOT NULL;
fizmód
4. ALTER TABLE VÁSÁRLÓ ADD CONS FOREIGN KEY 5. (FIZMÓD) REFE FIZETÉS(FKÓD); 6. 7. LOAD LOCAL INFILE ′c:/f.txt′ INTO
86/80
8. TABLE Fizetés;
B IT M A N
Ellenőrző kérdések 9. 14. Az ER->Relációs modell konverziójánál hány darab tábla keletkezik? Kód
Név
Név
Azon Vásárlás
Termék Ár
A: 2 B: 3 C: 4 D: 5
86/81
Leírás Méret
Vásárló
Darab
Dátum
Lakcím
FizMód
Ir.sz.
Város
Cím
B IT M A N
Ellenőrző kérdések 10. 15. Az ER->Relációs modell konverziójánál hány darab mező lesz a Termék táblában? Kód
Név
Név
Azon Vásárlás
Termék Ár
A: 3 B: 4 C: 5 D: 6
86/82
Leírás Méret
Vásárló
Darab
Dátum
Lakcím
FizMód
Ir.sz.
Város
Cím
B IT M A N
Ellenőrző kérdések 11. 16. Az ER->Relációs modell konverziójánál hány darab mező lesz a Vásárlás táblában? Kód
Név
Vásárlás
Termék Ár
A: 2 B: 3 C: 4 D: 5 86/83
Leírás Méret
Név
Azon
Vásárló
Darab
Dátum
Lakcím
FizMód
Ir.sz.
Város
Cím
B IT M A N
Ellenőrző kérdések 12. 17. Az ER->Relációs modell konverziójánál hány darab mező lesz a Vásárló táblában? Kód
Név
Név
Azon Vásárlás
Termék Ár
A: 4 B: 5 C: 6 D: 7 E: 8 86/84
Leírás Méret
Vásárló
Darab
Dátum
Lakcím
FizMód
Ir.sz.
Város
Cím
B IT M A N
Felhasznált irodalom bitman.uw.hu – Eskúel (elektronikus jegyzet) bitman.uw.hu – F1-Pl/Sql feladatok (elektronikus
jegyzet) www.w3school.com – SQL Tutorial www.tizag.com – MySQL Tutorial www.tutorialspoint.com – MySQL Tutorial
86/85
B IT M A N
VÉGE 86/86
B IT M A N