Anda di halaman 1dari 47

Adatbzisok hasznlata 1.

Az adatbzis megtervezse
Az adatbzis smja: jratok<FORGALMI_SZM, VISZONYLAT, KEZDSI_ID, BEFEJEZSI_ID, PLYASZM, TPUS, LHELYEK_SZMA, LLHELYEK_SZMA, VEZET_NEVE, ANYJA_NEVE, BEOSZTS, MENETID, TV, PIHENID, DTUM, FORDULSZM, INDULSI_ID, RKEZSI_ID, UTASSZM> ahol felttelezzk hogy: a) a jrmvezett VEZET_NEVE s ANYJA_NEVE egytt egyrtelmen azonostja. b) az egyes meneteket a VEZET_NEVE, ANYJA_NEVE, FORGALMI_SZM, DTUM s FORDULSZM attribtumok egyrtelmen azonostjk. c) az adott villamosvonalak(viszonylatok) mindkt irnyban, minden idben ugyanolyan tulajdonsgokkal s forgalmi paramterekkel rendelkeznek. d) egy forgalmi szmot naponta csak egyszer adnak ki, s csak egy villamosvezetnek. Az adatbzis talaktsa BCNF alakra: 1. lps: A troland attribtumok kijellse az smodell relcismja jratok<FORGALMI_SZM, VISZONYLAT, KEZDSI_ID, BEFEJEZSI_ID, PLYASZM, TPUS, LHELYEK_SZMA, LLHELYEK_SZMA, VEZET_NEVE, ANYJA_NEVE, BEOSZTS, MENETID, TV, PIHENID, DTUM, FORDULSZM, INDULSI_ID, BERKEZSI_ID, UTASSZM> 2. lps: A fggsgek felismerse Az attribtumok szvegesen megadott kapcsolatai alapjn felismerhet sszefggsek: A jrmvezett VEZET_NEVE s ANYJA_NEVE egytt egyrtelmen azonostja: vezet = {VEZET_NEVE, ANYJA_NEVE}{BEOSZTS} Az egyes meneteket a VEZET_NEVE, ANYJA_NEVE, FORGALMI_SZM, DTUM s FORDULSZM attribtumok egyrtelmen azonostjk: menetek = {VEZET_NEVE, ANYJA_NEVE, FORGALMI_SZM, DTUM, FORDULSZM} {PLYASZM, INDULSI_ID, RKEZSI_ID, UTASSZM} Az adott villamosvonalak(viszonylatok) mindkt irnyban, minden idben ugyanolyan tulajdonsgokkal s forgalmi paramterekkel rendelkeznek: viszonylatok = {VISZONYLAT}{MENETID, TV, PIHENID} Egy forgalmi szmot naponta csak egyszer adnak ki, s csak egy villamosvezetnek: jrat = {FORGALMI_SZM}{VISZONYLAT, KEZDSI_ID, BEFEJEZSI_ID} Tovbbi sszefggsek: villamos = {PLYASZM}{TPUS, LHELYEK_SZMA, LLHELYEK_SZMA} tpus = {TPUS}{LHELYEK_SZMA, LLHELYEK_SZMA}

-1-

Adatbzisok hasznlata 1. 3. lps: A fggsgek normailzlsa Az vezet fggsg vizsglata: 1NF: az vezet 1NF-ben van, mivel nincs benne sszetett attribtum. 2NF: az vezet 2NF-ben van, mivel mindegyik msodlagos attribtum az sszes elsdleges attribtumtl fgg. 3NF: az vezet 3NF-ben van, mivel csak egy msodlagos attribtuma van. BCNF: mivel az vezet mr 3NF alakban van, s az elsdleges attribtumok egyetlen valdi rszhalmaza sem fgg egyetlen elsdleges vagy msodlagos attribtumtl sem, ezrt a fggsg BCNF alakban van. Az menetek fggsg vizsglata: 1NF: az menetek 1NF-ben van, mivel nincs benne sszetett attribtum. 2NF: az menetek 2NF-ben van, mivel mindegyik msodlagos attribtum az sszes elsdleges attribtumtl fgg. 3NF: az menetek 3NF-ben van, mivel a msodlagos attribtumok kztt sem megadott, sem felttelezet fggsg nincs. BCNF: mivel az menetek mr 3NF alakban van, s az elsdleges attribtumok egyetlen valdi rszhalmaza sem fgg egyetlen elsdleges vagy msodlagos attribtumtl sem, ezrt a fggsg BCNF alakban van. Az viszonylatok fggsg vizsglata: 1NF: az viszonylatok 1NF-ben van, mivel nincs benne sszetett attribtum. 2NF: az viszonylatok 2NF-ben van, mivel mindegyik msodlagos attribtum az sszes elsdleges attribtumtl fgg. 3NF: az viszonylatok 3NF-ben van, mivel a msodlagos attribtumok kztt sem megadott, sem felttelezet fggsg nincs. BCNF: mivel az viszonylatok mr 3NF alakban van, s az elsdleges attribtumok egyetlen valdi rszhalmaza sem fgg egyetlen elsdleges vagy msodlagos attribtumtl sem, ezrt a fggsg BCNF alakban van. Az jrat fggsg vizsglata: 1NF: az jrat 1NF-ben van, mivel nincs benne sszetett attribtum. 2NF: az jrat 2NF-ben van, mivel mindegyik msodlagos attribtum az sszes elsdleges attribtumtl fgg. 3NF: az jrat 3NF-ben van, mivel a msodlagos attribtumok kztt sem megadott, sem felttelezet fggsg nincs. BCNF: mivel az jrat mr 3NF alakban van, s az elsdleges attribtumok egyetlen valdi rszhalmaza sem fgg egyetlen elsdleges vagy msodlagos attribtumtl sem, ezrt a fggsg BCNF alakban van. Az villamos fggsg vizsglata: 1NF: az villamos 1NF-ben van, mivel nincs benne sszetett attribtum. 2NF: az villamos 2NF-ben van, mivel mindegyik msodlagos attribtum az sszes elsdleges attribtumtl fgg. 3NF: az villamos nincs 3NF-ben, mivel a msodlagos attribtumok kztt az. tpus fggsg, mint bels fggs tallhat. Ezt kiemelve kapjuk az villamos1 = {PLYASZM}{TPUS} fggsget, mely mr 3NF-ben van. BCNF: mivel az villamos1 mr 3NF alakban van, s az elsdleges attribtumok egyetlen valdi rszhalmaza sem fgg egyetlen elsdleges vagy msodlagos attribtumtl sem, ezrt a fggsg BCNF alakban van.

-2-

Adatbzisok hasznlata 1.

Az tipus fggsg vizsglata: 1NF: az tipus 1NF-ben van, mivel nincs benne sszetett attribtum. 2NF: az tipus 2NF-ben van, mivel mindegyik msodlagos attribtum az sszes elsdleges attribtumtl fgg. 3NF: az tipus 3NF-ben van, mivel a msodlagos attribtumok kztt sem megadott, sem felttelezet fggsg nincs. BCNF: mivel az tipus mr 3NF alakban van, s az elsdleges attribtumok egyetlen valdi rszhalmaza sem fgg egyetlen elsdleges vagy msodlagos attribtumtl sem, ezrt a fggsg BCNF alakban van. 4. lps: Az eredmny fggsgek sszefoglalsa vezet = {VEZET_NEVE, ANYJA_NEVE}{BEOSZTS} menetek = {VEZET_NEVE, ANYJA_NEVE, FORGALMI_SZM, DTUM, FORDULSZM} {PLYASZM, INDULSI_ID, RKEZSI_ID, UTASSZM} viszonylatok = {VISZONYLAT}{MENETID, TV, PIHENID} jrat = {FORGALMI_SZM}{VISZONYLAT, KEZDSI_ID, BEFEJEZSI_ID} villamos1 = {PLYASZM}{TPUS} tpus = {TPUS}{LHELYEK_SZMA, LLHELYEK_SZMA} 5. lps: Az eredmny adatmodell felrsa Az eredmny fggsgek alapjn az adatmodell, valamint az elsdleges s az idegen kulcsok az albbi mdon rhatk fel: vezetk<VEZET_NEVE, ANYJA_NEVE, BEOSZTS> menetek<VEZET_NEVE, ANYJA_NEVE, FORGALMI_SZM, DTUM, FORDULSZM, PLYASZM, INDULSI_ID, RKEZSI_ID, UTASSZM> viszonylatok<VISZONYLAT, MENETID, TV, PIHENID> jratok<FORGALMI_SZM, VISZONYLAT, KEZDSI_ID, BEFEJEZSI_ID> villamosok<PLYASZM, TPUS> tpusok<TPUS, LHELYEK_SZMA, LLHELYEK_SZMA> Az elsdleges kulcsok alhzssal, az idegen kulcsok dlt betvel vannak megjellve.

-3-

Adatbzisok hasznlata 1.

Az adattblk ltrehozsa
CREATE TABLE VEZETOK (VEZETO_NEVE VARCHAR2(20), ANYJA_NEVE VARCHAR2(20), BEOSZTAS VARCHAR2(15)); CREATE TABLE MENETEK (VEZETO_NEVE VARCHAR2(20), ANYJA_NEVE VARCHAR2(20), FORGALMI_SZAM NUMBER(5), DATUM DATE, FORDULOSZAM NUMBER(2), PALYASZAM NUMBER(4), INDULASI_IDO NUMBER(4), ERKEZESI_IDO NUMBER(4), UTASSZAM NUMBER(3)); CREATE TABLE VISZONYLATOK (VISZONYLAT NUMBER(2), MENETIDO NUMBER(4), TAV NUMBER(6), PIHENOIDO NUMBER(4)); CREATE TABLE JARATOK (FORGALMI_SZAM NUMBER(5), VISZONYLAT NUMBER(2), KEZDESI_IDO NUMBER(4), BEFEJEZESI_IDO NUMBER(4)); CREATE TABLE VILLAMOSOK (PALYASZAM NUMBER(4), TIPUS VARCHAR2(20)); CREATE TABLE TIPUSOK (TIPUS VARCHAR2(20), ULOHELYEK_SZAMA NUMBER(4), ALLOHELYEK_SZAMA NUMBER(4));

-4-

Adatbzisok hasznlata 1.

A megszortsok hozzadsa
--elsdleges kulcs ALTER TABLE vezetok ADD CONSTRAINT vezetok_pri PRIMARY KEY (vezeto_neve, anyja_neve); ALTER TABLE menetek ADD CONSTRAINT menetek_pri PRIMARY KEY (vezeto_neve, anyja_neve, forgalmi_szam, datum, forduloszam); ALTER TABLE viszonylatok ADD CONSTRAINT viszonylatok_pri PRIMARY KEY(viszonylat); ALTER TABLE jaratok ADD CONSTRAINT jaratok_pri PRIMARY KEY(forgalmi_szam); ALTER TABLE villamosok ADD CONSTRAINT villamosok_pri PRIMARY KEY(palyaszam); ALTER TABLE tipusok ADD CONSTRAINT tipusok_pri PRIMARY KEY(tipus); --idegen kulcs ALTER TABLE menetek ADD CONSTRAINT menetek_for FOREIGN KEY (palyaszam) REFERENCES villamosok(palyaszam); ALTER TABLE jaratok ADD CONSTRAINT jaratok_for FOREIGN KEY (viszonylat) REFERENCES viszonylatok(viszonylat); ALTER TABLE villamosok ADD CONSTRAINT villamosok_for FOREIGN KEY (tipus) REFERENCES tipusok(tipus) ON DELETE CASCADE; --check ALTER TABLE menetek ADD CONSTRAINT menetek_che CHECK(erkezesi_ido > indulasi_ido); --NOT NULL ALTER TABLE villamosok MODIFY tipus CONSTRAINT villamosok_nnul NOT NULL;

