Cvičné príklady použitia jazyka SQL a PL/SQL create user student4 identified by student41; grant connect, resource to student4; create user student5 identified by student51; grant connect, resource to student5; tvorba tabulky sklad create table sklad (id_mat number (4) not null, nazov_mat char(30), mnozstvo_mat number (6,1) default '0', merna_jed char (8) check (merna_jed IN ('ks','l','m2','kg','t','m')), jed_cena_mat number(6,2), primary key (id_mat)); tvorba tabulky vyrobky create table vyrobky (id_vyr char (3) not null, nazov_vyr char(30), cena_vyr number(6,2), primary key (id_vyr)); zmena tabulky vyrobky - pridanie atributu typ vyrobku Alter table vyrobky add id_typ_vyr number(4); zobrazenie struktury entity desc vyrobky; tvorba tabulky typ vyrobku create table typ_vyr (id_typ_vyr number(4), nazov_typ_vyr char(15), primary key (id_typ_vyr)); zmena tabulky vyrobky - pridanie cudzieho kluca Alter table vyrobky add foreign key (id_typ_vyr) references typ_vyr (id_typ_vyr); tvorba tabulky spotreba create table spotreba (id_vyr char (3) not null, id_mat number (4) not null, mnozstvo number(6,2), foreign key (id_vyr) references vyrobky (id_vyr), foreign key (id_mat) references sklad (id_mat)); naplnanie tabulky typy vyrobkov insert into typ_vyr values (1, 'polica'); insert into typ_vyr values (2, 'skrinka'); insert into typ_vyr values (3, 'stol'); insert into typ_vyr values (4, 'stolicka'); insert into typ_vyr values (5, 'stolik'); select * from typ_vyr; naplnanie tabulky vyrobky insert into vyrobky values ('1P1', 'policka rohova','1250','1'); insert into vyrobky values ('1Pk1', 'policka kratka','250','1'); insert into vyrobky values ('1Pk2', 'policka dlha','820','1'); insert into vyrobky values ('1S1', 'skrinka mala','650','2'); insert into vyrobky values ('1S2', 'skrinka velka','1150','2'); insert into vyrobky values ('1SS1', 'skrinka sklenena mala','800','2'); insert into vyrobky values ('1SS2', 'skrinka sklenena velka','1600','2'); zmena typu premennej v tabulke vyrobky alter table vyrobky modify id_vyr char(4); naplnanie tabulky skad insert into sklad values ('101', 'drevotrieska biela','250','m2','450'); insert into sklad values ('102', 'drevotrieska dub','450','m2','600'); insert into sklad values ('103', 'drevotrieska javor','150','m2','500'); insert into sklad values ('201', 'dvierka vzor1','20','ks','1200'); insert into sklad values ('202', 'dvierka vzor2','10','ks','1000'); insert into sklad values ('203', 'dvierka vzor3','30','ks','900'); insert into sklad values ('301', 'sklenena polica kratka','10','ks','400'); insert into sklad values ('302', 'sklenena polica dlha','10','ks','800'); insert into sklad values ('401', 'panty vysuvacie zvisle','50','ks','100'); insert into sklad values ('402', 'panty horizontalne','20','ks','400'); insert into sklad values ('501', 'koliecka plastove','80','ks','100'); insert into sklad values ('502', 'koliecka kovove','40','ks','200'); insert into sklad values ('601', 'uchytky 30','120','ks','30'); insert into sklad values ('602', 'uchytky 45','100','ks','60'); insert into sklad values ('603', 'uchytky 60','60','ks','110'); insert into sklad values ('701', 'kovanie rohy trojstranne','60','ks','20'); insert into sklad values ('702', 'kovanie rohy dvojstranne','60','ks','10'); insert into sklad values ('801', 'skrutky 30x 3','600','ks',1); insert into sklad values ('802', 'skrutky 40x 3','800','ks',1.1); insert into sklad values ('803', 'skrutky 50x 4','500','ks',1.5); select * from sklad; naplnanie tabulky spotreba insert into spotreba values ('1P1 ', '101', 0.6); modifikacia tabulky spotreba alter table spotreba modify id_vyr char(4); naplnanie tabulky spotreba insert into spotreba values ('1P1 ', '101', 0.6); insert into spotreba values ('1P1 ', '701', 8); insert into spotreba values ('1P1 ', '702', 8); insert into spotreba values ('1P1 ', '802', 12); insert into spotreba values ('1S1 ', '101', 1.2); insert into spotreba values ('1S1 ', '701', 6); insert into spotreba values ('1S1 ', '702', 6); insert into spotreba values ('1S1 ', '201', 1); insert into spotreba values ('1S1 ', '802', 10); insert into spotreba values ('1S1 ', '801', 8); insert into spotreba values ('1S2 ', '101', 2.0); insert into spotreba values ('1S2 ', '701', 8); insert into spotreba values ('1S2 ', '702', 8); insert into spotreba values ('1S2 ', '201', 2); insert into spotreba values ('1S2 ', '802', 10); insert into spotreba values ('1S2 ', '801', 8); insert into spotreba values ('1Pk1', '101', 1.0); insert into spotreba values ('1Pk1', '702', 6); insert into spotreba values ('1Pk1', '802', 12); vypis vyrobok z coho sa sklada a mnozstvo select nazov_vyr, nazov_mat, mnozstvo from vyrobky v, sklad s, spotreba sp where v.id_vyr=sp.id_vyr and s.id_mat = sp.id_mat order by v.id_vyr; zjednotenie prvkov tabulky create view tab1 as select id_vyr|| id_mat as vyrobok_material, mnozstvo from spotreba; zobrazenie tab1 select * from tab1 order by vyrobok_material; vymazanie velicin delete from spotreba where id_vyr = some ('1S1 ','1S2 '); vypocet hodnoty vyrobku vypocet ceny materialov select nazov_vyr nazov, cena_vyr vyrobna_cena, nazov_mat, sp.mnozstvo*s.jed_cena_mat cena_materialu from vyrobky v, sklad s, spotreba sp where v.id_vyr=sp.id_vyr and s.id_mat = sp.id_mat order by v.id_vyr; vypocet ceny vyrobku tvorba nahladu create view tab1 as select nazov_vyr nazov, cena_vyr predajna_cena, nazov_mat, sp.mnozstvo*s.jed_cena_mat cena_materialu from vyrobky v, sklad s, spotreba sp where v.id_vyr=sp.id_vyr and s.id_mat = sp.id_mat order by v.id_vyr; vypocet koncovej ceny create view tab2 as select nazov, sum(cena_materialu) cena_vyrobna from tab1 group by nazov; vypis vyrobnej a predajnej ceny select nazov, cena_vyrobna, cena_vyr cena_predajna from vyrobky v inner join tab2 t2 ON v.nazov_vyr=t2.nazov; zvysenie ceny vyrobku create view tab3 as select id_vyr, nazov, cena_vyrobna, cena_vyr cena_predajna from vyrobky v inner join tab2 t2 ON v.nazov_vyr=t2.nazov; rozsirenie tabulky vyrobky o vyrobnu cenu alter table vyrobky add vyrobna_cena number(6,2); sucet ceny vyrobkov podla typov select id_typ_vyr, sum(cena_vyr) from vyrobky group by (id_typ_vyr); create view tab4 as select id_typ_vyr, sum(cena_vyr) suma from vyrobky group by (id_typ_vyr); select tv.id_typ_vyr, tv.nazov_typ_vyr, t4.suma from typ_vyr tv, tab4 t4 where tv.id_typ_vyr = t4.id_typ_vyr