Adatbázis rendszerek 1. 1. Gy: MySQL alapok 103/1 B ITv: MAN 2015.09.27
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 Bolt adatbázis (példa) 103/2
MySQL letöltése (1) XAMPP http://www.apachefriends.org 103/3
MySQL letöltése (2) 103/4
XAMPP telepítése (1) 103/5
XAMPP telepítése (2) 103/6
XAMPP telepítése (3) 103/7
XAMPP telepítése (4) 103/8
XAMPP Control Panel 103/9
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 Bolt adatbázis (példa) 103/10
http://127.0.0.1 103/11
MySQL root jelszó beállítás (1) 103/12
MySQL root jelszó beállítás (2) Újraindítás! 103/13
MySQL indítófájl készítés 103/14
Mysql.bat 103/15
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 Bolt adatbázis (példa) 103/16
MySQL parancssoros felület 103/17
Néhány alapparancs Show databases; Select version(), current_date; 103/18
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 Bolt adatbázis (példa) 103/19
Relációs adatmodell - Alapok Építő elemek: MEZŐ REKORD RELÁCIÓ ADATBÁZIS Kód Név A3 Kovács B 14 S1 Dolgozó Munkakör Munkaidő 103/20 Szupercég
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. 103/21
Adatbázisok Create database próba; Use próba; Drop database próba; 103/22
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 Bolt adatbázis (példa) 103/23
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. 103/24 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.
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. 103/25
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 Termék Vásárló Ár Leírás Méret Dátum Darab Lakcím FizMód 103/26
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ő 103/27 Azonosító Név Évfolyam Osztály 001 Kati 11 A 002 Tibi 12 B
A relációk jellemzői 2. Egy relációra vonatkozó követelmények: 103/28 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.
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 103/29 Kapcsoló kulcs Elsődleges kulcs
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 1 ABC-123 14.02.21 2 14.02.16 103/30 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
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 1 ABC-123 14.02.21 2 EIS-104 14.02.16 103/31 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
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 Sorszám Rszám Dátum Útvonal Autó Rendszám Típus Fogyaszt Az útnyilvántartásnak autóhoz kell tartoznia, de egy autóhoz több útnyilvántartás is tartozhat. Km Sorszám Rszám Dátum 1 ABC-123 14.02.21 2 ABC-123 14.02.16 103/32 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
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. 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 T03 Tea 550 T04 Só 145 TKód T01 T04 VKód V01 V01 V02 Peti Só u 32 V03 Miki Bő u 17 V04 Évi Lé u 46 T02 V03 T04 V01 T03 V04 103/33 T02 V04
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ó. 103/34
Index kulcsok 2. Index tábla Rendszám Kód ABC123 A04 BER666 A01 CDR420 A06 DGZ531 A03 LEM597 A05 RTW285 A02 Autó tábla Kód Rendszám Típus Szín A01 BER666 Fiat zöld A02 RTW285 Opel kék A03 DGZ531 Suzuki kék A04 ABC123 Mercedes fekete A05 LEM597 Opel fehér A06 CDR420 Nissan piros Index kulcs 103/35
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 103/36
Az adatintegritás szintjei Mező szintű megszorítások Rekord szintű megkötések Reláció szintű előírások Adatbázis szintű ellenőrzések Kód Név A3 Kovács B 14 S1 Dolgozó Munkakör Munkaidő Szupercég 103/37
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. 103/38
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. 103/39
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 103/40
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. 103/41
Adattáblák létrehozása (1) Create table táblanév( oszlopnév mezőtípus definíciók, oszlopnév mezőtípus definíciók,... kulcsok, indexek, megszorítások ); Ékezetes mezőnevek? Inkább ne használjuk! Not null, default, primary key, auto_increment, unique, comment 103/42
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 103/43
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 103/44
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ű) 103/45
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! 103/46
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) 103/47
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), ); 103/48
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; 103/49
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 Bolt adatbázis (példa) 103/50
Bolt adatbázis (példa) ER modell Táblák létrehozása Táblák módosítása Adatok feltöltése 103/51
Bolt ER modell Kkód Név Tkód Név Ár Kategória K-T Termék Leírás Sorszám Vásárlás Időpont Darab Név VID Vásárló Cím Fizmód 103/52
ER konverziója relációs modellre ER elemek Egyed Normál Gyenge Tulajdonság Elemi Kulcs Összetett Többértékű Származtatott Kapcsolatok 1:1 1:N N:M kötelező 103/53 Relációs elemek Reláció reláció kulcs mezővel reláció kulcs mező nélkül Mező mező kulcs mező több mezőre bontjuk szét külön relációba kerül csak a képletet tároljuk Kapcsolatok egyedi kapcsoló kulcs kapcsoló kulcs kapcsoló tábla nem üres kapcsoló kulcs
Bolt: ER modell > Relációs konverzió (1) Kkód Név Kategória K-T Kkód Elsődleges kulcs, fix hossz! Név Kötelező, egyedi, változó hossz Kategória-Termék kapcsolat Termék táblában idegen (kapcsoló) kulcs mező, mely a Kategória(Kkód) mezőre mutat Tkód Név 103/54 Termék Ár Leírás Tkód Elsődleges kulcs, fix hossz Név Nem lehet null értékű Ár Egész, nem lehet negatív Leírás Változó hossz +Kategória Idegen kulcs
Bolt: ER modell > Relációs konverzió (2) Kkód Név Tkód Név Ár Kategória K-T Termék Leírás Kategória Kkód Név Termék Kategória Tkód Név Ár Leírás 103/55
Bolt: ER modell > Relációs konverzió (3) Sorszám Vásárlás Időpont Darab Sorszám Pozitív egész, növekedjen automatikusan Időpont Alapérték az aktuális időpont +Tkód, VID Kapcsoló mezők Név VID 103/56 Vásárló Cím Fizmód VID Elsődleges kulcs Név Kötelező, változó h, nem egyedi Cím Változó hossz Fizmód Csak bizonyos értékeket vehet fel, fix hossz
Bolt Struktúra Kategória Kkód Név Termék Kategória Tkód Név Ár Leírás Termék Vásárlás Tkód Sorszám Időpont Darab VID Sorszám Vásárlás Időpont Darab Vásárló Név VID Név Cím Fizmód VID 103/57 Vásárló Cím Fizmód
Bolt Táblák létrehozási sorrendje Kkód Név Kategória K-T Tkód Név Termék Ár Leírás 2 1 Sorszám Vásárlás Időpont 4 Darab Név VID Vásárló Cím Fizmód 3 103/58
Bolt adatbázis (példa) ER modell Táblák létrehozása Táblák módosítása Adatok feltöltése 103/59
Táblajáték Kategória Create database bolt; Use bolt; Create table Kategória( Kkód char(3) primary key, Név varchar(20) not null, Unique (Név)); 103/60
Táblajáték Kategória Ellenőrzés Describe Kategória; Show create table Kategória; 103/61
Táblajáték Termék Create table Termék( Tkód char(3) primary key, Név varchar(20) not null, Ár int unsigned, Leirás varchar(20), Kategória char(3) not null, Foreign key (Kategória) references Kategória(Kkód)); 103/62
Táblajáték Termék Ellenőrzés (1) Describe termék; 103/63
Táblajáték Termék Ellenőrzés (2) Show create table termék; 103/64
Táblajáték Vásárló Create table Vásárló( VID char(3) primary key, Név varchar(30) not null, Cím varchar(30), Fizmód char(4)); 103/65
Táblajáték Vásárló Ellenőrzés Describe Vásárló; 103/66
Táblajáték Vásárlás Create table Vásárlás( Sorszám int unsigned Auto_Increment, Időpont timestamp Default Current_Timestamp, Tkód char(3) not null, Darab smallint, VID char(3) not null, Primary key (Sorszám), Foreign key (Tkód) references Termék(Tkód), Foreign key (VID) references Vásárló(VID)); 103/67
Táblajáték Vásárlás 103/68
Táblajáték Vásárlás Ellenőrzés 103/69
Táblajáték Vásárlás Ellenőrzés 103/70
Bolt adatbázis (példa) ER modell Táblák létrehozása Táblák módosítása Adatok feltöltése 103/71
Bolt ER modell (bővítés) Kkód Név Tkód Név Ár Kategória K-T Termék Leírás Sorszám Vásárlás Időpont Név Darab Fkód Leírás Vásárló V-F Fizetés VID Cím Fizmód 103/72
Bolt: ER modell > Relációs konverzió (3) Fkód Leírás Fizetés V-F Fkód Elsődleges kulcs, fix hossz! Leírás Kötelező, egyedi, változó hossz Vásárló-Fizetés kapcsolat Vásárló táblában idegen (kapcsoló) kulcs mező, mely a Fizetés(Fkód) mezőre mutat Fkód Legyen Tinyint (1-Bankkártya, 2-Készpénz, 3-Átutalás, 4-Utánvét) Emiatt módosítani kell a mezőtípust és a megszorítást a Vásárló táblában! 103/73
Bolt adatbázis Kkód Név Tkód Név Ár Kategória K-T Termék Leírás Sorszám Vásárlás Időpont Név Darab Fkód Leírás Vásárló V-F Fizetés VID Cím 103/74
Bolt Struktúra Kategória Kkód Név Termék Kategória Tkód Név Ár Leírás Vásárlás Tkód Sorszám Időpont Darab VID Vásárló Fizetés VID Név Cím Fizmód Fkód Leírás 103/75
Táblajáték Fizetés Create table Fizetés( Fkód tinyint(1) primary key, Leírás varchar(20) not null, Unique (Leírás)); 103/76
Táblajáték Vásárló módosítás alter table vásárló modify column Fizmód tinyint(1) not null; alter table vásárló add constraint Foreign key (Fizmód) references Fizetés(Fkód); 103/77
Bolt adatbázis (példa) ER modell Táblák létrehozása Táblák módosítása Adatok feltöltése 103/78
Adatbevitel Kategória insert into Kategória values('k01', 'Kaja'); insert into Kategória values('k02', 'Pia'); insert into Kategória values('k03', 'Ruha'); insert into Kategória values('k04', 'Egyéb'); 103/79
Adatbevitel Fizetés Adatbevitel fájlból: LOAD DATA LOCAL INFILE c:/fizmodok.txt INTO TABLE Fizetés; 103/80
Adatbevitel Termék (1) insert into Termék values('t01', 'sör', 200, 'világos', 'k02'); insert into Termék values('t02', 'bor', 200, 'vörös', 'k02'); insert into Termék values('t03', 'zsömle', 20, 'kerek', 'k01'); insert into Termék values('t04', 'zsír', 100, 'disznó', 'k01'); insert into Termék values('t05', 'paprika', 100, 'zöld', 'k01'); insert into Termék values('t06', 'csipsz', 300, 'sajtos', 'k01'); insert into Termék values('t07', 'csipsz', 400, 'retkes', 'k01'); insert into Termék values('t08', 'mackó felső', 8000, 'Adidasss', 'k03'); insert into Termék values('t09', 'mackó alsó', 8000, 'Adidasss', 'k03'); insert into Termék values('t10', 'mackó póló', 5000, 'Adidasss', 'k03'); 103/81
Adatbevitel Termék (2) insert into Termék values('t11', 'Fű', 5000, 'KO', 'k04'); insert into Termék values('t12', 'AB2 puska', 5000, 'Mert megérdemled', 'k04'); insert into Termék values('t13', 'Benzin', 250, 'Óccsó', 'k04'); insert into Termék values('t14', 'Nő', 10000, 'Szőke', 'k04'); insert into Termék values('t15', 'Nő', 20000, 'Barna', 'k04'); insert into Termék values('t16', 'Óvszer', 2000, 'Családi csomag', 'k04'); 103/82
Termék tábla lista 103/83
Adatbevitel Vásárló insert into Vásárló values('v01', 'Kék Alma', 'Mc. Kék u.12', 2); insert into Vásárló values('v02', 'Zöld Gabi', 'Mc. Hó u.72', 3); insert into Vásárló values('v03', 'Feke Farkas', 'Mc. Kő u.25', 1); insert into Vásárló values('v04', 'Korcs Éva', 'Eger. Lap u.4',1); insert into Vásárló values('v05', 'Kis Béla', 'Eger. Bé u.9', 2); insert into Vásárló values('v06', 'Kis Jenő', 'Eger. Cé u.11', 3); insert into Vásárló values('v07', 'Kis Noé', 'Eger. Cé u.11', 4); insert into Vásárló values('v08', 'Kis Tas', 'Eger. Cé u.11', 1); insert into Vásárló values('v09', 'Hó Manó', 'Nyék. Tó u.74', 2); insert into Vásárló values('v10', 'Ká Rozi', 'Nyék. Ká u.5', 3); insert into Vásárló values('v11', 'Víz Jenő', 'Mc. Út u.39', 3); 103/84
Vásárló tábla lista 103/85
Adatbevitel Vásárlás insert into Vásárlás (Tkód, Darab, VID) values('t14', 1, 'v06'); insert into Vásárlás (Tkód, Darab, VID) values('t15', 1, 'v06'); insert into Vásárlás (Tkód, Darab, VID) values('t16', 1, 'v06'); insert into Vásárlás (Tkód, Darab, VID) values('t03', 4, 'v01'); insert into Vásárlás (Tkód, Darab, VID) values('t04', 1, 'v01'); insert into Vásárlás (Tkód, Darab, VID) values('t02', 2, 'v02'); insert into Vásárlás (Tkód, Darab, VID) values('t06', 2, 'v02'); insert into Vásárlás (Tkód, Darab, VID) values('t07', 4, 'v02'); insert into Vásárlás (Tkód, Darab, VID) values('t08', 1, 'v03'); insert into Vásárlás (Tkód, Darab, VID) values('t09', 1, 'v03'); insert into Vásárlás (Tkód, Darab, VID) values('t11', 3, 'v04'); insert into Vásárlás (Tkód, Darab, VID) values('t12', 1, 'v04'); insert into Vásárlás (Tkód, Darab, VID) values('t13', 100, 'v05'); 103/86
Vásárlás tábla lista 103/87
Lista: Ki mikor mit vett? Select V.név, Időpont, T.név from Vásárló AS V inner join Vásárlás AS VS ON V.VID=VS.VID inner join Termék AS T ON VS.Tkód=T.Tkód; 103/88
Bolt adatbázis (példa) ER modell Táblák létrehozása Táblák módosítása Adatok feltöltése Táblák újabb módosítása 103/89
Ötlet Bolt adatbázis továbbfejlesztés Kkód Név Tkód Név Ár RHkód Kategória K-T Termék Leírás T-R Raktár Sorszám Vásárlás Időpont RDB BDB Név Darab Fkód Leírás Vásárló V-F Fizetés VID Cím 103/90
Ötlet Bolt adatbázis továbbfejlesztés RHkód Raktár RDB BDB RHkód Elsődleges kulcs, fix hossz! RDB Raktári darabszám BDB Bolti darabszám A két darabszám összege a teljes készlet! T-R Termék-Raktár kapcsolat Valamelyik táblában kell egy idegen (kapcsoló) kulcs mező, mely a másik tábla elsődleges kulcs mezőjére mutat Kérdés: Inkább bővítsük a Termék táblát a szükséges mezőkkel? 103/91
Adatbázis rendszerek 1. Ellenőrző kérdések 103/92
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; 103/93
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 103/94
Ellenőrző kérdések 3. 5. Melyik paranccsal lehet létrehozni adatbázis táblát? A: BUILD B: CONSTRUCT C: CREATE D: MAKE E: PREPARE 6. Melyik paranccsal lehet törölni adatbázis táblát? A: CLOSE B: DELETE C: CLEAR D: DROP E: KILL 7. Helyes az alábbi parancs? SELECT az, count(*) FROM vásárló WHERE az='az'; A: Igen B: Nem 103/95
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 B: Nem 103/96 B ITI T MAN
Ellenőrző kérdések 5. 10. Melyik kulcsszó hiányzik a parancsokból? SELECT név FROM 1. termék WHERE 2. ár > 1000; UPDATE termék SET 3. 103/97 ár=ár*1.1; 4. SELECT név, ár FROM termék ORD SELECT count(*) FROM vásárló 5. ; SELECT count(*) INSERT 7. 6. név; A FROM vásárló; termék values (23, Retekmag ); A: TO B: SET C: WHERE D: FROM E: GROUP BY F: SHORT BY G: INTO H: ORDER BY I: Nem hiányzik kulcsszó B ITI T MAN
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: Parancsok: A: insert B: select C: grant D: create E: update F: modify G: drop H: delete I: revoke 103/98 B ITI T MAN
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ő B: rekord C: tábla D: adatbázis 103/99
Ellenőrző kérdések 8. 13. Írja be a hiányzó kifejezéseket! ALTER 1. TABLE vásárló MODIFY COL 2. TINYINT(1) NOT 3. NULL; fizmód ALTER TABLE VÁSÁRLÓ ADD CONS 4. FOREIGN KEY (FIZMÓD) REFE 5. FIZETÉS(FKÓD); LOAD LOCAL INFILE c:/f.txt INTO 6. 7. 8. TABLE Fizetés; 103/100
103/101
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 103/102
VÉGE VÉGE 103/103