Sunteți pe pagina 1din 12

BAZE DE DATE SEMINAR 3

___________________________________________________________________________
Structura bazei de date utilizata ca exemplu la seminar - Se considera activitatea
de evidenta a comenzilor incheiate de o societate comerciala cu diverse firme prin intermediul
agentilor angajati in cadrul societatii. Comenzile contin produse aflate in depozitul societatii,
iar pentru fiecare produs se cunoaste in permanenta stocul existent.
IRME
CODFI!" D#$FI!" %OC CO$&'"$C" (O$"
A!ENTI
COD")#$& $*!#")#$& D"&""$) D"&"$"S& (O$" F*$C&I# CODS#F
"#MENZI
$CO! CODFI!" COD")#$& D"&"
RAND"#M
$CO! COD+OD*S C"$& +#& &#!#$%I,
$R#D%SE
COD+OD*S D#$+OD*S *! S&OC
-
BAZE DE DATE SEMINAR 3
___________________________________________________________________________
RE"A$IT%&ARE "#MENZI &DD
1. CREAREA TABELELOR COMANDA CREATE TABLE
"REATE TAB&E nume_tabel
'
.... definirea cmuril!r "i a tiuril!r de date aferente
# definirea re$tric%iil!r de inte&ritate
()
Definirea restric.iilor / se poate realiza la nivel de c0mp 1in-line2 sau la nivelul ta3elei 1out-
of-line24
Sintaxa general54
"*nstraint nume_re$tric%ie tip+restric,ie [ 'cmurile cr!ra li $e alic re$tric%ia(]
&ipuri de restric.ii4
-. estric.ia de tip $RIMAR- .E-/
Constraint nume_restricie +I!"6 7#6 [ (cmpuri care formeaz cheia primar)]
8. estric.ia de tip #REI!N .E-/
Constraint nume_restricie FO#I)$ 7#6 (cmpul cheie extern) #F##$C#S
Tabel_printe (cmp cheie primar)
9. estric.ia de tip N#T N%&&/
Se define:te numai la nivelul c0mpului c5ruia i se aplic5 restric.ia4
#x4 nume VA!"A#(#$) %&T %'((
;. estric.ia de tip %NI0%E/
Constraint nume_restricie *$I<*# [ (cmp cheie unic)]
=. estric.ia de tip "1E"./
Constraint nume_restricie C>#C7 [ (con)iie asupra unui cmp)]
). MOD*+*CAREA ,TR-CT-R** TABELELOR . COMANDA ALTER
ealizeaza urmatoarele4
? !odificarea structurii ta3elei4 "DD, !ODIF6, DO+ CO%*!$, S#& *$*S#D
? !odificarea restrictiilor de integritate4 "DD, !ODIF6, DO+, DIS"'%#
CO$S&"I$&
? edenumeste ta3ela4 #$"!#
A&TER TAB&E nume_tabel
? ADD 'definire cmuri(/
8
BAZE DE DATE SEMINAR 3
___________________________________________________________________________
? M#DI- 'redefinire cmuri e0i$tente(/
? DR#$ "#&%MN cm/
? ADD "#NSTRAINT nume_re$tric%ie TI$+RESTRI"2IE 34)
? DR#$ "#NSTRAINT nume_re$tric%ie/
? DISAB&E "#NSTRAINT nume_re$tric%ie/
? ENAB&E "#NSTRAINT nume_re$tric%ie/
? RENAME T# nume_n!u_tabel/
1. ,TER2EREA TABELELOR COMANDA DRO3
DR#$ TAB&E nume_tabel "AS"ADE "#NSTRAINTS)
9
BAZE DE DATE SEMINAR 3
___________________________________________________________________________
RE"A$IT%&ARE "#MENZI &MD
1. ADA-2AREA DATELOR COMANDA *N,ERT
INSERT INT# TABE&A 5A&%ES '6&ISTA DE 5A&#RI $ENTR% IE"ARE
ATRIB%T7()
). MOD*+*CAREA DATELOR COMANDA -3DATE
%$DATE 6TABE&A7
SET 6"#&#ANA7 8 65A&#ARE7
91ERE 6"#NDITIE7)
1. ,TER2EREA DATELOR COMANDA DELETE
DE&ETE R#M 6TABE&A7
91ERE 6"#NDITIE7)
4. ,ELECT*A DATELOR COMANDA ,ELECT
SE&E"T 6DISTIN"T7 : ; < tabel=>4c?mp> 6alias7 < expresii AS A&IAS 444@
R#M tabel=>< tabel=A<4444
91ERE :c*ndi,ii< precizarea leB=turil*r dintre tabele@
!R#%$ B- tabel= 4c?mp
1A5IN! :c*ndi,ii impuse Cal*ril*r de Brup@
#RDER B- tabel= 4c?mp AS"DDES")
unde4
S#%#C& specific5 atri3utele selectate@
DIS&I$C& suprim5 valorile duplicate@
A selecteaz5 toate atri3utele@
atri3ut selecteaz5 coloana numit5@
expresie permite construirea de expresii si valori noi
alias denumiri pentru atri3utele selectate@
FO! ta3ele specific5 ta3elele ce con.in coloanele selectate.
B>## clauza permite specificarea conditiilor si a criteriilor de selectie
a datelor
)O*+ '6 se precizeaza campul dupa care vor fi grupate datele in cazul
expresiilor si functiilor de grup 1S*!12, ",)12, CO*$&12,
!I$12, !"C122
>",I$) in cazul functiilor de grup conditiile impuse acestora se
precizeaza in clauza >",I$)
OD# '6 precizeaza ordonarea in functie un anumite campuri ascendent
1"SC2 /implicit sau descendent 1D#SC2
;
BAZE DE DATE SEMINAR 3
___________________________________________________________________________
SE&E"TIA DATE&#R "#MANDA SE&E"T - c*ntinuare
%N"TII
unc,ii sinBle-r*E 'sau scalare(4 O func.ie single?roD Entoarce un singur r0nd rezultat
pentru fiecare r0nd al ta3elei interogate sau vieD
unc,ii de Brup 'sau aBreBate(4 O func.ie de grup Entoarce un singur r0nd rezultat pentru
un grup de r0nduri interogate. Func.iile de grup pot apare En clauza >",I$)
%N"2II DE !R%$
A5!'6DISTIN"TFA&&7 n( / calculeaza media elementelor
"#%NT':; F 6DISTIN"TFA&&7 expr@( / intoarce numarul total al elementelor
MAG'6DISTIN"TFA&&7 expr( / intoarce elementul maxim
MIN'6DISTIN"TFA&&7 expr( / intoarce elementul minim
S%M'6DISTIN"TFA&&7 n( ? calculeaza suma elementelor
Se utilizeaza urmatoarele clauze4
!R#%$ B- / grupeaza datele in functie de un anumit camp@
#RDER B- / ordoneaza datele in functie de un anumit camp@
1A5IN! / permite sta3ilirea unor criterii de selectie asupra functiilor de grup@
-. S5 se afi:eze valoarea maxim5, valoarea medie, valoarea minim5 :i valoarea total5 a
produselor comandate4
S#%#C& avg1rc.cant A rc.pret2, max1rc.cant A rc.pret2, min1rc.cant A rc.pret2,
sum1rc.cant A rc.pret2
FO! rindcom rc@
8. S5 se afi:eze data primei comenzi Encheiate :i data celei mai vechi comenzi Encheiate4
S#%#C& min1data2, max1data2
FO! comenzi@
9. S5 se afi:eze num5rul de produse al c5ror stocF8GG4
S#%#C& count1A2 $r_prod FO! produse B>## stocF8GG@
;. S5 se afi:eze num5rul total de comenzi incheiate4
S#%#C& count1nrcom2 $umar_Comenzi FO! comenzi@
=. S5 se afi:eze num5rul de produse v0ndute4
S#%#C& count1distinct1codprodus22 +roduse_,andute FO! rindcom@
=
BAZE DE DATE SEMINAR 3
___________________________________________________________________________
H. S5 se afi:eze cantitatea medie v0ndut5 din fiecare produs :i s5 se realizeze ordonarea
En func.ie de aceasta 1se utilizeaza functia ",)12 si clauza )O*+ '6 pt gruparea
datelor in functie de produse, iar ordonarea se realizeaza cu ajutorul functiei OD#
'6 2.
S#%#C& codprodus, avg1cant2 !edie_+rod FO! rindcom
)O*+ '6 codprodus
OD# '6 avg1cant2@
I. S5 se afi:eze produsele :i cantitatea medie v0ndut5 numai acele produse a c5ror
cantitate medie este mai mare de -=GG 1conditia se specifica in clauza >",I$) si nu
in clauza B>## deoarece este utilizata functia de grup ",) si conditia este
avg1cant2FJGG2
S#%#C& codprodus, avg1cant2 FO! rindcom
)O*+ '6 codprodus
>",I$) avg1cant2FJGG@
J. Sa se calculeze valoarea totala a fiecarei comenzi si sa se sorteze descrescator in
functie de valoare4
S#%#C& comenzi.nrcom, S*!1rindcom.cant A rindcom.pret2 &otal_Comanda
FO! comenzi, rindcom
B>## rindcom.nrcomKcomenzi.nrcom
)O*+ '6 comenzi.nrcom
OD# '6 &otal_Comanda D#SC@
L. Sa se afiseze numai comenzile care au valoarea cuprinsa intre 9 si = mil 1conditia va fi
mentionata in clauza >",I$) pt ca se utilizeaza o functie de grup ? S*!24
S#%#C& comenzi.nrcom, S*!1rindcom.cant A rindcom.pret2 &otal_Comanda
FO! comenzi, rindcom
B>## rindcom.nrcomKcomenzi.nrcom
)O*+ '6 comenzi.nrcom
>",I$) S*!1rindcom.cant A rindcom.pret2 '#&B##$ -GGGGGG "$D 9GGGGGG
OD# '6 &otal_Comanda D#SC@
%N"TII SIN!&E-R#9
unc,ii de tip caracter
#perat*rul de c*ncatenare 1 MM 2
-G. S5 se afi:eze denumirea produsului :i stocul disponi3il
S#%#C& Nprodusul4 N MM initcap1denprodus2MM N are stocul diponi3il N MM stoc
FO! produse@
H
BAZE DE DATE SEMINAR 3
___________________________________________________________________________
unctia &#9ER'( < %$$ER'(
--. Sa se afiseze firmele din zona OmunteniaP4
S#%#C& codfirma, upper1denfirma2, upper1loc2, upper1zona2
FO! firme
B>## loDer1zona2KPmunteniaP@
unc,ia "#N"AT'( < Hunc,ia &EN!T1'( < Hunc,ia S%BSTR'(
-8. S5 se afi:eze denumirea firmei concatenat5 cu localitatea :i lungimea atri3utului
denumirea firmei, numai pentru localit5.ile al c5ror nume Encepe cu QCR
S#%#C& denfirma, concat1denfirma,loc2, length1denfirma2
FO! firme
B>## su3str1loc,-,-2KNCN@
unc,ii de tip numeric
unc,ia R#%ND'(
-9. S5 se afi:eze num5rul ;=,L89 rotunjit la dou5 zecimale
S#%#C& round1;=.L89,82, round1;=.L89,G2 FO! dual@
unc,ii de tip dat= calendaristic=
unc,ile S-SDATE
-;. S5 se afi:eze perioada de timp corespunz5toare 1En s5pt5m0ni2 Entre data Encheierii
comenzii :i data curent54
S#%#C& nrcom, round11sSsdate?data2TI2 saptamani
FO! comenzi@
-=. "fisati data curenta 1se selecteaza data din ta3ela *'A(24
S#%#C& sSsdate D"&"_C*#$&" FO! D*"%@
unc,iile M#NT1+BET9EEN'( < ADD+M#NT1S'( < NEGT+DA-'( < &AST+DA-'(
-H. S5 se afi:eze comenzile, data Encheierii comenzilor, num5rul de luni Entre data curent5
:i data Encheierii, urm5toarea zi de vineri dup5 data Encheierii, ultima zi din luna din care
face parte data Encheierii, precum :i data corespunz5toare dup5 8 luni de la data Encheierii
S#%#C& nrcom, data,
round1!O$&>S_'#&B##$1sSsdate, data22 luni,
"DD_!O$&>S1data,82,
I
BAZE DE DATE SEMINAR 3
___________________________________________________________________________
$#C&_D"61data, NFID"6N2, %"S&_D"61data2
FO! comenzi@
-I. S5 se afi:eze comenzile incheiate in luna trecuta4
S#%#C& nrcom, data FO! comenzi
B>## round1!O$&>S_'#&B##$1sSsdate, data22K-@
unc,ia R#%ND'(
-J. S5 se afi:eze comenzile incheiate in 8GG;. Se va rotunji data Encheierii la prima zi din
luna corespunz5toare dac5 data Encheierii este En prima jumatate a lunii sau la prima zi din
luna urm5toare4
S#%#C& nrcom, data, O*$D1data, N!O$&>N2
FO! comenzi
B>## data %I7# NUG;N@
unc,ii de c*nCersie
unc,ia T#+"1AR'd 6< Hmt 7(
-L. S5 se afi:eze comenzile :i data Encheierii in format Q!!T66R
S#%#C& nrcom, &O_C>"1data, N!!T66N2 data_incheierii
FO! comenzi@
unc,ia T#+DATE'cIar 6< Hmt 7(
unc,ia T#+N%MBER'cIar 6<Hmt 7(
8G. S5 se afi:eze comenzile :i data Encheierii En formatul Q !onth dd, 6666R
S#%#C& nrcom, data
FO! comenzi
B>## dataK&O_D"&#1 NVanuarS -=, 8GG=N, N!onth dd,6666N2@
unc,ia EGTRA"T '(

8-. S5 se afi:eze informa.ii despre comenzile Encheiate En anul 8GG;
S#%#C& nrcom, data
FO! comenzi
B>## #C&"C& 16#" from data2 K 8GG;@
J
BAZE DE DATE SEMINAR 3
___________________________________________________________________________
"REAREA %NEI TABE&E $E BAZA "AM$%RI&#R DIN A&TA TABE&A/
C#"&# &"'%# nume_tabela
"S
S#%#C& [+, nume campuri]
FO! nume_tabela_sursa
[-".. con)itie]/
Exemplu4 &a3ela firme_3uc va contine firmele din 'ucuresti
C#"&# &"'%# FI!#_'*C
"S
S#%#C& A FO! FI!#
B>## %OCKN'*C*#S&IN@
ADA%!AREA DATE&#R $E BAZA 5A&#RI&#R DIN A&TE TABE&E/
I$S#& I$&O nume_tabela
S#%#C& [+, nume campuri]
FO! nume_tabela_sursa
[-".. con)itie]/
Exemple/
Sa se creeze ta3ela S&OC_!I$ cu aceeasi structura cu a ta3elei +OD*S# care sa contina
informatii depre produsele cu stocul mai mic decat -GGG unitati.
Create ta3le stoc_min as select A from produse Dhere 8K9@
I$S#& I$&O S&OC_!I$
S#%#C& A
FO! +OD*S#
B>## S&OCWK-GGG@
select A from stoc_min@
L
BAZE DE DATE SEMINAR 3
___________________________________________________________________________
!ESTI%NEA A&T#R #BIE"TE A&E BAZEI DE DATE
>4 TABE&E 5IRT%A&E
"REATE 6#R RE$&A"E7 6#R"EFN##R"E7 5IE9 nume_5ie6
AS
$ubcerere
69IT1 READ #N&-7
Sa se realizeze o ta3ela virtuala cu toate firmele din 'ucuresti4
C#"&# ,I#B firme_3uc_v
"S
S#%#C& A FO! firme
B>## upper1loc2KN'*C*#S&IN@
S#%#C& A FO! firme_3uc_v@
Sa se realizeze o ta3ela virtuala care sa contina numai produsele pentru care unitatea de
masura 1um2KP3ucP.
C#"&# ,I#B +OD_'*C_,
"S
S#%#C& codprodus COD_+OD*S, denprodus D#$*!I#, um *$I&"&#
FO! produse
B>## umKN3ucN@
S#%#C& A FO! +OD_'*C_,@
Sa se stearga inregistrarile din ta3ela virtuala +OD_'*C_, pentru produsele care au stocul
mai mare de -GGG.
D#%#&# FO! +OD_'*C_,
B>## S&OCF-GGG@
Sa realizeze o ta3ela virtuala cu toti agentii din !untenia. &a3ela virtuala nu va putea fi
actualizata4
C#"&# ,I#B agenti_zona_v
"S S#%#C& A FO! agenti
B>## upper1zona2KN!*$&#$I"N
BI&> #"D O$%6@
S#%#C& A FO! firme_3uc_v@
Sa se stearga ta3ela virtuala +OD_'*C_,4
DO+ ,I#B +OD_'*C_,@
,izualizarea informatiilor despre ta3elele virtuale4
-G
BAZE DE DATE SEMINAR 3
___________________________________________________________________________
S#%#C& ,I#B_$"!#, &#C& FO! *S#_,I#BS@
A4 INDE"SI
? +ermit accesul rapid la date prin sortarea logica a inregistrarilor.
? Sunt gestionati automat de catre serverul Oracle.
? Se creaza automat la introducerea unei restrictii de cheie primara sau de unicitate sau
manual de catre utilizator.
"REATE INDEG nume_inde0 #N Nume_tabel 'cm(/
DR#$ INDEG nume_inde0/
#xemple4
Sa se creeze un index pe ta3ela agenti pe coloana numeagent4
C#"&# I$D#C ")#$&I_$*!#")_IDC O$ ")#$&I1$*!#")#$&2@
,izualizarea inecsilor unui anumit utilizator4
Select A from user_indexes@
Sa se strearga indexul creat anterior4
DO+ I$D#C ")#$&I_$*!#")_IDC@
34 SE"5ENTE
? Sunt utilizate pentru asigurarea unicitatii cheilor primare sau a valorilor pentru care s?a
impus o restrictie de tip *$I<*#.
? +ot fi utilizate pentru mai multe ta3ele.
? +entru fiecare secventa se va preciza valoarea de inceput, pasul de incrementare si
valoarea maxima generate.
"REATE SE0%EN"E nume_$ec5en%
STRAT 9IT1 5al!are_ini%ial
IN"REMENT B- a$ul_de_incrementare
MAG5A&%E 5al!are_ma0im
N#"-"&E)
A&TER SE0%EN"E nume_$ec5en% #.../
DR#$ SE0%EN"E nume_$ec5en%/
#xemple4
Sa se creeze o secventa pentru asigurarea unicitatii cheii primare din ta3ela Comenzi.
Create seXuence seX_nrcomanda
start Dith =GG Increment 3S -G
--
BAZE DE DATE SEMINAR 3
___________________________________________________________________________
!axvalue -GGG nocScle@
Insert into comenzi values 1seX_nrcomanda.nextval, N-GN, N9N, to_date1Noct -8,G=N, Nmon dd,SSN22@
Sa se afiseze valoarea curenta a secventei4
Select seX_rcomanda.currval from dual@
Sa se modifice pasul de incrementare pentru secventa anterioara4
"lter seXuence seX_nrcomanda increment 3S -GG@
Sa se strearga secventa seX_rcomanda4
Drop seXuence seX_rcomanda@
Sa se vizualizeze informatiile depre secventele utilizatorilor4
Select A from user_seXuences@
J4 SIN#NIME
? Sunt nume alternative utilizate pentru referirea o3iectelor unei 3aze de date
? +ot fi sinonime pu3lice 1accesi3ile tuturor utilizatorilor2 sau private.
? Sinonimele pu3lice pot fi create numai de administratorul 3azei de date
"REATE S-N#N-M nume_$in!nim #R nume_tabel)
DR#$ S-N#N-M nume_$in!nim/
#xemple4
Sa se creeze un sinonim pentru ta3ela rindcom4
Create sSnonSm detalii_comanda for rindcom@
Sa se strearga sinonimul creat anterior4
Drop sSnonSm detalii_comanda@
,izualizarea sinonimelor se realizeaza astfel
Select A from user sSnonSms@
-8

S-ar putea să vă placă și