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', mernajed char (8) check (mernajed IN ('ks','l',' ;m2','kg','t� 39;,'m')), jedcenamat 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 idtypvyr number(4);
zobrazenie struktury entity
desc vyrobky;
tvorba tabulky typ vyrobku
create table typ_vyr (idtypvyr number(4), nazovtypvyr char(15), primary key (idtypvyr));
zmena tabulky vyrobky - pridanie cudzieho kluca
Alter table vyrobky add foreign key (idtypvyr) references typvyr (idtyp_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 (idvyr) references vyrobky (idvyr), foreign key (idmat) references sklad (idmat));
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& #039;); insert into vyrobky values ('1S1', 'skrinka mala','650','2& #039;); insert into vyrobky values ('1S2', 'skrinka velka','1150','2 '); insert into vyrobky values ('1SS1', 'skrinka sklenena mala','800','2& #039;); 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& #039;,'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& #039;,'800'); insert into sklad values ('401', 'panty vysuvacie zvisle','50','ks ','100'); insert into sklad values ('402', 'panty horizontalne','20',&# 039;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&# 039;,'30'); insert into sklad values ('602', 'uchytky 45','100','ks&# 039;,'60'); insert into sklad values ('603', 'uchytky 60','60','ks� 39;,'110'); insert into sklad values ('701', 'kovanie rohy trojstranne','60',� 39;ks','20'); insert into sklad values ('702', 'kovanie rohy dvojstranne','60',� 39;ks','10'); insert into sklad values ('801', 'skrutky 30x 3','600','ks� 39;,1); insert into sklad values ('802', 'skrutky 40x 3','800','ks� 39;,1.1); insert into sklad values ('803', 'skrutky 50x 4','500','ks� 39;,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 nazovvyr, nazovmat, mnozstvo from vyrobky v, sklad s, spotreba sp where v.idvyr=sp.idvyr and s.idmat = sp.idmat order by v.id_vyr;
zjednotenie prvkov tabulky
create view tab1 as select idvyr|| idmat 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 nazovvyr nazov, cenavyr vyrobnacena, nazovmat, sp.mnozstvo*s.jedcenamat cena_materialu from vyrobky v, sklad s, spotreba sp where v.idvyr=sp.idvyr and s.idmat = sp.idmat order by v.id_vyr;
vypocet ceny vyrobku
tvorba nahladu
create view tab1 as select nazovvyr nazov, cenavyr predajnacena, nazovmat, sp.mnozstvo*s.jedcenamat cena_materialu from vyrobky v, sklad s, spotreba sp where v.idvyr=sp.idvyr and s.idmat = sp.idmat order by v.id_vyr;
vypocet koncovej ceny
create view tab2 as select nazov, sum(cenamaterialu) cenavyrobna from tab1 group by nazov;
vypis vyrobnej a predajnej ceny
select nazov, cenavyrobna, cenavyr cena_predajna from vyrobky v inner join tab2 t2 ON v.nazov_vyr=t2.nazov;
zvysenie ceny vyrobku
create view tab3 as select idvyr, nazov, cenavyrobna, cenavyr cenapredajna 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 idtypvyr, sum(cena_vyr) from vyrobky group by (idtypvyr);
create view tab4 as select idtypvyr, sum(cena_vyr) suma from vyrobky group by (idtypvyr);
select tv.idtypvyr, tv.nazovtypvyr, t4.suma from typ_vyr tv, tab4 t4 where tv.idtypvyr = t4.idtypvyr