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