-5-

Adatbzisok hasznlata 1.

Az adattblk feltltse
--vezetok INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO vezetok vezetok vezetok vezetok vezetok vezetok VALUES('Kiss Pista', 'Veres Mria', 'flls'); VALUES('Kecsks Judit', 'Kovcs Ilona', 'flls'); VALUES('Nagy Ferenc', 'Ills Zsuzsanna', 'flls'); VALUES('Hords Lszl', 'Zld Mariann', 'besegt'); VALUES('Berkes Orsolya', 'Vass Katalin', 'flls'); VALUES('Erds Eszter', 'Kun Dorottya', 'besegt');

--viszonylatok INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO viszonylatok viszonylatok viszonylatok viszonylatok viszonylatok viszonylatok tipusok tipusok tipusok tipusok tipusok VALUES(1,40,15000,5); VALUES(2,20,6000,5); VALUES(3,53,20000,7); VALUES(4,30,12500,2); VALUES(6,30,12000,5); VALUES(17,12,5000,10);

--tpusok INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO

VALUES('CSMG2',40,126); VALUES('KCSV7',36,126); VALUES('T5C5',75,210); VALUES('TW6000',46,130); VALUES('COMBINO',64,289);

--villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok INSERT INTO villamosok

VALUES(1301,'CSMG2'); VALUES(1302,'CSMG2'); VALUES(1304,'CSMG2'); VALUES(1305,'CSMG2'); VALUES(1306,'CSMG2'); VALUES(1307,'CSMG2'); VALUES(1308,'CSMG2'); VALUES(1309,'CSMG2'); VALUES(1310,'CSMG2'); VALUES(1311,'CSMG2'); VALUES(1312,'CSMG2'); VALUES(1313,'CSMG2'); VALUES(1325,'KCSV7'); VALUES(1326,'KCSV7'); VALUES(1347,'KCSV7'); VALUES(1356,'KCSV7'); VALUES(4202,'T5C5'); VALUES(4203,'T5C5'); VALUES(4204,'T5C5'); VALUES(4205,'T5C5'); VALUES(4206,'T5C5'); VALUES(4207,'T5C5'); VALUES(4208,'T5C5'); VALUES(4209,'T5C5'); VALUES(4210,'T5C5'); VALUES(4211,'T5C5'); VALUES(4212,'T5C5'); VALUES(4213,'T5C5'); VALUES(4214,'T5C5');

-6-

Adatbzisok hasznlata 1.
INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO villamosok villamosok villamosok villamosok villamosok villamosok villamosok villamosok villamosok villamosok villamosok villamosok villamosok villamosok villamosok villamosok villamosok villamosok VALUES(4215,'T5C5'); VALUES(1501,'TW6000'); VALUES(1502,'TW6000'); VALUES(1503,'TW6000'); VALUES(1504,'TW6000'); VALUES(1505,'TW6000'); VALUES(1506,'TW6000'); VALUES(1507,'TW6000'); VALUES(2001,'COMBINO'); VALUES(2002,'COMBINO'); VALUES(2003,'COMBINO'); VALUES(2004,'COMBINO'); VALUES(2005,'COMBINO'); VALUES(2006,'COMBINO'); VALUES(2007,'COMBINO'); VALUES(2008,'COMBINO'); VALUES(2009,'COMBINO'); VALUES(2010,'COMBINO');

--jratok INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok jaratok VALUES(0101,1,240,480); VALUES(0102,1,240,480); VALUES(0103,1,240,720); VALUES(0104,1,300,540); VALUES(0105,1,240,720); VALUES(0106,1,840,1320); VALUES(0107,1,1140,1380); VALUES(0201,2,240,480); VALUES(0202,2,240,720); VALUES(0203,2,300,540); VALUES(0204,2,240,720); VALUES(0205,2,840,1320); VALUES(0206,2,1140,1380); VALUES(0301,3,240,480); VALUES(0302,3,300,480); VALUES(0303,3,240,720); VALUES(0304,3,300,540); VALUES(0305,3,480,720); VALUES(0306,3,840,1080); VALUES(0307,3,1140,1380); VALUES(0401,4,240,480); VALUES(0402,4,300,480); VALUES(0403,4,240,720); VALUES(0404,4,240,720); VALUES(0405,4,300,540); VALUES(0406,4,480,720); VALUES(0407,4,840,1320); VALUES(0408,4,1140,1380); VALUES(0601,6,240,480); VALUES(0602,6,300,480); VALUES(0603,6,240,720); VALUES(0604,6,240,720); VALUES(0605,6,300,540);

-7-

Adatbzisok hasznlata 1.
INSERT INTO jaratok VALUES(0606,6,480,720); INSERT INTO jaratok VALUES(0607,6,840,1320); INSERT INTO jaratok VALUES(0608,6,1140,1380); INSERT INSERT INSERT INSERT INTO INTO INTO INTO jaratok jaratok jaratok jaratok VALUES(1701,17,240,480); VALUES(1703,17,240,720); VALUES(1704,17,300,900); VALUES(1706,17,840,1320); Pista', 'Veres Mria', 1701, '2008-02-01', 1, Pista', 'Veres Mria', 1701, '2008-02-01', 2, Pista', 'Veres Mria', 1701, '2008-02-01', 3, Pista', 'Veres Mria', 1701, '2008-02-01', 4, Pista', 'Veres Mria', 1701, '2008-02-01', 5, Pista', 'Veres Mria', 1701, '2008-02-01', 6, Pista', 'Veres Mria', 1701, '2008-02-01', 7, Pista', 'Veres Mria', 0205, '2008-02-02', 1, Pista', 'Veres Mria', 0205, '2008-02-02', 2, Pista', 'Veres Mria', 0205, '2008-02-02', 3, Pista', 'Veres Mria', 0205, '2008-02-02', 4, Pista', 'Veres Mria', 0205, '2008-02-02', 5, Judit', 'Kovcs Ilona', 0301, '2008-03-03', Judit', 'Kovcs Ilona', 0301, '2008-03-03', Judit', 'Kovcs Ilona', 0301, '2008-03-03', Judit', 'Kovcs Ilona', 0301, '2008-03-03', Judit', 'Kovcs Ilona', 0306, '2008-03-03', Judit', 'Kovcs Ilona', 0306, '2008-03-03', Judit', 'Kovcs Ilona', 0306, '2008-03-03', Judit', 'Kovcs Ilona', 0306, '2008-03-03', Judit', 'Kovcs Ilona', 0106, '2008-03-17', Judit', 'Kovcs Ilona', 0106, '2008-03-17', Judit', 'Kovcs Ilona', 0106, '2008-03-17',

--menetek INSERT INTO menetek VALUES('Kiss 1301, 250, 270, 20); INSERT INTO menetek VALUES('Kiss 1301, 280, 305, 46); INSERT INTO menetek VALUES('Kiss 1301, 310, 330, 73); INSERT INTO menetek VALUES('Kiss 1301, 340, 355, 112); INSERT INTO menetek VALUES('Kiss 1313, 360, 375, 126); INSERT INTO menetek VALUES('Kiss 1313, 380, 400, 84); INSERT INTO menetek VALUES('Kiss 1313, 401, 415, 84); INSERT INTO menetek VALUES('Kiss 1347, 850, 870, 102); INSERT INTO menetek VALUES('Kiss 1347, 875, 895, 75); INSERT INTO menetek VALUES('Kiss 1347, 900, 920, 140); INSERT INTO menetek VALUES('Kiss 1347, 925, 945, 114); INSERT INTO menetek VALUES('Kiss 1347, 950, 970, 99);

