Príklady SQL
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 39;,'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& #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 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