SQL> SQL> create table sklad 2 (id_mat number (4) not null, 3 nazov_mat char(30), 4 mnozstvo_mat number (6,1) default '0', 5 merna_jed char (8) check (merna_jed IN ('ks','l','m2','kg','t','m')), 6 jed_cena_mat number(6,2), 7 primary key (id_mat)); Tabu3ka vytvorená. SQL> SQL> create table vyrobky 2 (id_vyr char (3) not null, 3 nazov_vyr char(30), 4 cena_vyr number(6,2), 5 primary key (id_vyr)); Tabu3ka vytvorená. SQL> Alter table vyrobky 2 add id_typ_vyr number(4); Tabu3ka zmenená. SQL> desc vyrobky; Meno Prázdne? Typ ----------------------------------------- -------- ---------------------------- ID_VYR NOT NULL CHAR(3) NAZOV_VYR CHAR(30) CENA_VYR NUMBER(6,2) ID_TYP_VYR NUMBER(4) SQL> create table typ_vyr 2 (id_typ_vyr number(4), 3 nazov_typ_vyr char(15), 4 primary key (id_typ_vyr)); Tabu3ka vytvorená. SQL> SQL> Alter table vyrobky 2 add foreign key (id_typ_vyr) references typ_vyr (id_typ_vyr); Tabu3ka zmenená. SQL> create table spotreba 2 (id_vyr char (3) not null, 3 id_mat number (4) not null, 4 mnozstvo number(6,2), 5 foreign key (id_vyr) references vyrobky (id_vyr), 6 foreign key (id_mat) references sklad (id_mat)); Tabu3ka vytvorená. SQL> SQL> SQL> insert into typ_vyr 2 values (1, 'polica'); 1 vytvorený riadok. SQL> SQL> insert into typ_vyr values (2, 'skrinka'); 1 vytvorený riadok. SQL> insert into typ_vyr values (3, 'stol'); 1 vytvorený riadok. SQL> insert into typ_vyr values (4, 'stolicka'); 1 vytvorený riadok. SQL> insert into typ_vyr values (5, 'stolik'); 1 vytvorený riadok. SQL> SQL> SQL> SQL> select * from typ_vyr; ID_TYP_VYR NAZOV_TYP_VYR ---------- --------------- 1 polica 2 skrinka 3 stol 4 stolicka 5 stolik SQL> insert into vyrobky values ('1P1', 'policka rohova','1250','1'); 1 vytvorený riadok. SQL> SQL> insert into vyrobky values ('1Pk1', 'policka kratka','250','1'); insert into vyrobky values ('1Pk1', 'policka kratka','250','1') * ERROR v riadku 1: ORA-12899: hodnota je pre stapec "STUDENT5"."VYROBKY"."ID_VYR" (skutoená šírka: 4, maximálna šírka: 3) príliš ve3ká SQL> insert into vyrobky values ('1Pk2', 'policka dlha','820','1'); insert into vyrobky values ('1Pk2', 'policka dlha','820','1') * ERROR v riadku 1: ORA-12899: hodnota je pre stapec "STUDENT5"."VYROBKY"."ID_VYR" (skutoená šírka: 4, maximálna šírka: 3) príliš ve3ká SQL> insert into vyrobky values ('1S1', 'skrinka mala','650','2'); 1 vytvorený riadok. SQL> insert into vyrobky values ('1S2', 'skrinka velka','1150','2'); 1 vytvorený riadok. SQL> insert into vyrobky values ('1SS1', 'skrinka sklenena mala','800','2'); insert into vyrobky values ('1SS1', 'skrinka sklenena mala','800','2') * ERROR v riadku 1: ORA-12899: hodnota je pre stapec "STUDENT5"."VYROBKY"."ID_VYR" (skutoená šírka: 4, maximálna šírka: 3) príliš ve3ká SQL> insert into vyrobky values ('1SS2', 'skrinka sklenena velka','1600','2'); insert into vyrobky values ('1SS2', 'skrinka sklenena velka','1600','2') * ERROR v riadku 1: ORA-12899: hodnota je pre stapec "STUDENT5"."VYROBKY"."ID_VYR" (skutoená šírka: 4, maximálna šírka: 3) príliš ve3ká SQL> alter table vyrobky 2 modify id_vyr char(4); Tabu3ka zmenená. SQL> insert into vyrobky values ('1P1', 'policka rohova','1250','1'); insert into vyrobky values ('1P1', 'policka rohova','1250','1') * ERROR v riadku 1: ORA-00001: porušenie jedineeného obmedzenia (STUDENT5.SYS_C0016466) SQL> SQL> insert into vyrobky values ('1Pk1', 'policka kratka','250','1'); 1 vytvorený riadok. SQL> insert into vyrobky values ('1Pk2', 'policka dlha','820','1'); 1 vytvorený riadok. SQL> insert into vyrobky values ('1S1', 'skrinka mala','650','2'); insert into vyrobky values ('1S1', 'skrinka mala','650','2') * ERROR v riadku 1: ORA-00001: porušenie jedineeného obmedzenia (STUDENT5.SYS_C0016466) SQL> insert into vyrobky values ('1S2', 'skrinka velka','1150','2'); insert into vyrobky values ('1S2', 'skrinka velka','1150','2') * ERROR v riadku 1: ORA-00001: porušenie jedineeného obmedzenia (STUDENT5.SYS_C0016466) SQL> insert into vyrobky values ('1SS1', 'skrinka sklenena mala','800','2'); 1 vytvorený riadok. SQL> insert into vyrobky values ('1SS2', 'skrinka sklenena velka','1600','2'); 1 vytvorený riadok. SQL> insert into sklad values ('101', 'drevotrieska biela','250','m2','450'); 1 vytvorený riadok. SQL> SQL> insert into sklad values ('102', 'drevotrieska dub','450','m2','600'); 1 vytvorený riadok. SQL> insert into sklad values ('103', 'drevotrieska javor','150','m2','500'); 1 vytvorený riadok. SQL> insert into sklad values ('201', 'dvierka vzor1','20','ks','1200'); 1 vytvorený riadok. SQL> insert into sklad values ('202', 'dvierka vzor2','10','ks','1000'); 1 vytvorený riadok. SQL> insert into sklad values ('203', 'dvierka vzor3','30','ks','900'); 1 vytvorený riadok. SQL> insert into sklad values ('301', 'sklenena polica kratka','10','ks','400'); 1 vytvorený riadok. SQL> insert into sklad values ('302', 'sklenena polica dlha','10','ks','800'); 1 vytvorený riadok. SQL> insert into sklad values ('401', 'panty vysuvacie zvisle','50','ks','100'); 1 vytvorený riadok. SQL> insert into sklad values ('402', 'panty horizontalne','20','ks','400'); 1 vytvorený riadok. SQL> insert into sklad values ('501', 'koliecka plastove','80','ks','100'); 1 vytvorený riadok. SQL> insert into sklad values ('502', 'koliecka kovove','40','ks','200'); 1 vytvorený riadok. SQL> insert into sklad values ('601', 'uchytky 30','120','ks','30'); 1 vytvorený riadok. SQL> insert into sklad values ('602', 'uchytky 45','100','ks','60'); 1 vytvorený riadok. SQL> insert into sklad values ('603', 'uchytky 60','60','ks','110'); 1 vytvorený riadok. SQL> insert into sklad values ('701', 'kovanie rohy trojstranne','60','ks','20'); 1 vytvorený riadok. SQL> insert into sklad values ('702', 'kovanie rohy dvojstranne','60','ks','10'); 1 vytvorený riadok. SQL> insert into sklad values ('801', 'skrutky 30x 3','600','ks',1); 1 vytvorený riadok. SQL> insert into sklad values ('802', 'skrutky 40x 3','800','ks',1.1); 1 vytvorený riadok. SQL> insert into sklad values ('803', 'skrutky 50x 4','500','ks',1.5); 1 vytvorený riadok. SQL> select * from sklad; ID_MAT NAZOV_MAT MNOZSTVO_MAT MERNA_JE JED_CENA_MAT ---------- ------------------------------ ------------ -------- ------------ 101 drevotrieska biela 250 m2 450 102 drevotrieska dub 450 m2 600 103 drevotrieska javor 150 m2 500 201 dvierka vzor1 20 ks 1200 202 dvierka vzor2 10 ks 1000 203 dvierka vzor3 30 ks 900 301 sklenena polica kratka 10 ks 400 302 sklenena polica dlha 10 ks 800 401 panty vysuvacie zvisle 50 ks 100 402 panty horizontalne 20 ks 400 501 koliecka plastove 80 ks 100 ID_MAT NAZOV_MAT MNOZSTVO_MAT MERNA_JE JED_CENA_MAT ---------- ------------------------------ ------------ -------- ------------ 502 koliecka kovove 40 ks 200 601 uchytky 30 120 ks 30 602 uchytky 45 100 ks 60 603 uchytky 60 60 ks 110 701 kovanie rohy trojstranne 60 ks 20 702 kovanie rohy dvojstranne 60 ks 10 801 skrutky 30x 3 600 ks 1 802 skrutky 40x 3 800 ks 1,1 803 skrutky 50x 4 500 ks 1,5 20 vybraných riadkov. SQL> insert into spotreba values ('1P1 ', '101', 0.6); insert into spotreba values ('1P1 ', '101', 0.6) * ERROR v riadku 1: ORA-12899: hodnota je pre stapec "STUDENT5"."SPOTREBA"."ID_VYR" (skutoená šírka: 4, maximálna šírka: 3) príliš ve3ká SQL> alter table spotreba 2 modify id_vyr char(4); Tabu3ka zmenená. SQL> insert into spotreba values ('1P1 ', '101', 0.6); 1 vytvorený riadok. SQL> SQL> insert into spotreba values ('1P1 ', '701', 8); 1 vytvorený riadok. SQL> insert into spotreba values ('1P1 ', '702', 8); 1 vytvorený riadok. SQL> insert into spotreba values ('1P1 ', '802', 12); 1 vytvorený riadok. SQL> SQL> insert into spotreba values ('1S1 ', '101', 1.2); 1 vytvorený riadok. SQL> insert into spotreba values ('1S1 ', '701', 6); 1 vytvorený riadok. SQL> insert into spotreba values ('1S1 ', '702', 6); 1 vytvorený riadok. SQL> insert into spotreba values ('1S1 ', '201', 1); 1 vytvorený riadok. SQL> insert into spotreba values ('1S1 ', '802', 10); 1 vytvorený riadok. SQL> insert into spotreba values ('1S1 ', '801', 8); 1 vytvorený riadok. SQL> SQL> insert into spotreba values ('1S2 ', '101', 2.0); 1 vytvorený riadok. SQL> insert into spotreba values ('1S2 ', '701', 8); 1 vytvorený riadok. SQL> insert into spotreba values ('1S2 ', '702', 8); 1 vytvorený riadok. SQL> insert into spotreba values ('1S2 ', '201', 2); 1 vytvorený riadok. SQL> insert into spotreba values ('1S2 ', '802', 10); 1 vytvorený riadok. SQL> insert into spotreba values ('1S2 ', '801', 8); 1 vytvorený riadok. SQL> SQL> SQL> insert into spotreba values ('1Pk1', '101', 1.0); 1 vytvorený riadok. SQL> insert into spotreba values ('1Pk1', '702', 6); 1 vytvorený riadok. SQL> insert into spotreba values ('1Pk1', '802', 12); 1 vytvorený riadok. SQL> SQL> select nazov_vyr, nazov_mat, mnozstvo 2 from vyrobky v, sklad s, spotreba sp 3 where v.id_vyr=sp.id_vyr 4 and s.id_mat = sp.id_mat 5 order by v.id_vyr; NAZOV_VYR NAZOV_MAT MNOZSTVO ------------------------------ ------------------------------ ---------- policka kratka drevotrieska biela 1 policka kratka kovanie rohy dvojstranne 6 policka kratka skrutky 40x 3 12 policka rohova drevotrieska biela ,6 policka rohova kovanie rohy trojstranne 8 policka rohova skrutky 40x 3 12 policka rohova kovanie rohy dvojstranne 8 skrinka mala drevotrieska biela 1,2 skrinka mala dvierka vzor1 1 skrinka mala kovanie rohy dvojstranne 6 skrinka mala skrutky 40x 3 10 NAZOV_VYR NAZOV_MAT MNOZSTVO ------------------------------ ------------------------------ ---------- skrinka mala skrutky 30x 3 8 skrinka mala kovanie rohy trojstranne 6 skrinka velka drevotrieska biela 2 skrinka velka dvierka vzor1 2 skrinka velka skrutky 40x 3 10 skrinka velka skrutky 30x 3 8 skrinka velka kovanie rohy dvojstranne 8 skrinka velka kovanie rohy trojstranne 8 19 vybraných riadkov. SQL> create view tab1 2 as select id_vyr|| id_mat as vyrobok_material, mnozstvo 3 from spotreba; Poh3ad vytvorený. SQL> select * from tab1 2 order by vyrobok_material; VYROBOK_MATERIAL MNOZSTVO -------------------------------------------- ---------- 1Pk1101 1 1Pk1702 6 1Pk1802 12 1P1 101 ,6 1P1 701 8 1P1 702 8 1P1 802 12 1S1 101 1,2 1S1 201 1 1S1 701 6 1S1 702 6 VYROBOK_MATERIAL MNOZSTVO -------------------------------------------- ---------- 1S1 801 8 1S1 802 10 1S2 101 2 1S2 201 2 1S2 701 8 1S2 702 8 1S2 801 8 1S2 802 10 19 vybraných riadkov. SQL> select nazov_vyr nazov, cena_vyr vyrobna_cena, nazov_mat, sp.mnozstvo*s.jed_cena_mat cena_mater ialu 2 from vyrobky v, sklad s, spotreba sp 3 where v.id_vyr=sp.id_vyr 4 and s.id_mat = sp.id_mat 5 order by v.id_vyr; NAZOV VYROBNA_CENA NAZOV_MAT ------------------------------ ------------ ------------------------------ CENA_MATERIALU -------------- policka kratka 250 drevotrieska biela 450 policka kratka 250 kovanie rohy dvojstranne 60 policka kratka 250 skrutky 40x 3 13,2 NAZOV VYROBNA_CENA NAZOV_MAT ------------------------------ ------------ ------------------------------ CENA_MATERIALU -------------- policka rohova 1250 drevotrieska biela 270 policka rohova 1250 kovanie rohy trojstranne 160 policka rohova 1250 skrutky 40x 3 13,2 NAZOV VYROBNA_CENA NAZOV_MAT ------------------------------ ------------ ------------------------------ CENA_MATERIALU -------------- policka rohova 1250 kovanie rohy dvojstranne 80 skrinka mala 650 drevotrieska biela 540 skrinka mala 650 dvierka vzor1 1200 NAZOV VYROBNA_CENA NAZOV_MAT ------------------------------ ------------ ------------------------------ CENA_MATERIALU -------------- skrinka mala 650 kovanie rohy dvojstranne 60 skrinka mala 650 skrutky 40x 3 11 skrinka mala 650 skrutky 30x 3 8 NAZOV VYROBNA_CENA NAZOV_MAT ------------------------------ ------------ ------------------------------ CENA_MATERIALU -------------- skrinka mala 650 kovanie rohy trojstranne 120 skrinka velka 1150 drevotrieska biela 900 skrinka velka 1150 dvierka vzor1 2400 NAZOV VYROBNA_CENA NAZOV_MAT ------------------------------ ------------ ------------------------------ CENA_MATERIALU -------------- skrinka velka 1150 skrutky 40x 3 11 skrinka velka 1150 skrutky 30x 3 8 skrinka velka 1150 kovanie rohy dvojstranne 80 NAZOV VYROBNA_CENA NAZOV_MAT ------------------------------ ------------ ------------------------------ CENA_MATERIALU -------------- skrinka velka 1150 kovanie rohy trojstranne 160 19 vybraných riadkov. SQL> create view tab1 as 2 select nazov_vyr nazov, cena_vyr predajna_cena, nazov_mat, sp.mnozstvo*s.jed_cena_mat cena_mate rialu 3 from vyrobky v, sklad s, spotreba sp 4 where v.id_vyr=sp.id_vyr 5 and s.id_mat = sp.id_mat 6 order by v.id_vyr; create view tab1 as * ERROR v riadku 1: ORA-00955: názov už používa existujúci objekt SQL> drop view tab1; Poh3ad zrušený. SQL> create view tab1 as 2 select nazov_vyr nazov, cena_vyr predajna_cena, nazov_mat, sp.mnozstvo*s.jed_cena_mat cena_mate rialu 3 from vyrobky v, sklad s, spotreba sp 4 where v.id_vyr=sp.id_vyr 5 and s.id_mat = sp.id_mat 6 order by v.id_vyr; Poh3ad vytvorený. SQL> select * from tab1; NAZOV PREDAJNA_CENA NAZOV_MAT ------------------------------ ------------- ------------------------------ CENA_MATERIALU -------------- policka kratka 250 drevotrieska biela 450 policka kratka 250 kovanie rohy dvojstranne 60 policka kratka 250 skrutky 40x 3 13,2 NAZOV PREDAJNA_CENA NAZOV_MAT ------------------------------ ------------- ------------------------------ CENA_MATERIALU -------------- policka rohova 1250 drevotrieska biela 270 policka rohova 1250 kovanie rohy trojstranne 160 policka rohova 1250 skrutky 40x 3 13,2 NAZOV PREDAJNA_CENA NAZOV_MAT ------------------------------ ------------- ------------------------------ CENA_MATERIALU -------------- policka rohova 1250 kovanie rohy dvojstranne 80 skrinka mala 650 drevotrieska biela 540 skrinka mala 650 dvierka vzor1 1200 NAZOV PREDAJNA_CENA NAZOV_MAT ------------------------------ ------------- ------------------------------ CENA_MATERIALU -------------- skrinka mala 650 kovanie rohy dvojstranne 60 skrinka mala 650 skrutky 40x 3 11 skrinka mala 650 skrutky 30x 3 8 NAZOV PREDAJNA_CENA NAZOV_MAT ------------------------------ ------------- ------------------------------ CENA_MATERIALU -------------- skrinka mala 650 kovanie rohy trojstranne 120 skrinka velka 1150 drevotrieska biela 900 skrinka velka 1150 dvierka vzor1 2400 NAZOV PREDAJNA_CENA NAZOV_MAT ------------------------------ ------------- ------------------------------ CENA_MATERIALU -------------- skrinka velka 1150 skrutky 40x 3 11 skrinka velka 1150 skrutky 30x 3 8 skrinka velka 1150 kovanie rohy dvojstranne 80 NAZOV PREDAJNA_CENA NAZOV_MAT ------------------------------ ------------- ------------------------------ CENA_MATERIALU -------------- skrinka velka 1150 kovanie rohy trojstranne 160 19 vybraných riadkov. SQL> create view tab2 as 2 select nazov, sum(cena_materialu) cena_vyrobna 3 from tab1 4 group by nazov; Poh3ad vytvorený. SQL> select * from tab2; NAZOV CENA_VYROBNA ------------------------------ ------------ policka kratka 523,2 policka rohova 523,2 skrinka mala 1939 skrinka velka 3559 SQL> select nazov, cena_vyrobna, cena_vyr cena_predajna 2 from vyrobky v inner join tab2 t2 3 ON v.nazov_vyr=t2.nazov; NAZOV CENA_VYROBNA CENA_PREDAJNA ------------------------------ ------------ ------------- policka kratka 523,2 250 policka rohova 523,2 1250 skrinka mala 1939 650 skrinka velka 3559 1150 SQL> create view tab3 as 2 select id_vyr, nazov, cena_vyrobna, cena_vyr cena_predajna 3 from vyrobky v inner join tab2 t2 4 ON v.nazov_vyr=t2.nazov; Poh3ad vytvorený. SQL> select * from tab3; ID_V NAZOV CENA_VYROBNA CENA_PREDAJNA ---- ------------------------------ ------------ ------------- 1Pk1 policka kratka 523,2 250 1P1 policka rohova 523,2 1250 1S1 skrinka mala 1939 650 1S2 skrinka velka 3559 1150 SQL> alter table vyrobky 2 add vyrobna_cena number(6,2); Tabu3ka zmenená. SQL> select nazov_vyr, 'kategoria' = 2 case when cena_vyr < 500 then 'lacny' 3 when cena_vyr >500 and cena_vyr<1000 then 'normalny' 4 else 'drahy' end 5 from vyrobky; select nazov_vyr, 'kategoria' = * ERROR v riadku 1: ORA-00923: k3úeové slovo FROM nebolo nájdené tam, kde bolo oeakávané SQL> select id_typ_vyr, sum(cena_vyr) 2 from vyrobky 3 group by (id_typ_vyr); ID_TYP_VYR SUM(CENA_VYR) ---------- ------------- 1 2320 2 4200 SQL> create view tab4 as 2 select id_typ_vyr, sum(cena_vyr) suma 3 from vyrobky 4 group by (id_typ_vyr); Poh3ad vytvorený. SQL> SQL> select tv.id_typ_vyr, tv.nazov_typ_vyr, t4.suma 2 from typ_vyr tv, tab4 t4 3 where tv.id_typ_vyr = t4.id_typ_vyr 4 ; ID_TYP_VYR NAZOV_TYP_VYR SUMA ---------- --------------- ---------- 1 polica 2320 2 skrinka 4200 SQL> Zapísalo súbor afiedt.buf 1 select tv.id_typ_vyr, tv.nazov_typ_vyr, t4.suma 2 from typ_vyr tv, tab4 t4 3* where tv.id_typ_vyr = t4.id_typ_vyr 4 ; ID_TYP_VYR NAZOV_TYP_VYR SUMA ---------- --------------- ---------- 1 polica 2320 2 skrinka 4200 programovanie v pl/sql SQL> SQL> SQL> CREATE TABLE T1( 2 e INTEGER, 3 f INTEGER 4 ); Tabu3ka vytvorená. SQL> SQL> DELETE FROM T1; 0 zrušených riadkov. SQL> INSERT INTO T1 VALUES(1, 3); 1 vytvorený riadok. SQL> INSERT INTO T1 VALUES(2, 4); 1 vytvorený riadok. SQL> select * from t1; E F ---------- ---------- 1 3 2 4 SQL> DECLARE 2 a NUMBER; 3 b NUMBER; 4 BEGIN 5 SELECT e,f INTO a,b FROM T1 WHERE e>1; 6 INSERT INTO T1 VALUES(b,a); 7 END; 8 . SQL> SQL> run; 1 DECLARE 2 a NUMBER; 3 b NUMBER; 4 BEGIN 5 SELECT e,f INTO a,b FROM T1 WHERE e>1; 6 INSERT INTO T1 VALUES(b,a); 7* END; Procedúra PL/SQL skoneila úspešne. SQL> select * from t1; E F ---------- ---------- 1 3 2 4 4 2 SQL> DECLARE 2 a NUMBER; 3 b NUMBER; 4 BEGIN 5 SELECT e,f INTO a,b FROM T1 WHERE e>2; 6 IF b=1 THEN 7 INSERT INTO T1 VALUES(b,a); 8 ELSE 9 INSERT INTO T1 VALUES(b+10,a+10); 10 END IF; 11 END; 12 . SQL> SQL> run; 1 DECLARE 2 a NUMBER; 3 b NUMBER; 4 BEGIN 5 SELECT e,f INTO a,b FROM T1 WHERE e>2; 6 IF b=1 THEN 7 INSERT INTO T1 VALUES(b,a); 8 ELSE 9 INSERT INTO T1 VALUES(b+10,a+10); 10 END IF; 11* END; Procedúra PL/SQL skoneila úspešne. SQL> select t1; select t1 * ERROR v riadku 1: ORA-00923: k3úeové slovo FROM nebolo nájdené tam, kde bolo oeakávané SQL> select * from t1; E F ---------- ---------- 1 3 2 4 4 2 12 14 SQL> DECLARE 2 x NUMBER := 5; 3 4 BEGIN 5 LOOP 6 INSERT INTO T1 VALUES(x,x*x); 7 x := x+1; 8 EXIT WHEN x>20; 9 END LOOP; 10 END; 11 . SQL> SQL> run; 1 DECLARE 2 x NUMBER := 5; 3 4 BEGIN 5 LOOP 6 INSERT INTO T1 VALUES(x,x*x); 7 x := x+1; 8 EXIT WHEN x>20; 9 END LOOP; 10* END; Procedúra PL/SQL skoneila úspešne. SQL> select t1; select t1 * ERROR v riadku 1: ORA-00923: k3úeové slovo FROM nebolo nájdené tam, kde bolo oeakávané SQL> select * from t1; E F ---------- ---------- 1 3 2 4 4 2 12 14 5 25 6 36 7 49 8 64 9 81 10 100 11 121 E F ---------- ---------- 12 144 13 169 14 196 15 225 16 256 17 289 18 324 19 361 20 400 20 vybraných riadkov.