INSERT INTO menetek VALUES('Kecsks 1, 1501, 240, 293, 150); INSERT INTO menetek VALUES('Kecsks 2, 1501, 300, 353, 132); INSERT INTO menetek VALUES('Kecsks 3, 1501, 360, 413, 150); INSERT INTO menetek VALUES('Kecsks 4, 1501, 420, 473, 95); INSERT INTO menetek VALUES('Kecsks 1, 1501, 840, 893, 150); INSERT INTO menetek VALUES('Kecsks 2, 1501, 900, 953, 114); INSERT INTO menetek VALUES('Kecsks 3, 1501, 960, 1015, 126); INSERT INTO menetek VALUES('Kecsks 4, 1501, 1020, 1073, 95); INSERT INTO menetek VALUES('Kecsks 1, 4202, 840, 880, 201); INSERT INTO menetek VALUES('Kecsks 2, 4202, 885, 1027, 201); INSERT INTO menetek VALUES('Kecsks 3, 4202, 1032, 1071, 201);

-8-

Adatbzisok hasznlata 1.
INSERT INTO menetek VALUES('Kecsks 4, 4202, 1075, 1115, 214); INSERT INTO menetek VALUES('Kecsks 5, 4202, 1122, 1164, 201); INSERT INTO menetek VALUES('Kecsks 6, 4202, 1166, 1205, 167); INSERT INTO menetek VALUES('Kecsks 7, 4202, 1210, 1250, 95); INSERT INTO menetek VALUES('Kecsks 8, 4202, 1256, 1297, 78); INSERT INTO menetek VALUES('Nagy 1, 2001, 240, 270, 123); INSERT INTO menetek VALUES('Nagy 2, 2001, 280, 310, 120); INSERT INTO menetek VALUES('Nagy 3, 2001, 320, 353, 236); INSERT INTO menetek VALUES('Nagy 4, 2001, 360, 410, 228); INSERT INTO menetek VALUES('Nagy 5, 2001, 420, 450, 235); INSERT INTO menetek VALUES('Nagy 1, 2003, 840, 872, 123); INSERT INTO menetek VALUES('Nagy 2, 2003, 880, 912, 183); INSERT INTO menetek VALUES('Nagy 3, 2003, 924, 955, 253); INSERT INTO menetek VALUES('Nagy 4, 2003, 960, 990, 223); INSERT INTO menetek VALUES('Nagy 5, 2003, 1000, 1034, 123); INSERT INTO menetek VALUES('Nagy 6, 2003, 1040, 1072, 222); INSERT INTO menetek VALUES('Nagy 7, 2003, 1083, 1114, 283); INSERT INTO menetek VALUES('Nagy 8, 2003, 1121, 1151, 170); INSERT INTO menetek VALUES('Nagy 9, 2003, 1160, 1191, 123); INSERT INTO menetek VALUES('Nagy 10, 2003, 1200, 1231, 123); INSERT INTO menetek VALUES('Nagy 11, 2003, 1241, 1270, 170); INSERT INTO menetek VALUES('Nagy 12, 2003, 1280, 1311, 123); Judit', 'Kovcs Ilona', 0106, '2008-03-17', Judit', 'Kovcs Ilona', 0106, '2008-03-17', Judit', 'Kovcs Ilona', 0106, '2008-03-17', Judit', 'Kovcs Ilona', 0106, '2008-03-17', Judit', 'Kovcs Ilona', 0106, '2008-03-17',

Ferenc', 'Ills Zsuzsanna', 0401, '2008-03-02', Ferenc', 'Ills Zsuzsanna', 0401, '2008-03-02', Ferenc', 'Ills Zsuzsanna', 0401, '2008-03-02', Ferenc', 'Ills Zsuzsanna', 0401, '2008-03-02', Ferenc', 'Ills Zsuzsanna', 0401, '2008-03-02', Ferenc', 'Ills Zsuzsanna', 0407, '2008-03-03', Ferenc', 'Ills Zsuzsanna', 0407, '2008-03-03', Ferenc', 'Ills Zsuzsanna', 0407, '2008-03-03', Ferenc', 'Ills Zsuzsanna', 0407, '2008-03-03', Ferenc', 'Ills Zsuzsanna', 0407, '2008-03-03', Ferenc', 'Ills Zsuzsanna', 0407, '2008-03-03', Ferenc', 'Ills Zsuzsanna', 0407, '2008-03-03', Ferenc', 'Ills Zsuzsanna', 0407, '2008-03-03', Ferenc', 'Ills Zsuzsanna', 0407, '2008-03-03', Ferenc', 'Ills Zsuzsanna', 0407, '2008-03-03', Ferenc', 'Ills Zsuzsanna', 0407, '2008-03-03', Ferenc', 'Ills Zsuzsanna', 0407, '2008-03-03', Orsolya', 'Vass Katalin', 0607, '2008-03-05', Orsolya', 'Vass Katalin', 0607, '2008-03-05', Orsolya', 'Vass Katalin', 0607, '2008-03-05', Orsolya', 'Vass Katalin', 0607, '2008-03-05', Orsolya', 'Vass Katalin', 0607, '2008-03-05', Orsolya', 'Vass Katalin', 0607, '2008-03-05',

INSERT INTO menetek VALUES('Berkes 1, 2004, 840, 872, 123); INSERT INTO menetek VALUES('Berkes 2, 2004, 880, 912, 183); INSERT INTO menetek VALUES('Berkes 3, 2004, 924, 955, 253); INSERT INTO menetek VALUES('Berkes 4, 2004, 960, 990, 223); INSERT INTO menetek VALUES('Berkes 5, 2004, 1001, 1031, 123); INSERT INTO menetek VALUES('Berkes 6, 2004, 1041, 1071, 212);

-9-

Adatbzisok hasznlata 1.
INSERT INTO menetek VALUES('Berkes 7, 2004, 1083, 1112, 293); INSERT INTO menetek VALUES('Berkes 8, 2004, 1121, 1150, 270); INSERT INTO menetek VALUES('Berkes 9, 2004, 1160, 1191, 223); INSERT INTO menetek VALUES('Berkes 10, 2004, 1200, 1231, 123); INSERT INTO menetek VALUES('Berkes 11, 2004, 1241, 1270, 170); INSERT INTO menetek VALUES('Berkes 12, 2004, 1280, 1310, 123); INSERT INTO menetek VALUES('Hords 1, 1356, 850, 872, 102); INSERT INTO menetek VALUES('Hords 2, 1356, 873, 895, 112); INSERT INTO menetek VALUES('Hords 3, 1356, 900, 920, 98); INSERT INTO menetek VALUES('Hords 4, 1356, 925, 945, 74); INSERT INTO menetek VALUES('Hords 5, 1356, 950, 972, 99); INSERT INTO menetek VALUES('Hords 5, 4203, 1166, 1205, 117); INSERT INTO menetek VALUES('Hords 6, 4203, 1210, 1250, 95); INSERT INTO menetek VALUES('Hords 7, 4203, 1256, 1297, 78); INSERT INTO menetek VALUES('Erds 1, 1308, 250, 270, 20); INSERT INTO menetek VALUES('Erds 2, 1308, 280, 305, 46); INSERT INTO menetek VALUES('Erds 3, 1308, 310, 330, 73); INSERT INTO menetek VALUES('Erds 4, 1308, 340, 355, 112); INSERT INTO menetek VALUES('Erds 5, 1308, 360, 375, 126); INSERT INTO menetek VALUES('Erds 6, 1308, 380, 400, 84); INSERT INTO menetek VALUES('Erds 7, 1308, 401, 415, 84); Orsolya', 'Vass Katalin', 0607, '2008-03-05', Orsolya', 'Vass Katalin', 0607, '2008-03-05', Orsolya', 'Vass Katalin', 0607, '2008-03-05', Orsolya', 'Vass Katalin', 0607, '2008-03-05', Orsolya', 'Vass Katalin', 0607, '2008-03-05', Orsolya', 'Vass Katalin', 0607, '2008-03-05', Lszl', 'Zld Mariann', 0205, '2008-03-06', Lszl', 'Zld Mariann', 0205, '2008-03-06', Lszl', 'Zld Mariann', 0205, '2008-03-06', Lszl', 'Zld Mariann', 0205, '2008-03-06', Lszl', 'Zld Mariann', 0205, '2008-03-06', Lszl', 'Zld Mariann', 0106, '2008-03-17', Lszl', 'Zld Mariann', 0106, '2008-03-17', Lszl', 'Zld Mariann', 0106, '2008-03-17',

Eszter', 'Kun Dorottya', 1701, '2008-02-07', Eszter', 'Kun Dorottya', 1701, '2008-02-07', Eszter', 'Kun Dorottya', 1701, '2008-02-07', Eszter', 'Kun Dorottya', 1701, '2008-02-07', Eszter', 'Kun Dorottya', 1701, '2008-02-07', Eszter', 'Kun Dorottya', 1701, '2008-02-07', Eszter', 'Kun Dorottya', 1701, '2008-02-07',

- 10 -

Adatbzisok hasznlata 1.

Az adattblk listzsa
Vezetk:
VEZETO_NEVE -------------------Kiss Pista Kecsks Judit Nagy Ferenc Hords Lszl Berkes Orsolya Erds Eszter 6 sor kijellve. ANYJA_NEVE -------------------Veres Mria Kovcs Ilona Ills Zsuzsanna Zld Mariann Vass Katalin Kun Dorottya BEOSZTAS --------------flls flls flls besegt flls besegt

Menetek:
VEZETO_NEVE -------------------Kiss Pista Kiss Pista Kiss Pista Kiss Pista Kiss Pista Kiss Pista Kiss Pista Kiss Pista Kiss Pista Kiss Pista Kiss Pista Kiss Pista Kecsks Judit Kecsks Judit Kecsks Judit Kecsks Judit Kecsks Judit Kecsks Judit Kecsks Judit Kecsks Judit Kecsks Judit Kecsks Judit Kecsks Judit Kecsks Judit Kecsks Judit Kecsks Judit Kecsks Judit Kecsks Judit Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya Hords Lszl Hords Lszl ANYJA_NEVE FORGALMI_SZAM DATUM FORDULOSZAM PALYASZAM INDULASI_IDO ERKEZESI_IDO UTASSZAM -------------------- ------------- ---------- ----------- ---------- ------------ ------------ ---------Veres Mria 1701 2008-02-01 1 1301 250 270 20 Veres Mria 1701 2008-02-01 2 1301 280 305 46 Veres Mria 1701 2008-02-01 3 1301 310 330 73 Veres Mria 1701 2008-02-01 4 1301 340 355 112 Veres Mria 1701 2008-02-01 5 1313 360 375 126 Veres Mria 1701 2008-02-01 6 1313 380 400 84 Veres Mria 1701 2008-02-01 7 1313 401 415 84 Veres Mria 205 2008-02-02 1 1347 850 870 102 Veres Mria 205 2008-02-02 2 1347 875 895 75 Veres Mria 205 2008-02-02 3 1347 900 920 140 Veres Mria 205 2008-02-02 4 1347 925 945 114 Veres Mria 205 2008-02-02 5 1347 950 970 99 Kovcs Ilona 301 2008-03-03 1 1501 240 293 150 Kovcs Ilona 301 2008-03-03 2 1501 300 353 132 Kovcs Ilona 301 2008-03-03 3 1501 360 413 150 Kovcs Ilona 301 2008-03-03 4 1501 420 473 95 Kovcs Ilona 306 2008-03-03 1 1501 840 893 150 Kovcs Ilona 306 2008-03-03 2 1501 900 953 114 Kovcs Ilona 306 2008-03-03 3 1501 960 1015 126 Kovcs Ilona 306 2008-03-03 4 1501 1020 1073 95 Kovcs Ilona 106 2008-03-17 1 4202 840 880 201 Kovcs Ilona 106 2008-03-17 2 4202 885 1027 201 Kovcs Ilona 106 2008-03-17 3 4202 1032 1071 201 Kovcs Ilona 106 2008-03-17 4 4202 1075 1115 214 Kovcs Ilona 106 2008-03-17 5 4202 1122 1164 201 Kovcs Ilona 106 2008-03-17 6 4202 1166 1205 167 Kovcs Ilona 106 2008-03-17 7 4202 1210 1250 95 Kovcs Ilona 106 2008-03-17 8 4202 1256 1297 78 Ills Zsuzsanna 401 2008-03-02 1 2001 240 270 123 Ills Zsuzsanna 401 2008-03-02 2 2001 280 310 120 Ills Zsuzsanna 401 2008-03-02 3 2001 320 353 236 Ills Zsuzsanna 401 2008-03-02 4 2001 360 410 228 Ills Zsuzsanna 401 2008-03-02 5 2001 420 450 235 Ills Zsuzsanna 407 2008-03-03 1 2003 840 872 123 Ills Zsuzsanna 407 2008-03-03 2 2003 880 912 183 Ills Zsuzsanna 407 2008-03-03 3 2003 924 955 253 Ills Zsuzsanna 407 2008-03-03 4 2003 960 990 223 Ills Zsuzsanna 407 2008-03-03 5 2003 1000 1034 123 Ills Zsuzsanna 407 2008-03-03 6 2003 1040 1072 222 Ills Zsuzsanna 407 2008-03-03 7 2003 1083 1114 283 Ills Zsuzsanna 407 2008-03-03 8 2003 1121 1151 170 Ills Zsuzsanna 407 2008-03-03 9 2003 1160 1191 123 Ills Zsuzsanna 407 2008-03-03 10 2003 1200 1231 123 Ills Zsuzsanna 407 2008-03-03 11 2003 1241 1270 170 Ills Zsuzsanna 407 2008-03-03 12 2003 1280 1311 123 Vass Katalin 607 2008-03-05 1 2004 840 872 123 Vass Katalin 607 2008-03-05 2 2004 880 912 183 Vass Katalin 607 2008-03-05 3 2004 924 955 253 Vass Katalin 607 2008-03-05 4 2004 960 990 223 Vass Katalin 607 2008-03-05 5 2004 1001 1031 123 Vass Katalin 607 2008-03-05 6 2004 1041 1071 212 Vass Katalin 607 2008-03-05 7 2004 1083 1112 293 Vass Katalin 607 2008-03-05 8 2004 1121 1150 270 Vass Katalin 607 2008-03-05 9 2004 1160 1191 223 Vass Katalin 607 2008-03-05 10 2004 1200 1231 123 Vass Katalin 607 2008-03-05 11 2004 1241 1270 170 Vass Katalin 607 2008-03-05 12 2004 1280 1310 123 Zld Mariann 205 2008-03-06 1 1356 850 872 102 Zld Mariann 205 2008-03-06 2 1356 873 895 112

- 11 -

Adatbzisok hasznlata 1.
Hords Lszl Hords Lszl Hords Lszl Hords Lszl Hords Lszl Hords Lszl Erds Eszter Erds Eszter Erds Eszter Erds Eszter Erds Eszter Erds Eszter Erds Eszter 72 sor kijellve. Zld Mariann Zld Mariann Zld Mariann Zld Mariann Zld Mariann Zld Mariann Kun Dorottya Kun Dorottya Kun Dorottya Kun Dorottya Kun Dorottya Kun Dorottya Kun Dorottya 205 205 205 106 106 106 1701 1701 1701 1701 1701 1701 1701 2008-03-06 2008-03-06 2008-03-06 2008-03-17 2008-03-17 2008-03-17 2008-02-07 2008-02-07 2008-02-07 2008-02-07 2008-02-07 2008-02-07 2008-02-07 3 4 5 5 6 7 1 2 3 4 5 6 7 1356 1356 1356 4203 4203 4203 1308 1308 1308 1308 1308 1308 1308 900 925 950 1166 1210 1256 250 280 310 340 360 380 401 920 945 972 1205 1250 1297 270 305 330 355 375 400 415 98 74 99 117 95 78 20 46 73 112 126 84 84

Viszonylatok:
VISZONYLAT MENETIDO TAV PIHENOIDO ---------- ---------- ---------- ---------1 40 15000 5 2 20 6000 5 3 53 20000 7 4 30 12500 2 6 30 12000 5 17 12 5000 10 6 sor kijellve.

Jratok:
FORGALMI_SZAM VISZONYLAT KEZDESI_IDO BEFEJEZESI_IDO ------------- ---------- ----------- -------------101 1 240 480 102 1 240 480 103 1 240 720 104 1 300 540 105 1 240 720 106 1 840 1320 107 1 1140 1380 201 2 240 480 202 2 240 720 203 2 300 540 204 2 240 720 205 2 840 1320 206 2 1140 1380 301 3 240 480 302 3 300 480 303 3 240 720 304 3 300 540 305 3 480 720 306 3 840 1080 307 3 1140 1380 401 4 240 480 402 4 300 480 403 4 240 720 404 4 240 720 405 4 300 540 406 4 480 720 407 4 840 1320 408 4 1140 1380 601 6 240 480 602 6 300 480

- 12 -

Adatbzisok hasznlata 1.
603 604 605 606 607 608 1701 1703 1704 1706 40 sor kijellve. 6 6 6 6 6 6 17 17 17 17 240 240 300 480 840 1140 240 240 300 840 720 720 540 720 1320 1380 480 720 900 1320

Villamosok:
PALYASZAM TIPUS ---------- -------------------1301 CSMG2 1302 CSMG2 1304 CSMG2 1305 CSMG2 1306 CSMG2 1307 CSMG2 1308 CSMG2 1309 CSMG2 1310 CSMG2 1311 CSMG2 1312 CSMG2 1313 CSMG2 1325 KCSV7 1326 KCSV7 1347 KCSV7 1356 KCSV7 4202 T5C5 4203 T5C5 4204 T5C5 4205 T5C5 4206 T5C5 4207 T5C5 4208 T5C5 4209 T5C5 4210 T5C5 4211 T5C5 4212 T5C5 4213 T5C5 4214 T5C5 4215 T5C5 1501 TW6000 1502 TW6000 1503 TW6000 1504 TW6000 1505 TW6000 1506 TW6000 1507 TW6000 2001 COMBINO 2002 COMBINO 2003 COMBINO

- 13 -

Adatbzisok hasznlata 1.
2004 2005 2006 2007 2008 2009 2010 COMBINO COMBINO COMBINO COMBINO COMBINO COMBINO COMBINO

47 sor kijellve.

Tpusok:
TIPUS ULOHELYEK_SZAMA ALLOHELYEK_SZAMA -------------------- --------------- ---------------CSMG2 40 126 KCSV7 36 126 T5C5 75 210 TW6000 46 130 COMBINO 64 289 5 sor kijellve.

- 14 -

Adatbzisok hasznlata 1.

Egyszer lekrdezsek
1. Besegt beoszts jrmvezetk lekrdezse (query1.sql)
SET linesize 60 SET pagesize 15 TTITLE "Besegt beoszts jrmvezetk" BTITLE "SKV Kft." SELECT vezeto_neve AS "Vezet neve", anyja_neve AS "Anyja neve" FROM vezetok WHERE beosztas LIKE 'besegt'; TTITLE OFF BTITLE OFF SET pagesize 40 SET linesize 400 Besegt beoszts jrmvezetk Vezet neve -------------------Hords Lszl Erds Eszter Anyja neve -------------------Zld Mariann Kun Dorottya

SKV Kft. 2 sor kijellve.

2. 30 perc vagy annl hosszabb menetidej viszonylatok (query2.sql)


SET linesize 40 SET pagesize 15 TTITLE "Hossz menetidej vonalak" BTITLE "SKV Kft." COLUMN viszonylat HEADING 'Viszonylat|szm' JUSTIFY CENTER SELECT viszonylat FROM viszonylatok WHERE menetido >= 30 ORDER BY viszonylat; CLEAR COLUMNS TTITLE OFF BTITLE OFF SET pagesize 40 SET linesize 400

- 15 -

Adatbzisok hasznlata 1.
Hossz menetidej vonalak Viszonylat szm ---------1 3 4 6

SKV Kft. 4 sor kijellve.

3. 150 s 250 frhely befogadkpessg jrmvek (query3.sql)


SET linesize 80 SET pagesize 15 TTITLE "Kzepes kapacits jrmvek" BTITLE "SKV Kft." SELECT tipus AS "Tpus", ulohelyek_szama AS "lhelyek szma", allohelyek_szama AS "llhelyek szma", ulohelyek_szama + allohelyek_szama AS "sszes frhely" FROM tipusok WHERE ulohelyek_szama + allohelyek_szama BETWEEN 150 AND 250 ORDER BY ulohelyek_szama + allohelyek_szama DESC; TTITLE OFF BTITLE OFF SET pagesize 40 SET linesize 400 Kzepes kapacits jrmvek Tpus lhelyek szma llhelyek szma sszes frhely -------------------- --------------- ---------------- --------------TW6000 46 130 176 CSMG2 40 126 166 KCSV7 36 126 162

SKV Kft. 3 sor kijellve.

- 16 -

Adatbzisok hasznlata 1.

Csoportost lekrdezsek
1. Forgalmi jratokknti tlagos utasszm (query4.sql)
SET linesize 80 SET pagesize 15 TTITLE "Forgalmi jratokknti tlagos utasszm" BTITLE "SKV Kft." COLUMN "Forgalmi szm" FORMAT 0000 SELECT forgalmi_szam AS "Forgalmi szm", ROUND(AVG(utasszam)) AS "tlagos utasszm" FROM menetek GROUP BY forgalmi_szam ORDER BY forgalmi_szam; CLEAR COLUMNS TTITLE OFF BTITLE OFF SET pagesize 40 SET linesize 400 Forgalmi jratokknti tlagos utasszm Forgalmi szm tlagos utasszm ------------- ---------------0106 150 0205 102 0301 132 0306 121 0401 188 0407 177 0607 193 1701 78 SKV Kft. 8 sor kijellve.

2. Villamosonknti forgalomban tlttt id (query5.sql)


SET linesize 80 SET pagesize 25 TTITLE "Forgalomban tlttt id" BTITLE "SKV Kft." COLUMN "Forgalomban" JUSTIFY CENTER HEADING "Forgalomban|tlttt id|(ra)" SELECT palyaszam AS "Plyaszm", ROUND(SUM(erkezesi_ido - indulasi_ido) / 60,2) AS "Forgalomban" FROM menetek GROUP BY palyaszam ORDER BY palyaszam; CLEAR COLUMNS TTITLE OFF BTITLE OFF

- 17 -

Adatbzisok hasznlata 1.
SET pagesize 40 SET linesize 400 Forgalomban tlttt id Forgalomban tlttt id (ra) ----------1,33 2,15 ,82 1,67 1,77 7,1 2,88 6,23 6,07 7,05 2

Plyaszm ---------1301 1308 1313 1347 1356 1501 2001 2003 2004 4202 4203

SKV Kft. 11 sor kijellve.

3. Adott villamsovezet forgalomban tlttt ideje (query6.sql)


SET linesize 80 SET pagesize 15 TTITLE "Kiss Pista s Hords Lszl 0205s jratban forgalomban tlttt ideje" BTITLE "SKV Kft." COLUMN "Forgalomban" JUSTIFY CENTER HEADING "Forgalomban|tlttt id|(ra)" SELECT vezeto_neve AS "Vezet neve", ROUND(SUM(erkezesi_ido - indulasi_ido) / 60,2) AS "Forgalomban" FROM menetek WHERE forgalmi_szam = 0205 GROUP BY vezeto_neve HAVING vezeto_neve LIKE 'Kiss Pista' OR vezeto_neve LIKE 'Hords Lszl' ORDER BY vezeto_neve; CLEAR COLUMNS TTITLE OFF BTITLE OFF SET pagesize 40 SET linesize 400 Kiss Pista s Hords Lszl 0205s jratban forgalomban tlttt ideje Forgalomban tlttt id Vezet neve (ra) -------------------- ----------Hords Lszl 1,77

- 18 -

Adatbzisok hasznlata 1.
Kiss Pista 1,67

SKV Kft. 2 sor kijellve.

- 19 -

Adatbzisok hasznlata 1.

Tbbtbls lekrdezsek
1. COMBINO-val zemel jratokon szabad lhelyek (query7.sql)
SET linesize 120 SET pagesize 45 TTITLE "COMBINO-val zemel jratokon lv szabad lhelyek" BTITLE "SKV Kft." BREAK ON "Forgalmi szm" COLUMN "Vezet" HEADING "Vezet neve" COLUMN "Forgalmi szm" FORMAT 0000 HEADING "Forgalmi|szm" JUSTIFY CENTER COLUMN "Dtum" FORMAT A13 COLUMN "Szabad helyek" HEADING "Szabad helyek|sszesen" JUSTIFY CENTER COLUMN "Kihasznltsg" HEADING "Frhely|kihasznltsg|(%)" JUSTIFY CENTER SELECT menetek.vezeto_neve AS "Vezet", menetek.forgalmi_szam AS "Forgalmi szm", TO_CHAR(menetek.datum, 'YYYY.MM.DD') AS "Dtum", menetek.forduloszam AS "Fordulszm", (tipusok.ulohelyek_szama + tipusok.allohelyek_szama) - menetek.utasszam AS "Szabad helyek", tipusok.ulohelyek_szama + tipusok.allohelyek_szama AS "sszes frhely", ROUND(menetek.utasszam / (tipusok.ulohelyek_szama + tipusok.allohelyek_szama) * 100) AS "Kihasznltsg" FROM menetek, villamosok, tipusok WHERE menetek.palyaszam = villamosok.palyaszam AND villamosok.tipus = tipusok.tipus AND UPPER(villamosok.tipus) = 'COMBINO'; CLEAR COLUMNS CLEAR BREAKS TTITLE OFF BTITLE OFF SET pagesize 40 SET linesize 400
COMBINO-val zemel jratokon lv szabad lhelyek Frhely Forgalmi Szabad helyek kihasznltsg Vezet neve szm Dtum Fordulszm sszesen sszes frhely (%) -------------------- -------- ---------- ----------- ------------- --------------- ------------Nagy Ferenc 0401 2008.03.02 1 230 353 35 Nagy Ferenc 2008.03.02 2 233 353 34 Nagy Ferenc 2008.03.02 3 117 353 67 Nagy Ferenc 2008.03.02 4 125 353 65 Nagy Ferenc 2008.03.02 5 118 353 67 Nagy Ferenc 0407 2008.03.03 1 230 353 35 Nagy Ferenc 2008.03.03 2 170 353 52 Nagy Ferenc 2008.03.03 3 100 353 72 Nagy Ferenc 2008.03.03 4 130 353 63 Nagy Ferenc 2008.03.03 5 230 353 35 Nagy Ferenc 2008.03.03 6 131 353 63 Nagy Ferenc 2008.03.03 7 70 353 80 Nagy Ferenc 2008.03.03 8 183 353 48 Nagy Ferenc 2008.03.03 9 230 353 35

- 20 -

Adatbzisok hasznlata 1.
Nagy Ferenc Nagy Ferenc Nagy Ferenc Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya 2008.03.03 2008.03.03 2008.03.03 0607 2008.03.05 2008.03.05 2008.03.05 2008.03.05 2008.03.05 2008.03.05 2008.03.05 2008.03.05 2008.03.05 2008.03.05 2008.03.05 2008.03.05 10 11 12 1 2 3 4 5 6 7 8 9 10 11 12 230 183 230 230 170 100 130 230 141 60 83 130 230 183 230 SKV Kft. 29 sor kijellve. 353 353 353 353 353 353 353 353 353 353 353 353 353 353 353 35 48 35 35 52 72 63 35 60 83 76 63 35 48 35

2. jrmvezetk adott vonalakon futott tvolsga (query8.sql)


SET linesize 120 SET pagesize 20 TTITLE "Jrmvezetk adott vonalakon futott tvolsga" BTITLE "SKV Kft." BREAK ON "Forgalmi szm" COLUMN "Vezet" HEADING "Vezet neve" COLUMN "Tvolsg" HEADING "Megtett|tvolsg|(km)" JUSTIFY CENTER SELECT menetek.vezeto_neve AS "Vezet", viszonylatok.viszonylat AS "Viszonylatszm", ROUND(SUM(viszonylatok.tav)/1000,2) AS "Tvolsg" FROM menetek, jaratok, viszonylatok WHERE menetek.forgalmi_szam = jaratok.forgalmi_szam AND jaratok.viszonylat = viszonylatok.viszonylat GROUP BY menetek.vezeto_neve, viszonylatok.viszonylat ORDER BY menetek.vezeto_neve; CLEAR COLUMNS CLEAR BREAKS TTITLE OFF BTITLE OFF SET pagesize 40 SET linesize 400 Jrmvezetk adott vonalakon futott tvolsga Megtett tvolsg (km) ---------144 35

Vezet neve Viszonylatszm -------------------- -------------Berkes Orsolya 6 Erds Eszter 17

- 21 -

Adatbzisok hasznlata 1.
Hords Lszl Hords Lszl Kecsks Judit Kecsks Judit Kiss Pista Kiss Pista Nagy Ferenc 2 1 1 3 2 17 4 30 45 120 160 30 35 212,5 SKV Kft. 9 sor kijellve.

3. Jrmvezetk ksse a menetidhz kpest (query9.sql)


SET linesize 120 SET pagesize 50 TTITLE "Jrmvezetk ksse a menetidhz kpest" BTITLE "SKV Kft." COLUMN COLUMN COLUMN COLUMN "Vezet" HEADING "Vezet neve" "Forgalmi szm" FORMAT 0000 HEADING "Forgalmi|szm" JUSTIFY CENTER "Dtum" FORMAT A20 "Kss" HEADING "Kss|(perc)" JUSTIFY CENTER

SELECT menetek.vezeto_neve AS "Vezet", menetek.forgalmi_szam AS "Forgalmi szm", menetek.forduloszam AS "Fordulszm", TO_CHAR(menetek.datum, 'YYYY.MM.DD') AS "Dtum", jaratadatok.viszonylat AS "Viszonylatszm", (menetek.erkezesi_ido - menetek.indulasi_ido) - jaratadatok.ido AS "Kss" FROM menetek, (SELECT jaratok.forgalmi_szam AS forgalmi, viszonylatok.viszonylat AS viszonylat, viszonylatok.menetido AS ido FROM jaratok, viszonylatok WHERE jaratok.viszonylat = viszonylatok.viszonylat) jaratadatok WHERE menetek.forgalmi_szam = jaratadatok.forgalmi AND (menetek.erkezesi_ido - menetek.indulasi_ido) - jaratadatok.ido > 0 ORDER BY menetek.vezeto_neve; CLEAR COLUMNS TTITLE OFF BTITLE OFF SET pagesize 40 SET linesize 400
Jrmvezetk ksse a menetidhz kpest Forgalmi Kss Vezet neve szm Fordulszm Dtum Viszonylatszm (perc) -------------------- -------- ----------- -------------------- -------------- ---------Berkes Orsolya 0607 9 2008.03.05 6 1

- 22 -

Adatbzisok hasznlata 1.
Berkes Orsolya Berkes Orsolya Berkes Orsolya Berkes Orsolya Erds Eszter Erds Eszter Erds Eszter Erds Eszter Erds Eszter Erds Eszter Erds Eszter Hords Lszl Hords Lszl Hords Lszl Hords Lszl Kecsks Judit Kecsks Judit Kecsks Judit Kecsks Judit Kiss Pista Kiss Pista Kiss Pista Kiss Pista Kiss Pista Kiss Pista Kiss Pista Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc Nagy Ferenc 0607 0607 0607 0607 1701 1701 1701 1701 1701 1701 1701 0205 0205 0205 0106 0306 0106 0106 0106 1701 1701 1701 1701 1701 1701 1701 0407 0407 0407 0407 0407 0407 0407 0407 0401 0401 0407 10 1 2 3 6 7 4 3 2 1 5 1 5 2 7 3 2 5 8 7 6 5 4 3 1 2 10 9 7 6 5 12 2 1 4 3 3 2008.03.05 2008.03.05 2008.03.05 2008.03.05 2008.02.07 2008.02.07 2008.02.07 2008.02.07 2008.02.07 2008.02.07 2008.02.07 2008.03.06 2008.03.06 2008.03.06 2008.03.17 2008.03.03 2008.03.17 2008.03.17 2008.03.17 2008.02.01 2008.02.01 2008.02.01 2008.02.01 2008.02.01 2008.02.01 2008.02.01 2008.03.03 2008.03.03 2008.03.03 2008.03.03 2008.03.03 2008.03.03 2008.03.03 2008.03.03 2008.03.02 2008.03.02 2008.03.03 SKV Kft. 38 sor kijellve. 6 6 6 6 17 17 17 17 17 17 17 2 2 2 1 3 1 1 1 17 17 17 17 17 17 17 4 4 4 4 4 4 4 4 4 4 4 1 2 2 1 8 2 3 8 13 8 3 2 2 2 1 2 102 2 1 2 8 3 3 8 8 13 1 1 1 2 4 1 2 2 20 3 1

- 23 -

Adatbzisok hasznlata 1.

Allekrdezsek
1. Flls jrmvezetk jratai (query10.sql)
SET linesize 80 SET pagesize 20 TTITLE "Flls jrmvezetk jratai" BTITLE "SKV Kft." COLUMN COLUMN COLUMN COLUMN COLUMN "Vezet" HEADING "Vezet neve" "Anyja" HEADING "Anyja neve" "Forgalmi szm" FORMAT 0000 HEADING "Forgalmi|szm" JUSTIFY CENTER "Dtum" FORMAT A15 "Fordulszm" HEADING "Jratban|megtett|fordulszm" JUSTIFY CENTER

BREAK ON "Vezet" ON "Anyja" SELECT menetek.vezeto_neve AS "Vezet", menetek.anyja_neve AS "Anyja", menetek.forgalmi_szam AS "Forgalmi szm", TO_CHAR(menetek.datum, 'YYYY.MM.DD') AS "Dtum", COUNT(menetek.forduloszam) AS "Fordulszm" FROM menetek, (SELECT vezeto_neve, anyja_neve FROM vezetok WHERE LOWER(beosztas)='flls') foallasuak WHERE menetek.vezeto_neve = foallasuak.vezeto_neve AND menetek.anyja_neve = foallasuak.anyja_neve GROUP BY menetek.vezeto_neve, menetek.anyja_neve, menetek.forgalmi_szam, menetek.datum ORDER BY menetek.vezeto_neve; CLEAR BREAKS CLEAR COLUMNS TTITLE OFF BTITLE OFF SET pagesize 40 SET linesize 400 Flls jrmvezetk jratai Forgalmi Vezet neve Anyja neve szm -------------------- -------------------- -------Berkes Orsolya Vass Katalin 0607 Kecsks Judit Kovcs Ilona 0106 0306 0301 Kiss Pista Veres Mria 0205 1701 Nagy Ferenc Ills Zsuzsanna 0407 0401 Jratban megtett Dtum fordulszm --------------- ----------2008.03.05 12 2008.03.17 8 2008.03.03 4 2008.03.03 4 2008.02.02 5 2008.02.01 7 2008.03.03 12 2008.03.02 5

- 24 -

Adatbzisok hasznlata 1.

SKV Kft. 8 sor kijellve.

2. Legkisebb forgalomban tlttt id s az alapidk kztti klnbsg (query11.sql)


SET linesize 120 SET pagesize 25 TTITLE "A 1701-es jrat menetidi s a minimlis menetid kztti klnbsg" BTITLE "SKV Kft." COLUMN COLUMN COLUMN COLUMN COLUMN COLUMN COLUMN COLUMN "Vezet" HEADING "Vezet neve" FORMAT A15 "Anyja" HEADING "Anyja neve" FORMAT A15 "Forgalmi szm" FORMAT 0000 HEADING "Forgalmi|szm" JUSTIFY CENTER "Dtum" FORMAT A13 "Fordulszm" HEADING "Fordul|sorszma" JUSTIFY CENTER "Menetid" HEADING "Futott|menetid" JUSTIFY CENTER "Legkisebb" HEADING "Legkisebb|menetid" JUSTIFY CENTER "Idklnbsg" HEADING "Menetid|klnbsg" JUSTIFY CENTER

SELECT menetek.vezeto_neve AS "Vezet", menetek.anyja_neve AS "Anyja", menetek.forgalmi_szam AS "Forgalmi szm", TO_CHAR(menetek.datum, 'YYYY.MM.DD') AS "Dtum", menetek.forduloszam AS "Fordulszm", menetek.erkezesi_ido - menetek.indulasi_ido AS "Menetid", minmenetido.minido AS "Legkisebb", menetek.erkezesi_ido - menetek.indulasi_ido - minmenetido.minido AS "Idklnbsg" FROM menetek, (SELECT MIN(erkezesi_ido - indulasi_ido) AS minido FROM menetek WHERE forgalmi_szam = 1701) minmenetido WHERE forgalmi_szam = 1701 ORDER BY "Idklnbsg", "Vezet"; CLEAR COLUMNS TTITLE OFF BTITLE OFF SET pagesize 40 SET linesize 400
A 1701-es jrat menetidi s a minimlis menetid kztti klnbsg Vezet neve --------------Erds Eszter Kiss Pista Erds Eszter Erds Eszter Kiss Pista Kiss Pista Erds Eszter Erds Eszter Erds Eszter Kiss Pista Forgalmi Fordul Futott Legkisebb Menetid Anyja neve szm Dtum sorszma menetid menetid klnbsg --------------- -------- ------------- ---------- ---------- ---------- ---------Kun Dorottya 1701 2008.02.07 7 14 14 0 Veres Mria 1701 2008.02.01 7 14 14 0 Kun Dorottya 1701 2008.02.07 5 15 14 1 Kun Dorottya 1701 2008.02.07 4 15 14 1 Veres Mria 1701 2008.02.01 4 15 14 1 Veres Mria 1701 2008.02.01 5 15 14 1 Kun Dorottya 1701 2008.02.07 1 20 14 6 Kun Dorottya 1701 2008.02.07 6 20 14 6 Kun Dorottya 1701 2008.02.07 3 20 14 6 Veres Mria 1701 2008.02.01 3 20 14 6

- 25 -

Adatbzisok hasznlata 1.
Kiss Pista Kiss Pista Erds Eszter Kiss Pista Veres Mria Veres Mria Kun Dorottya Veres Mria 1701 1701 1701 1701 2008.02.01 2008.02.01 2008.02.07 2008.02.01 6 1 2 2 20 20 25 25 14 14 14 14 6 6 11 11

SKV Kft. 14 sor kijellve.

3. TW6000 tpusu kocsival vitt viszonylatok (query12.sql)


SET linesize 55 SET pagesize 15 TTITLE "TW6000 tpus kocsival vitt viszonylatok" BTITLE "SKV Kft." COLUMN "Menetid" HEADING "Futott|menetid" JUSTIFY CENTER COLUMN "Vonalhossz" FORMAT A15 SELECT viszonylatok.viszonylat AS "Viszonylatszm", viszonylatok.menetido AS "Menetid", TO_CHAR(ROUND(viszonylatok.tav/1000,2)) || ' km' AS "Vonalhossz", viszonylatok.pihenoido AS "Pihenid" FROM viszonylatok, menetek, jaratok WHERE menetek.forgalmi_szam = jaratok.forgalmi_szam AND jaratok.viszonylat = viszonylatok.viszonylat AND menetek.palyaszam IN (SELECT palyaszam FROM villamosok WHERE UPPER(tipus) = 'TW6000') GROUP BY viszonylatok.viszonylat, viszonylatok.menetido, viszonylatok.tav, viszonylatok.pihenoido ORDER BY viszonylatok.viszonylat; CLEAR COLUMNS TTITLE OFF BTITLE OFF SET pagesize 40 SET linesize 400 TW6000 tpus kocsival vitt viszonylatok Futott Viszonylatszm menetid Vonalhossz Pihenid -------------- ---------- --------------- ---------3 53 20 km 7 SKV Kft. 1 sor kijellve.

4. Azon vezetk, akik voltak 6 ra vagy annl hosszabb jratban (query13.sql)


SET linesize 60 SET pagesize 15

- 26 -

Adatbzisok hasznlata 1.
TTITLE "Azon vezetk, akik voltak 6 ra vagy annl hosszabb jratban" BTITLE "SKV Kft." COLUMN "Vezet" HEADING "Vezet neve" FORMAT A15 COLUMN "Anyja" HEADING "Anyja neve" FORMAT A15 SELECT vezeto_neve AS "Vezet", anyja_neve AS "Anyja" FROM menetek WHERE forgalmi_szam = ANY (SELECT forgalmi_szam FROM jaratok WHERE befejezesi_ido - kezdesi_ido >= 360) GROUP BY vezeto_neve, anyja_neve ORDER BY "Vezet"; CLEAR COLUMNS TTITLE OFF BTITLE OFF SET pagesize 40 SET linesize 400 Azon vezetk, akik voltak 6 ra vagy annl hosszabb jratban Vezet neve --------------Berkes Orsolya Hords Lszl Kecsks Judit Kiss Pista Nagy Ferenc Anyja neve --------------Vass Katalin Zld Mariann Kovcs Ilona Veres Mria Ills Zsuzsanna

SKV Kft. 5 sor kijellve.

5. A legtbbet ks vezet(k) (query14.sql)


SET linesize 60 SET pagesize 10 TTITLE "A legtbbet ks vezet(k)" BTITLE "SKV Kft." COLUMN COLUMN COLUMN COLUMN "Vezet" HEADING "Vezet neve" FORMAT A15 "Anyja" HEADING "Anyja neve" FORMAT A15 "Forgalmi szm" FORMAT 0000 HEADING "Forgalmi|szm" JUSTIFY CENTER "Dtum" FORMAT A10

SELECT menetek.vezeto_neve AS "Vezet", menetek.anyja_neve AS "Anyja", menetek.forgalmi_szam AS "Forgalmi szm", TO_CHAR(menetek.datum, 'YYYY.MM.DD') AS "Dtum" FROM menetek WHERE menetek.erkezesi_ido - menetek.indulasi_ido >= ALL (SELECT menetek.erkezesi_ido - menetek.indulasi_ido AS kszam FROM menetek) ORDER BY "Vezet";

- 27 -

Adatbzisok hasznlata 1.

CLEAR COLUMNS TTITLE OFF BTITLE OFF SET pagesize 40 SET linesize 400 A legtbbet ks vezet(k) Forgalmi Vezet neve Anyja neve szm Dtum --------------- --------------- -------- ---------Kecsks Judit Kovcs Ilona 0106 2008.03.17 SKV Kft. 1 sor kijellve.

- 28 -

Adatbzisok hasznlata 1.

Nzetet hasznl lekrdezsek


1. Besegt jrmvezetk jratai (query15.sql)
CREATE OR REPLACE VIEW besegitok AS SELECT vezeto_neve, anyja_neve FROM vezetok WHERE UPPER(beosztas) = 'BESEGT'; SET linesize 60 SET pagesize 12 TTITLE "Besegt jrmvezetk jratai" BTITLE "SKV Kft." COLUMN "Vezet" HEADING "Vezet neve" FORMAT A15 COLUMN "Anyja" HEADING "Anyja neve" FORMAT A15 COLUMN "Forgalmi szm" FORMAT 0000 HEADING "Forgalmi|szm" JUSTIFY CENTER SELECT menetek.vezeto_neve AS "Vezet", menetek.anyja_neve AS "Anyja", menetek.forgalmi_szam AS "Forgalmi szm", TO_CHAR(menetek.datum, 'YYYY.MM.DD') AS "Dtum" FROM menetek, besegitok WHERE menetek.vezeto_neve = besegitok.vezeto_neve AND menetek.anyja_neve = besegitok.anyja_neve GROUP BY menetek.vezeto_neve, menetek.anyja_neve, menetek.forgalmi_szam, menetek.datum ORDER BY "Vezet"; CLEAR COLUMNS TTITLE OFF BTITLE OFF SET pagesize 40 SET linesize 400 DROP VIEW besegitok; A nzet ltrejtt. Cs. Mj. 08 Besegt jrmvezetk jratai Vezet neve --------------Erds Eszter Hords Lszl Hords Lszl Forgalmi Anyja neve szm Dtum --------------- -------- ---------Kun Dorottya 1701 2008.02.07 Zld Mariann 0205 2008.03.06 Zld Mariann 0106 2008.03.17 SKV Kft. 3 sor kijellve. lap 1

- 29 -

Adatbzisok hasznlata 1.

A nzet eldobva.

2. Kocsik futott km-ei (query16.sql)


CREATE OR REPLACE VIEW kocsikm AS SELECT menetek.palyaszam AS palyaszam, SUM(viszonylatok.tav) AS tavolsagok FROM menetek, jaratok, viszonylatok WHERE menetek.forgalmi_szam = jaratok.forgalmi_szam AND jaratok.viszonylat = viszonylatok.viszonylat GROUP BY menetek.palyaszam; SET linesize 60 SET pagesize 20 TTITLE "Kocsik futott km-ei" BTITLE "SKV Kft." COLUMN "Plyaszm" HEADING "Plyaszm" COLUMN "Tpus" HEADING "Kocsi|tpusa" FORMAT A10 JUSTIFY CENTER COLUMN "Megtett" HEADING "Megtett|km" JUSTIFY CENTER SELECT villamosok.palyaszam AS "Plyaszm", tipusok.tipus AS "Tpus", ROUND(kocsikm.tavolsagok/1000,2) AS "Megtett" FROM tipusok, villamosok, kocsikm WHERE kocsikm.palyaszam = villamosok.palyaszam AND villamosok.tipus = tipusok.tipus ORDER BY kocsikm.tavolsagok DESC; CLEAR COLUMNS TTITLE OFF BTITLE OFF SET pagesize 40 SET linesize 400 DROP VIEW kocsikm; A nzet ltrejtt. Cs. Mj. 08 lap 1

Kocsik futott km-ei

Plyaszm ---------1501 2003 2004

Kocsi Megtett tpusa km ---------- ---------TW6000 160 COMBINO 150 COMBINO 144

- 30 -

Adatbzisok hasznlata 1.
4202 2001 4203 1308 1356 1347 1301 1313 T5C5 COMBINO T5C5 CSMG2 KCSV7 KCSV7 CSMG2 CSMG2 120 62,5 45 35 30 30 20 15 SKV Kft. 11 sor kijellve. A nzet eldobva.

- 31 -

Adatbzisok hasznlata 1.

DML utastsok
1. CSMG2 es tpus kocsi talaktsa sorn bszereltek 2 lst (update1.sql)
SAVEPOINT a; UPDATE tipusok SET ulohelyek_szama = ulohelyek_szama + 2, allohelyek_szama = allohelyek_szama - 2 WHERE UPPER(tipus) = 'CSMG2'; COMMIT;

2. A 7 percnl rvidebb pihenidej viszonylatok pihenidejnek megnvelse 5 perccel (update2.sql)


SAVEPOINT b; UPDATE viszonylatok SET pihenoido = pihenoido + 5 WHERE pihenoido <= ANY (SELECT pihenoido FROM viszonylatok WHERE pihenoido <= 7); --SELECT * FROM viszonylatok; ROLLBACK TO b;

3. Az adott vezet trlse a jrmvezetk kzl (delete1.sql)


SAVEPOINT c; DELETE FROM vezetok WHERE UPPER(vezeto_neve) = 'NAGY FERENC' AND UPPER(anyja_neve) = 'ILLS ZSUZSANNA'; ROLLBACK TO c;

4. Nem hasznlt jratok trlse (delete2.sql)


SAVEPOINT d; DELETE FROM jaratok WHERE forgalmi_szam NOT IN (SELECT forgalmi_szam FROM menetek); ROLLBACK TO d;

- 32 -

Adatbzisok hasznlata 1.

Interaktv SQL szkriptek


Megadott oszlop frisstse (iupdate.sql)
SET verify OFF ACCEPT ACCEPT ACCEPT ACCEPT tabla PROMPT "Adja meg a tbla nevt: " oszlop PROMPT "Adja meg a mdostand oszlop nevt: " ertek PROMPT "Adja meg a mdostand j rtkt: " feltetel PROMPT "Adja meg a frisstsi felttelt: "

UPDATE &tabla SET &oszlop = &ertek WHERE &feltetel; SET verify ON SQL> Adja Adja Adja Adja @iupdate meg a tbla nevt: viszonylatok meg a mdostand oszlop nevt: tav meg a mdostand j rtkt: 7777 meg a frisstsi felttelt: viszonylat = 2

1 sor mdostva.

Megadott sorok trlse (idelete.sql)


SET verify OFF ACCEPT tabla PROMPT "Adja meg a tbla nevt: " ACCEPT feltetel PROMPT "Adja meg a trlsi felttelt: " DELETE FROM &tabla WHERE &feltetel; SET verify ON SQL> @idelete Adja meg a tbla nevt: vezetok Adja meg a trlsi felttelt: beosztas = 'besegt' 2 sor trlve.

Megadott tblba beszrs (iinsert.sql)


SET verify OFF ACCEPT tabla PROMPT "Adja meg a tbla nevt: " ACCEPT ertekek PROMPT "Adja meg a felvtelre kerl rtkeket: " INSERT INTO &tabla VALUES &ertekek; SET verify ON SQL> @iinsert

- 33 -

Adatbzisok hasznlata 1.
Adja meg a tbla nevt: vezetok Adja meg a felvtelre kerl rtkeket: ('aa','bb','flls') 1 sor ltrejtt.

Megadott tbla megadott attribtumainak listzsa (iselect.sql)


SET verify OFF ACCEPT tabla PROMPT "Adja meg a tbla nevt: " ACCEPT ertekek PROMPT "Adja meg a listzsra kerl mezket: " SELECT &ertekek FROM &tabla; SET verify ON

j oszlop hozzadsa egy tblhoz (iujoszlop.sql)


SET verify OFF ACCEPT tabla PROMPT "Adja meg a tbla nevt: " ACCEPT oszlop PROMPT "Adja meg az j oszlop nevt: " ACCEPT tipus PROMPT "Azja meg az j oszlop tpust: " ALTER TABLE &tabla ADD &oszlop &tipus; SET verify ON SQL> Adja Adja Azja @iujoszlop meg a tbla nevt: villamosok meg az j oszlop nevt: parja meg az j oszlop tpust: number(4)

A tbla mdostva.

Megadott oszlop trlse (ioszloptorles.sql)


SET verify OFF ACCEPT tabla PROMPT "Adja meg a tbla nevt: " ACCEPT oszlop PROMPT "Adja meg a trlend oszlop nevt: " ALTER TABLE &tabla DROP COLUMN &oszlop; SET verify ON SQL> @ioszloptorles Adja meg a tbla nevt: villamosok Adja meg a trlend oszlop nevt: parja A tbla mdostva.

Megszorts hozzadsa tblhoz (imegszhozzaad.sql)


SET verify OFF

- 34 -

Adatbzisok hasznlata 1.

ACCEPT tabla PROMPT "Adja meg a tbla nevt: " ACCEPT megszoritas PROMPT "Adja meg az j megszorts nevt: " ACCEPT tipus PROMPT "Adja meg az j megszorts tpust: " ALTER TABLE &tabla ADD CONSTRAINT &megszoritas &tipus; SET verify ON SQL> Adja Adja Adja @imegszhozzaad meg a tbla nevt: viszonylatok meg az j megszorts nevt: viszonylatok_check meg az j megszorts tpust: CHECK(pihenoido < menetido)

A tbla mdostva.

Megszorts trlse tblrl (imegsztorl.sql)


SET verify OFF ACCEPT tabla PROMPT "Adja meg a tbla nevt: " ACCEPT megszoritas PROMPT "Adja meg a trlend megszorts nevt: " ALTER TABLE &tabla DROP CONSTRAINT &megszoritas; SET verify ON SQL> @imegsztorl Adja meg a tbla nevt: viszonylatok Adja meg a trlend megszorts nevt: viszonylatok_check A tbla mdostva.

Tbla tnevezse (itablaatnev.sql)


SET verify OFF ACCEPT tabla PROMPT "Adja meg a tbla nevt: " ACCEPT uj PROMPT "Adja meg a tbla j nevt: " RENAME &tabla TO &uj; SET verify ON SQL> @itablaatnev Adja meg a tbla nevt: villamosok Adja meg a tbla j nevt: tujak A tbla tnevezve.

Oszlop tnevezse (ioszlopatnev.sql)


SET verify OFF ACCEPT tabla PROMPT "Adja meg a tbla nevt: "

- 35 -

Adatbzisok hasznlata 1.
ACCEPT oszlop PROMPT "Adja meg az oszlop nevt: " ACCEPT uj PROMPT "Adja meg az oszlop j nevt: " ALTER TABLE &tabla RENAME COLUMN &oszlop TO &uj; SET verify ON SQL> Adja Adja Adja @ioszlopatnev meg a tbla nevt: vezetok meg az oszlop nevt: beosztas meg az oszlop j nevt: munkakor

A tbla mdostva.

- 36 -

Adatbzisok hasznlata 1.

Jogosultsgkezels
CONNECT SYSTEM/gazda AS SYSDBA CREATE ROLE Vonalfonok; GRANT CREATE TABLE, CREATE ANY VIEW, DROP ANY VIEW, CREATE SESSION TO Vonalfonok; CREATE ROLE Diszpecser; GRANT SELECT ANY TABLE, CREATE SESSION TO Diszpecser; CREATE USER Bla IDENTIFIED BY asdf DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users; CREATE USER Mihly IDENTIFIED BY qwer DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users; GRANT Vonalfonok TO Bla; GRANT Vonalfonok TO Mihly; CREATE USER Imre IDENTIFIED BY yxcv DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users; CREATE USER Gbor IDENTIFIED BY hjkl DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users; GRANT Diszpecser TO Imre; GRANT Diszpecser TO Gbor;

- 37 -

Adatbzisok hasznlata 1.

Prostsi feladat
A nagyobb kapacits elrshez a villamosokat ssze kell csatolni. sszekapcsolni csak az azonos tpusakat lehet gy, hogy az egyik kocsi plyaszma pratlan, a msik kocsi plyaszma pros. (par.sql)
--DROP TABLE csatolt; CREATE TABLE csatolt AS SELECT * FROM villamosok; ALTER TABLE csatolt ADD parja NUMBER(4); BEGIN FOR i IN (SELECT * FROM csatolt WHERE parja IS NULL AND MOD(palyaszam,2) <> 0) LOOP FOR j IN (SELECT * FROM csatolt WHERE parja IS NULL AND MOD(palyaszam,2) = 0) LOOP IF UPPER(i.tipus) = UPPER(j.tipus) THEN UPDATE csatolt SET parja = i.palyaszam WHERE palyaszam = j.palyaszam; UPDATE csatolt SET parja = j.palyaszam WHERE palyaszam = i.palyaszam; EXIT; END IF; END LOOP; END LOOP; END; / SELECT * FROM csatolt; Eredmny: A tbla ltrejtt. A tbla mdostva. A PL/SQL eljrs sikeresen befejezdtt. PALYASZAM ---------1301 1302 1304 TIPUS PARJA -------------------- ---------CSMG2 1302 CSMG2 1301 CSMG2 1305

- 38 -

Adatbzisok hasznlata 1.
1305 1306 1307 1308 1309 1310 1311 1312 1313 1325 1326 1347 1356 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 1501 1502 1503 1504 1505 1506 1507 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 CSMG2 CSMG2 CSMG2 CSMG2 CSMG2 CSMG2 CSMG2 CSMG2 CSMG2 KCSV7 KCSV7 KCSV7 KCSV7 T5C5 T5C5 T5C5 T5C5 T5C5 T5C5 T5C5 T5C5 T5C5 T5C5 T5C5 T5C5 T5C5 T5C5 TW6000 TW6000 TW6000 TW6000 TW6000 TW6000 TW6000 COMBINO COMBINO COMBINO COMBINO COMBINO COMBINO COMBINO COMBINO COMBINO COMBINO 1304 1307 1306 1309 1308 1311 1310 1313 1312 1326 1325 1356 1347 4203 4202 4205 4204 4207 4206 4209 4208 4211 4210 4213 4212 4215 4214 1502 1501 1504 1503 1506 1505 2002 2001 2004 2003 2006 2005 2008 2007 2010 2009

47 sor kijellve.

- 39 -

Adatbzisok hasznlata 1.

Alprogramok
A paramterknt megadott jrmvezet sszes megtett km-e (alpr1.sql)
SET serveroutput ON CREATE OR REPLACE FUNCTION vezetettkm(nev IN VARCHAR2, anyja IN VARCHAR2) RETURN NUMBER IS mszam NUMBER; BEGIN SELECT SUM(viszonylatok.tav) INTO mszam FROM menetek, jaratok, viszonylatok WHERE menetek.forgalmi_szam = jaratok.forgalmi_szam AND jaratok.viszonylat = viszonylatok.viszonylat GROUP BY menetek.vezeto_neve, menetek.anyja_neve HAVING menetek.vezeto_neve = nev AND menetek.anyja_neve = anyja; RETURN mszam/1000; EXCEPTION WHEN NO_DATA_FOUND THEN RAISE_APPLICATION_ERROR(-20101, 'Nincs ilyen vezet!'); END; / SHOW ERRORS SET serveroutput OFF

A paramterknt megadott frhely nagyobb-e, mint az sszes frhely tlagnak fele (alpr2.sql)
SET serveroutput ON CREATE OR REPLACE FUNCTION atlagferohely(ferohely IN NUMBER) RETURN BOOLEAN IS atlagferohely NUMBER; BEGIN SELECT AVG(allohelyek_szama + ulohelyek_szama) INTO atlagferohely FROM tipusok GROUP BY tipus; IF ferohely > atlagferohely/2 THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END; / SHOW ERRORS SET serveroutput OFF

- 40 -

Adatbzisok hasznlata 1.

Ha nem szerepel a tpusok tblban a megadott paramter sor, akkor hibt generl (alpr3.sql)
SET serveroutput ON CREATE OR REPLACE PROCEDURE tipusellenorzes(tipusbe IN VARCHAR2) IS szamlal NUMBER; BEGIN SELECT COUNT(*) INTO szamlal FROM tipusok WHERE tipus = tipusbe; IF szamlal = 0 THEN RAISE_APPLICATION_ERROR(-20104, 'Nincs ilyen tpus: ' || tipusbe); END IF; END; / SHOW ERRORS SET serveroutput OFF

- 41 -

Adatbzisok hasznlata 1.

Triggerek Besegt beoszs vezet csak 20km-nl tbb megtett km-re lphet t flls besorolsba (trigger1.sql)
SET serveroutput ON CREATE OR REPLACE TRIGGER foallasba BEFORE UPDATE ON vezetok FOR EACH ROW DECLARE nemlephetat EXCEPTION; km NUMBER; BEGIN DBMS_OUTPUT.PUT_LINE('foallasba trigger aktv...'); IF UPPER(:OLD.beosztas) = 'BESEGT' AND UPPER(:NEW.beosztas) = 'FLLS' THEN km := vezetettkm(:NEW.vezeto_neve, :NEW.anyja_neve); IF km < 20 THEN RAISE nemlephetat; END IF; END IF; DBMS_OUTPUT.PUT_LINE('A frissts elvgezhet!'); EXCEPTION WHEN nemlephetat THEN RAISE_APPLICATION_ERROR(-20102, 'Nem lphet t flls beosztsba, csak 20 megtett km utn! Jelenlegi megtett tvolsg:' || ROUND(km,2)); END; / SHOW ERRORS SET serveroutput OFF

j tpust csak megfelel frhellyel lehet felvenni (trigger2.sql)


SET serveroutput ON CREATE OR REPLACE TRIGGER ujvillamos BEFORE INSERT ON tipusok FOR EACH ROW DECLARE keveshely EXCEPTION; BEGIN DBMS_OUTPUT.PUT_LINE('ujvillamos trigger aktv...'); IF atlagferohely(:NEW.ulohelyek_szama + :NEW.allohelyek_szama) = FALSE THEN RAISE keveshely; END IF; DBMS_OUTPUT.PUT_LINE('Adat felvehet!'); EXCEPTION WHEN keveshely THEN RAISE_APPLICATION_ERROR(-20103, 'Tl kevs frhely van a jrmvn, nem kpes kiszolglni az ignyeket!'); END;

- 42 -

Adatbzisok hasznlata 1.
/ SHOW ERRORS SET serveroutput OFF

A villamosok tblba csak ltez tpusok plyaszmait lehet felvenni (trigger3.sql)


SET serveroutput ON CREATE OR REPLACE TRIGGER tipusvedo BEFORE INSERT ON villamosok FOR EACH ROW BEGIN DBMS_OUTPUT.PUT_LINE('ujvillamos trigger aktv...'); tipusellenorzes(:NEW.tipus); DBMS_OUTPUT.PUT_LINE('Adat felvehet!'); END; / SHOW ERRORS SET serveroutput OFF

Meneteket csak munkaidben lehet kezelni (trigger4.sql)


SET serveroutput ON CREATE OR REPLACE TRIGGER menetekhozzaferes BEFORE DELETE OR INSERT OR UPDATE ON menetek BEGIN IF TO_CHAR(sysdate, 'HH24:MI') NOT BETWEEN '03:00' AND '23:50' THEN RAISE_APPLICATION_ERROR(-20213, 'Hozzfrs csak munkaidben lehtesges!'); END IF; END; / SHOW ERRORS SET serveroutput OFF

- 43 -

Adatbzisok hasznlata 1.

PL/SQL listk
Jrmvezet hozzadsa (padd.sql)
SET serveroutput ON SET verify OFF ACCEPT vezeto PROMPT 'Jrmvezet neve: ' ACCEPT anyja PROMPT 'Anyja neve: ' ACCEPT beosztas PROMPT 'Beosztsa: ' DECLARE beosztashiba EXCEPTION; BEGIN IF UPPER('&beosztas') = 'BESEGT' OR UPPER('&beosztas') = 'FLLS' THEN INSERT INTO vezetok VALUES ('&vezeto', '&anyja', '&beosztas'); ELSE RAISE beosztashiba; END IF; EXCEPTION WHEN beosztashiba THEN RAISE_APPLICATION_ERROR(-20110, 'Hibs beoszts!'); END; / SET verify ON SET serveroutput OFF SQL> @padd Jrmvezet neve: Sndor Ferenc Anyja neve: Hollsi Jlia Beosztsa: fllls DECLARE * Hiba a(z) 1. sorban: ORA-20110: Hibs beoszts! ORA-06512: a(z) helyen a(z) 11. sornl SQL> @padd Jrmvezet neve: Sndor Ferenc Anyja neve: Hollsi Jlia Beosztsa: besegt A PL/SQL eljrs sikeresen befejezdtt.

Megadott vezet trlse (pdelete.sql)


SET serveroutput ON SET verify OFF ACCEPT vezeto PROMPT 'Jrmvezet neve: ' ACCEPT anyja PROMPT 'Anyja neve: ' BEGIN DELETE FROM vezetok WHERE UPPER(vezeto_neve) = UPPER('&vezeto') AND UPPER(anyja_neve) = UPPER('&anyja');

- 44 -

Adatbzisok hasznlata 1.
EXCEPTION WHEN NO_DATA_FOUND THEN RAISE_APPLICATION_ERROR(-20111, 'Nincs ilyen jrmvezet!'); END; / SET verify ON SET serveroutput OFF SQL> @pdelete Jrmvezet neve: Pter Anyja neve: Mariann A PL/SQL eljrs sikeresen befejezdtt.

Megadott vezet mdostsa (pmodify.sql)


SET serveroutput ON SET verify OFF ACCEPT vezeto PROMPT 'Jrmvezet neve: ' ACCEPT anyja PROMPT 'Anyja neve: ' ACCEPT beosztas PROMPT 'j beosztsa: ' DECLARE beosztashiba EXCEPTION; CURSOR vezetokurzor IS SELECT * FROM vezetok FOR UPDATE OF beosztas NOWAIT; vezetosor vezetokurzor%ROWTYPE; BEGIN OPEN vezetokurzor; FETCH vezetokurzor INTO vezetosor; WHILE (vezetokurzor%FOUND) LOOP IF UPPER(vezetosor.vezeto_neve) = UPPER('&vezeto') AND UPPER(vezetosor.anyja_neve) = UPPER('&anyja') THEN IF UPPER('&beosztas') = 'BESEGT' OR UPPER('&beosztas') = 'FLLS' THEN UPDATE vezetok SET beosztas = '&beosztas' WHERE CURRENT OF vezetokurzor; ELSE RAISE beosztashiba; END IF; EXIT; END IF; FETCH vezetokurzor INTO vezetosor; END LOOP; CLOSE vezetokurzor; EXCEPTION WHEN NO_DATA_FOUND THEN RAISE_APPLICATION_ERROR(-20111, 'Nincs ilyen jrmvezet!'); END; /

- 45 -

Adatbzisok hasznlata 1.

SET verify ON SET serveroutput OFF SQL> @pmodify Jrmvezet neve: Berkes Orsolya Anyja neve: Vass Katalin j beosztsa: besegt foallasba trigger aktv... A frissts elvgezhet! A PL/SQL eljrs sikeresen befejezdtt.

Vezet keresse (psearch.sql)


SET serveroutput ON SET verify OFF ACCEPT vezeto PROMPT 'Jrmvezet neve vagy rszlete: ' DECLARE CURSOR vezetokurzor IS SELECT * FROM vezetok FOR UPDATE OF beosztas NOWAIT; vezetosor vezetokurzor%ROWTYPE; talalat NUMBER; BEGIN talalat := 0; OPEN vezetokurzor; FETCH vezetokurzor INTO vezetosor; WHILE (vezetokurzor%FOUND) LOOP IF UPPER(vezetosor.vezeto_neve) LIKE UPPER('%&vezeto%') THEN talalat := talalat + 1; DBMS_OUTPUT.PUT_LINE(talalat ||'. Nv: ' || vezetosor.vezeto_neve || ' Anyja neve: ' || vezetosor.anyja_neve || ' Beosztsa: ' || vezetosor.beosztas); END IF; FETCH vezetokurzor INTO vezetosor; END LOOP; CLOSE vezetokurzor; END; / SET verify ON SET serveroutput OFF SQL> @psearch Jrmvezet neve vagy rszlete: a 1. Nv: Nagy Ferenc Anyja neve: Ills Zsuzsanna Beosztsa: flls 2. Nv: Berkes Orsolya Anyja neve: Vass Katalin Beosztsa: besegt A PL/SQL eljrs sikeresen befejezdtt.

- 46 -

Adatbzisok hasznlata 1.

Vezetk listzsa (plist.sql)


SET serveroutput ON SET verify OFF PROMPT Jrmvezetk listzsa: DECLARE talalat NUMBER; BEGIN talalat := 0; DBMS_OUTPUT.PUT_LINE('------------------------------------------------------------------------'); FOR vezetosor IN (SELECT * FROM vezetok) LOOP talalat := talalat + 1; DBMS_OUTPUT.PUT_LINE('>> ' || talalat ||'. Nv: ' || vezetosor.vezeto_neve || ' Anyja neve: ' || vezetosor.anyja_neve || ' Beosztsa: ' || vezetosor.beosztas); DBMS_OUTPUT.PUT_LINE('------------------------------------------------------------------------'); END LOOP; END; / SET verify ON SET serveroutput OFF SQL> @plist Jrmvezetk listzsa: ------------------------------------------------------------------------>> 1. Nv: Kecsks Judit Anyja neve: Kovcs Ilona Beosztsa: besegt ------------------------------------------------------------------------>> 2. Nv: Nagy Ferenc Anyja neve: Ills Zsuzsanna Beosztsa: flls ------------------------------------------------------------------------>> 3. Nv: Hords Lszl Anyja neve: Zld Mariann Beosztsa: besegt ------------------------------------------------------------------------>> 4. Nv: Berkes Orsolya Anyja neve: Vass Katalin Beosztsa: besegt ------------------------------------------------------------------------>> 5. Nv: Erds Eszter Anyja neve: Kun Dorottya Beosztsa: besegt ------------------------------------------------------------------------>> 6. Nv: Sndor Ferenc Anyja neve: Hollsi Jlia Beosztsa: besegt ------------------------------------------------------------------------A PL/SQL eljrs sikeresen befejezdtt.

- 47 -

Anda mungkin juga menyukai