Sunteți pe pagina 1din 13

LABORATOR 9 SQL

Vizualizri. Vizualizri materializate. Secvene. Indeci. Sinonime. Tabele temorare. Cluster.


In!ormaii din dicionarul datelor.
I. Vizualizri. Vizualizri materializate. Secvene. Indeci. Sinonime. Tabele temorare. Cluster
"e!inirea vizualizrilor
Vizualizrile sunt tabele virtuale care sunt construite pe baza unor tabele sau vizualizri,
denumite tabele de baz. Ele nu conin date ci sunt ca nite imagini logice asupra datelor din tabelele
de baz. Sunt definite de o cerere SQL, de aceea mai sunt denumite i cereri stocate.
Avantaele utilizrii vizualizrilor!
- restricionarea accesului la date"
- simplificarea unor cereri comple#e"
- prezentarea de diferite imagini asupra datelor.
Vizualizrile se pot fi simple sau comple#e. Asupra vizualizrilor simple se pot realiza operaii
L$%. Asupra vizualizrilor comple#e nu sunt posibile operaii L$% &n toate cazurile dec't dac sunt
definii declanatori de tip ()S*EA% +,.
#aracteri$tici Simle #omle%e
)umr de tabele de baza -n singur tabel -nul sau mai multe tabele
.onine funcii )u %a
.onine grupri de date )u %a
Sinta#a simplificat a comenzii ./EA*E V(E0 este!
./EA*E 1+/ /E2LA.E3 1,+/.E 4 )+,+/.E3 V(E0 nume5vie6 17alias, alias, ..83
AS subcerere
10(*9 .9E.: +2*(+) 1.+)S*/A()* nume5constr33
10(*9 /EA% +)L; 1.+)S*/A()* nume5constr33"
- ,+/.E permite crearea vizualizarea &nainte de a defini tabelele de baz"
- subcererea poate fi oric't de comple# dar nu poate conine clauza +/%E/ <;"
- 0(*9 .9E.: +2*(+) permite inserarea i modificarea prin intermediul vizualizrii numai
a liniilor ce sunt accesibile vizualizrii" dac lipsete numele constr'ngerii atunci sistemul
asociaz un nume implicit de tip S;S5.n acestei constr'ngeri"
- 0(*9 /EA% +)L; asigur c prin intermediul vizualizrii nu se pot e#ecuta operaii L$%.
)u se pot realiza operaii L$% &n vizualizri ce conin!
- funcii grup,
- clauza =/+-2 <; sau 9AV()=,
- cuv'ntul c>eie %(S*().*,
- pseudocoloana /+0)-$,
- coloane definite de e#presii,
- coloane )+* )-LL din tabelul de baz, care nu sunt incluse &n coloanele vizualizrii.
- linii ce nu sunt accesibile vizualizrii 7&n cazul utilizrii clauzei 0(*9 .9E.: +2*(+)8.
)u se pot actualiza!
? coloane ale cror valori rezult prin calcul sau definite cu autorul funciei %E.+%E,
? coloane care nu respect constr'ngerile din tabelele de baz.
2entru vizualizrile bazate pe mai multe tabele, orice operaie ()SE/*, -2%A*E sau %ELE*E
poate modifica datele doar din unul din tabelele de baz. Acest tabel este cel proteat prin c>eie 7@eA
preserved8.
Eliminarea unei vizualizri se face prin comanda %/+2 V(E0 !
%/+2 V(E0 nume5viz"
Observaie:
Subcererile temporare caracterizate de un alias ce apar &n comenzile SELE.*, ()SE/*.
-2%A*E, %ELE*E, $E/=E se numesc vizualizai inline 7de e#emplu o subcerere utilizat
&n clauza ,/+$ a comenzii SELE.*8. Spre deosebire de vizualizrile propriu?zise acestea
nu sunt considerate obiecte ale sc>emei i sunt entiti temporare.
Observaie:
/eactualizarea tabelelor implic reactualizarea corespunztoare a vizualizrilor.
/eactualizarea vizualizrilor nu implic &ntotdeauna reactualizarea tabelelor de baz.
&. S se creeze vizualizarea v_emp_*** care s conin codul i numele salariailor din tabelul emp_***.
S se afieze coninutul acesteia. S se insereze o nou &nregistrare &n aceast vizualizare. .e
observaiB S se tearg vizualizarea v5emp5CCC.
CREATE VIEW v_emp_*** (cod, nume)
AS SELECT employee_id, last_name
R!" emp_***#
I$SERT I$T! v_emp_***
VAL%ES (&'',($)()#
*R!+ VIEW v_emp_***#
'. S se creeze vizualizarea v_emp_*** care s conin codul, numele, emailul, data angarii, salariul i
codul obului salariailor din tabelul emp_***. S se analizeze structura i coninutul vizualizrii. S
se insereze o nou &nregistrare &n aceast vizualizare. S se verifice c noua &nregistrare a fost inserat
i &n tabelul de baz.
Observaie ! *rebuie introduse neaprat &n vizualizare coloanele care au constr'ngerea )+* )-LL &n
tabelul de baz 7altfel, c>iar dac tipul vizualizrii permite operaii L$%, acestea nu vor fi posibile
din cauza nerespectrii constr'ngerilor )+* )-LL8.
CREATE VIEW v_emp_***
AS SELECT employee_id, last_name, email, ,i-e_date, sala-y,.o/_id
R!" emp_***#
*ESC v_emp_***
SELECT * R!" v_emp_***#
I$SERT I$T! v_emp_***
VAL%ES (&'',($)(,(E)(,S0S*ATE,1''',(SA_RE+()#
SELECT employee_id, last_name, email, ,i-e_date, sala-y, .o/_id
R!" emp_***#
(. S se mreasc cu DEEE salariul angaatului av'nd codul FEE din vizualizarea creat anterior. .e efect
va avea aceast aciune asupra tabelului de bazB
%+*ATE v_emp_***
SET sala-y2sala-y3)'''
W4ERE employee_id 2 &''#
SELECT employee_id, last_name, sala-y
R!" emp_***
W4ERE employee_id 2 &''#
). S se tearg angaatul av'nd codul FEE din vizualizarea creat anterior. .e efect va avea aceast
aciune asupra tabelului de bazB
*ELETE R!" v_emp_***
W4ERE employee_id 2 &''#
SELECT employee_id, last_name, sala-y
R!" emp_***
W4ERE employee_id 2 &''#
*. a+ S se creeze vizualizarea v_emp_dept_*** care s conin employee_id, last_name, hire_date,
job_id, department_id din tabelul emp_*** i coloana department_name din tabelul dept_***.
CREATE VIEW v_emp_dept_***
AS SELECT employee_id, last_name, email, ,i-e_date, .o/_id,
e5depa-tment_id, depa-tment_name
R!" emp_*** e, dept_*** d
W4ERE e5depa-tment_id 2d5depa-tment_id#

b+ S &ncerce inserarea &nregistrrii 7GEE, H)IH, HEIH,S;S%A*E,JSA5/E2J,KE, HAdministrativH8 &n
vizualizarea creat anterior.
I$SERT I$T! v_emp_dept_***
VAL%ES (1'', 6$76, 6E76,S0S*ATE,(SA_RE+(,8', 6Administ-ativ6)#

c+ .are dintre coloanele vizualizrii v_emp_dept_*** sunt actualizabileB
SELECT *
R!" use-_updata/le_columns
W4ERE %++ER(ta/le_name) 2 %++ER(6v_emp_dept_***6)#

d+ Adugai tabelului emp_*** constr'ngerea de c>eie e#tern care refer tabelul dept_***, apoi
verificai ce coloane din vizualizarea v_emp_dept_*** sunt actualizabile.
ALTER TA9LE emp_***
A** C!$STRAI$T cp_emp_*** +RI"AR0 :E0 (employee_id)#

ALTER TA9LE dept_***
A** C!$STRAI$T cp_dept)_*** +RI"AR0 :E0 (depa-tment_id)#

ALTER TA9LE emp_***
A** C!$STRAI$T ce_emp)_*** !REI;$ :E0 (depa-tment_id)
REERE$CES dept_***(depa-tment_id)#
SELECT *
R!" use-_updata/le_columns
W4ERE %++ER(ta/le_name) 2 %++ER(6v_emp_dept_***6)#
d+ /ecreai vizualizarea v_emp_dept_***, apoi verificai ce coloane sunt actualizabile.
*R!+ VIEW v_emp_dept_***#
CREATE VIEW v_emp_dept_***
AS SELECT employee_id, last_name, email, ,i-e_date, .o/_id,
e5depa-tment_id, depa-tment_name
R!" emp_*** e, dept_*** d
W4ERE e5depa-tment_id 2d5depa-tment_id#
SELECT column_name, updata/le
R!" use-_updata/le_columns
W4ERE %++ER(ta/le_name) 2 %++ER(6v_emp_dept_***6)#
!+ (nserai o linie prin intermediul acestei vizualizri.
Obs. *abelul ale crui coloane sunt actualizabile este proteat prin c>eie.
I$SERT I$T! v_emp_dept_*** (employee_id, last_name,email,,i-e_date,
.o/_id, depa-tment_id)
VAL%ES (1'', 6$76, 6E76,S0S*ATE,(SA_RE+(,8')#
,+ .e efect are o operaie de tergere prin intermediul vizualizrii v_emp_dept_***B .omentai.

*ELETE R!" v_emp_dept_***
W4ERE employee_id 2 1''#
SELECT employee_id, last_name, ,i-e_date, .o/_id, depa-tment_id
R!" emp_***
W4ERE employee_id 2 1''#
SELECT depa-tment_id, depa-tment_name
R!" dept_***
W4ERE depa-tment_id 2 8'#
-. %efinii o vizualizare, v_emp_s_*** care s conin detalii despre angaaii corespunztori
departamentelor care &ncep cu litera S. Se pot inseraLactualiza linii prin intermediul acestei vizualizriB
Mn care dintre tabeleB .e se &nt'mpl la tergerea prin intermediul vizualizriiB
CREATE !R RE+LACE VIEW v_emp_s_***
AS SELECT employee_id, last_name, email, ,i-e_date, .o/_id,
e5depa-tment_id, depa-tment_name
R!" emp_*** e, dept_*** d
W4ERE e5depa-tment_id 2 d5depa-tment_id
A$* %++ER(depa-tment_name) LI:E 6S<6#
?? prin intermediul vizualizrii se insereaz &n tabelul de baz
I$SERT I$T! v_emp_s_*** (employee_id, last_name, email,
,i-e_date, .o/_id)
VAL%ES (777, =n777(, =e777(, S0S*ATE, =SA_RE+()#
??comanda nu este permis deoarece se &ncearc actualizarea unei coloane care nu este din tabela proteat
prin c>eie
%+*ATE v_emp_s_***
SET depa-tment_name2(Van>a-i(
W4ERE depa-tment_id2?'#
??comanda nu afecteaz nici o linie deoarece angaatul III are department5id i department5name nule,
deci nu se regsete &n vizualizare
*ELETE R!" v_emp_s_***
W4ERE employee_id2777#
SELECT *
R!" emp_***
W4ERE employee_id2777#
.. S se creeze vizualizarea v_dept_*** care s conine codul i numele departamentului, numrul de
angaai din departamentul respectiv i suma alocat pentru plata salariilor. Aceast vizualizare
permite actualizriB
CREATE VIEW v_dept_*** (cod, nume, n-_an@a.ati, val_sala-ii)
AS SELECT e5depa-tment_id, depa-tment_name, C!%$T(*) n-_an@a.ati,
S%"(sala-y) val_sala-ii
R!" emp_*** e, dept_*** d
W4ERE e5depa-tment_id 2 d5depa-tment_id
;R!%+ 90 e5depa-tment_id, depa-tment_name#
/. a+ S se creeze vizualizarea v_emp30_*** care s conin numele, emailul, data angarii, salariul,
codul obului i codul departamentului celor care lucreaz &n departamentul KE. Mn aceast
vizualizare nu se va permite modificarea sau inserarea liniilor ce nu sunt accesibile ei. %ai un nume
constr'ngerii.

CREATE VIEW v_emp8'_***
AS SELECT employee_id, last_name, email, ,i-e_date, sala-y, .o/_id,
depa-tment_id
R!" emp_***
W4ERE depa-tment_id28'
WIT4 C4EC: !+TI!$ C!$STRAI$T cA_option)_***#

b+ S se listeze structura i coninutul vizualizrii v_emp30_***.

*ESCRI9E v_emp8'_***
SELECT * R!" v_emp8'_***#

c+ S se &ncerce prin intermediul vizualizrii inserarea unui angaat &n departamentul DE i a unui
angaat &n departamentul KE.
I$SERT I$T! v_emp8'_***
VAL%ES ())), 6$)6, 6E)6,S0S*ATE,)''',(SA_RE+(,)')#
I$SERT I$T! v_emp8'_***
VAL%ES ()), 6$))6, 6E))6,S0S*ATE,)''',(SA_RE+(,8')#
d+ S se &ncerce prin intermediul vizualizrii modificarea departamentului unui angaat.
%+*ATE v_emp8'_***
SET depa-tment_id 27'
W4ERE employee_id 2 ))#
9. S se creeze vizualizarea v_dept_*** asupra tabelului dept_*** s nu permit efectuarea nici unei
operaii L$%. *estai operaiile de inserare, modificare i tergere asupra acestei vizualizri.
CREATE VIEW v_dept_***
AS SELECT *
R!" dept_***
WIT4 REA* !$L0#
&0. S se consulte informaii despre vizualizarea v_emp_s_***. ,olosii vizualizarea dicionarului datelor
USER_VE!S 7coloanele VE!_"#$E i %E&%8.
Obs: .oloana *EN* este de tip L+)=. Mn cazul selectrii unei coloane de tip L+)= trebuie utilizat
comanda SE% 'O"( n pentru a seta numrul de caractere afiate.
SET L!$; 7''
SELECT vieB_name, teCt
R!" use-_vieBs
W4ERE %++ER(vieB_name)2%++ER((v_emp_s_***()#
&&. S se creeze vizualizarea v_emp_in)o_*** asupra tabelului emp_*** care conine codul, numele,
prenumele, emailul i numrul de telefon ale angaailor companiei. Se va impune unicitatea valorilor
coloanei email i constr'ngerea de c>eie primar pentru coloana corespunztoare codului angaatului.
Observaie: .onstr'ngerile asupra vizualizrilor pot fi definite numai &n modul *S#+'E
"OV#'*#%E. Aceste cuvinte c>eie trebuie specificate la declararea constr'ngerii, nefiind permis
precizarea altor stri.
CREATE VIEW v_emp_inDo_*** (
employee_id, Di-st_name, last_name, email %$IE%E *ISA9LE $!VALI*ATE,
p,one_num/e-,
C!$STRAI$T ccp_*** +RI"AR0 :E0 (employee_id) *ISA9LE $!VALI*ATE)
AS SELECT employee_id, Di-st_name, last_name, email, p,one_num/e-
R!" emp_***#
&'. S se creeze vizualizarea v_mana,er_*** care s conin informaii despre toi managerii. S se
adauge o constr'ngere de c>eie primar asupra vizualizrii v_mana,er_***.
ALTER VIEW v_mana@e-_***
A** C!$STRAI$T ccp_v_mana@e- +RI"AR0 :E0 (employee_id)
*ISA9LE $!VALI*ATE#
"e!inirea vizualizrilor materializate
+ vizualizare materializat, cunoscut &n versiunile anterioare sub numele de clieu 7snapshot8, este
un obiect al sc>emei ce stoc>eaz rezultatele unei cereri i care este folosit pentru a rezuma, calcula,
replica i distribui date.
./EA*E $A*E/(AL(OE% V(E0 nume
1refres>3 1,+/ -2%A*E3
1 P%(SA<LE 4 E)A<LEQ Q-E/; /E0/(*E3 AS subcerere"
refres> RP/E,/ES9
1 P,AS* 4 .+$2LE*E 4 ,+/.EQ 3 1+) P%E$A)% 4 .+$$(*Q 3
1S*A/* 0(*9 data3 1)EN* data3
4 )EVE/ /E,/ES9Q
- -#S% indic metoda de reactualizare incremental, care se efectueaz corespunztor modificrilor
survenite &n tabelele de baz.
- .O$/'E%E implic reactualizarea complet, care se realizeaz prin ree#ecutarea complet a
cererii din definiia vizualizrii materializate.
- -OR.E este implicit i presupune reactualizarea de tip -#S%, dac este posibil. Mn caz contrar,
reactualizarea va fi de tip .O$/'E%E.
- O" .O$$% indic declanarea unei operaii de reactualizare de tip -#S% ori de c'te ori sistemul
permanentizeaz o tranzacie care opereaz asupra unui tabel de baz al vizualizrii materializate.
- O" *E$#"* este implicit i indic efectuarea reactualizrii vizualizrii materializate la cererea
utilizatorului, prin intermediul procedurilor specifice din pac>etul *+$S_$VE! 7RE-RES0,
RE-RES0_#''_$VE!S, RE-RES0_*E/E"*E"%8.
- S%#R% !%0 i "E&% nu pot fi specificate dac s?au precizat clauzele O" .O$$% sau O"
*E$#"*. E#presiile de tip dat calendaristic indicate &n cadrul acestor opiuni specific
momentul primei reactualizri automate i determin intervalul dintre dou reactualizri automate
consecutive.
- "EVER RE-RES0 previne reactualizarea vizualizrii materializate prin mecanisme Ora1le sau
prin proceduri. 2entru a permite reactualizarea, trebuie efectuat o operaie #'%ER
$#%ER#'2E* VE!3RE-RES0.
- -OR U/*#%E permite actualizarea unei vizualizri materializate.
- 4UER5 RE!R%E permite specificarea faptului c vizualizarea materializat este eligibil pentru
operaia de rescriere a cererilor.
&(. S se creeze vizualizarea materializat vm5dept5CCC care s conine codul i numele departamentului,
numrul de angaai din departamentul respectiv i suma alocat pentru plata salariilor. /eactualizrile
ulterioare ale acestei vizualizri se vor realiza prin ree#ecutarea cererii din definiie, dup
permanentizarea modificrilor asupra tabelelor de baz. S se insereze un nou angaat &n
departamentul DDE 7tabelul emp5CCC8 i s se observe modificrile aprute &n vizualizare.
CREATE "ATERIALIFE* VIEW vm_dept_***
RERES4 !$ C!""IT
AS SELECT e5depa-tment_id, depa-tment_name, C!%$T(*) n-_an@a.ati,
S%"(sala-y) val_sala-ii
R!" emp_*** e, dept_*** d
W4ERE e5depa-tment_id 2 d5depa-tment_id
;R!%+ 90 e5depa-tment_id, depa-tment_name#
SELECT * R!" vm_dept_***#
I$SERT I$T! emp_***(employee_id,last_name,email,,i-e_date,
.o/_id,sala-y,depa-tment_id)
VAL%ES(1'',6C6,6C6,sysdate,6C6,)''',))')#
SELECT * R!" vm_dept_***#
C!""IT#
SELECT * R!" vm_dept_***#
&). a+ S se creeze o vizualizare materializat care conine informaiile din tabelul dept_*** i este
reactualizat la momentul crerii, iar apoi la fiecare G minute.
CREATE "ATERIALIFE* VIEW vm_dept_***
RERES4 START WIT4 S0S*ATE $EGT S0S*ATE 3 )H7??
AS SELECT * R!" dept_***#
b+ S se creeze i s se completeze cu &nregistrri o vizualizare materializat care va conine numele
oburilor, numele departamentelor i suma salariilor pentru un ob, &n cadrul unui departament.
/eactualizrile ulterioare ale acestei vizualizri se vor realiza prin ree#ecutarea cererii din definiie.
CREATE "ATERIALIFE* VIEW .o/_dep_sal_pnu
9%IL* I""E*IATE
RERES4 C!"+LETE
AS SELECT d5depa-tment_name, .5.o/_title, S%"(sala-y)suma_sala-ii
R!" employees e, depa-tments d, .o/s .
W4ERE e5depa-tment_id 2 d5 depa-tment_id
A$* e5.o/_id 2 .5.o/_id
;R!%+ 90 d5depa-tment_name, .5.o/_title#
"e!inirea $ecvenelor
+ secven este un obiect al bazei de date ce permite generarea de numere &ntregi unice cu scopul de a
fi folosii ca valori pentru c>eia primar sau coloane numerice unice. Secvenele sunt independente de
tabele.
Sinta#a comenzii ./EA*E SEQ-E).E este!
./EA*E SEQ-E).E nume5secven
1()./E$E)* <; n3
1S*A/* 0(*9 valoare5start3
1 P$ANVAL-E valoare5ma#im 4 )+$ANVAL-EQ 3
1 P$()VAL-E valoare5minim 4 )+$()VAL-EQ 3
1 P.;.LE 4 )+.;.LEQ 3
1 P.A.9E n 4 )+.A.9EQ 3"
? ".RE$E"% +5 specific diferena dintre valorile succesive ale secvenei 7valoare implicit D8.
? S%#R% !%0 specific primul numr care va fi generat de secven 7valoare implicit D8.
? $#&V#'UE, $"V#'UE precizeaz valoarea ma#im, respectiv minim pe care o poate genera
secvena. +piunile "O$#&V#'UE, "O$"V#'UE sunt implicite. "O$#&V#'UE specific
valoarea ma#im de DE
IS
pentru o secven cresctoare i ?D pentru o secven descresctoare.
"O$"V#'UE specific valoarea minim D pentru o secven cresctoare i ?DE
IT
pentru o secven
descresctoare.
? .5.'E i "O.5.'E specific dac secvena continu s genereze numere dup obinerea valorii
ma#ime sau minime. "O.5.'E este opiunea implicit.
? .#.0E n precizeaz numrul de valori pe care server?ul Ora1le le prealoc i le pstreaz &n
memorie. Mn mod implicit, acest numr de valori este IE. +piunea .#.0E pemite accesul mai rapid la
valorile secvenei care sunt pstrate &n memorie. Aceste valori sunt generate la prima referin asupra
secvenei. ,iecare valoare din secven se furnizeaz din secvena memorat. %up utilizarea ultimei
valori prealocate secvenei, urmtoarea solicitare a unei valori determin &ncrcarea unui alt set de
numere &n memorie. 2entru a nu fi prealocate i reinute &n memorie astfel de valori, se utilizeaz
opiunea "O.#.0E.
2seudocoloanele )EN*VAL i .-//VAL permit utilizarea secvenelor.
- nume5secv.)EN*VAL returneaz urmtoarea valoare a secvenei, o valoare unic la fiecare
referire. *rebuie aplicat cel puin o dat &nainte de a folosi .-//VAL"
- nume5secv..-//VAL returneaz valoarea curent a secvenei.
2seudocoloanele )EN*VAL i .-//VAL se pot utiliza &n!
- lista SELE.* a comenzilor ce nu fac parte din subcereri"
- lista SELE.* a unei cereri ce apare &ntr?un ()SE/*"
- clauza VAL-ES a comenzii ()SE/*"
- clauza SE* a comenzii -2%A*E.
2seudocoloanele )EN*VAL i .-//VAL nu se pot utiliza!
- &n lista SELE.* a unei vizualizri"
- &ntr?o comand SELE.* ce conine %(S*().*, =/+-2 <;, 9AV()= sau +/%E/ <;"
- &ntr?o subcerere &n comenzile SELE.*, -2%A*E, %ELE*E"
- &n clauza %E,A-L* a comenzilor ./EA*E *A<LE sau AL*E/ *A<LE.
Utergerea secvenelor se realizeaz cu autorul comenzii %/+2 SEQ-E).E.
%/+2 SEQ-E).E nume5secv"
&*. S se creeze o secven care are pasul de incrementare DE i &ncepe de la DE, are ca valoare ma#im
DEEEE i nu cicleaz.
CREATE SEE%E$CE sec_***
I$CRE"E$T 90 )'
START WIT4 )'
"AGVAL%E )''''
$!C0CLE#
&-. S se modifice toate liniile din tabelul emp5CCC, regener'nd codul angaailor astfel &nc't s utilizeze
secvena sec5empCCC.
%+*ATE emp_***
SET employee_id 2 sec_emp***5$EGTVAL#
R!LL9AC:#
&.. S se introduc un nou salariat &n tabelul emp5CCC folosindu?se pentru codul salariatului secvena
creat.
I$SERT I$T! emp_*** (employee_id,last_name,email,,i-e_date,.o/_id)
VAL%ES(sec_emp***5$EGTVAL,6C6,6C6,sysdate,6C6)#
R!LL9AC:#
&/. S se afieze valoarea curent a secvenei.
SELECT sec_***5C%RRVAL valoa-e
R!" *%AL#
1%erciiu
a+ .reai o secven pentru generarea codurilor de departamente, seV5dept5CCC. Secvena va &ncepe
de la IEE, va crete cu DE la fiecare pas i va avea valoarea ma#im IEEEE, nu va cicla.
b+ S se selecteze informaii despre secvenele utilizatorului curent 7nume, valoare minim,
ma#im, de incrementare, ultimul numr generat8. Se va utiliza vizualizarea 6ser_se76en1es.
c+ S se insereze o &nregistrare nou &n dept_*** utiliz'nd secvena creat. Anulai modificrile
efectuate.
d+ S se selecteze valoarea curent a secvenei.
e+ S se tearg secvena.
"e!inirea indecilor
-n inde# este un obiect al unei sc>eme utilizator care este utilizat de server?ul +racle pentru a mri
performanele unui anumit tip de cereri asupra unui tabel.
(ndecii!
- evit scanarea complet a unui tabel la efectuarea unei cereri"
- reduc operaiile de citireLscriere de pe disc utiliz'nd o cale mai rapid de acces la date i anume
pointeri la liniile tabelului care corespund unor anumite valori ale unei c>ei 7coloane8"
- sunt independeni de tabelele pe care le inde#eaz, &n sensul c dac sunt teri nu afecteaz
coninutul tabelelor sau comportamentul altor indeci"
- sunt meninui i utilizai automat de ctre server?ul +racle"
- sunt teri odat cu eliminarea tabelului asociat.
(ndecii pot fi creai !
- automat! la definirea unei constr'ngeri 2/($A/; :E; sau -)(Q-E"
- manual! cu autorul comenzii ./EA*E ()%EN.
Se creeaz un inde# atunci c'nd!
- o coloan conine un domeniu mare de valori"
- o coloan conine un numr mare de valori null"
- una sau mai multe coloane sunt folosite des &n clauza 09E/E sau &n condiii de oin &n programele
de aplicaii"
- tabelul este mare i de obicei cererile obin mai puin de IW?FW din liniile tabelului"
- tabelul nu este modificat frecvent.
Sinta#a comenzii ./EA*E ()%EN!
./EA*E 1-)(Q-E3 ()%EN nume5inde#
+) tabel 7coloanaD 1, coloanaIX38"
$odificarea unui inde# se face prin comanda AL*E/ ()%EN.
Eliminarea unui inde# se face prin comanda! %/+2 ()%EN nume5inde#"
&9. S se creeze un inde# neunic, emp_last_name_id8_***, asupra coloanei last_name din tabelul
emp_***.
'0. S se creeze indeci unici asupra codului angaatului 7employee_id8 i asupra combinaiei last_name,
)irst_name, hire_date.
'&. .reai un inde# neunic asupra coloanei department_id din emp_*** pentru a eficientiza oinurile
dintre acest tabel i dept_***.
''. a+ 2resupun'nd c se fac foarte des cutri asupra numelui departamentului definii un inde# bazat
pe e#presia -22E/7department5name8.
b+ Utergei inde#ul creat anterior.
"e!inirea $inoni melor
2entru a simplifica accesul la obiecte se pot asocia sinonime acestora.
.rearea unui sinonim este util pentru a evita referirea unui obiect ce aparine altui utilizator
prefi#'ndu?l cu numele utilizatorului i pentru a scurta numele unor obiecte cu numele prea lung.
.omanda pentru crearea sinonimelor este!
./EA*E 12-<L(.3 S;)+);$ nume5sinonim
,+/ obiect"
Eliminarea sinonimelor se face prin comanda %/+2 S;)+);$ nume5sinonim"
'(. .reai un sinonim public se_*** pentru tabelul emp_***.
'). .reai un sinonim pentru vizualizarea vm_dept_***.
'*. .reai un tabel test_*** care s conin K coloane, a de tip numeric, b de tip ir de caractere i c de
tip data calendaristic. (ntroducei c'teva &nregistrri. .reai un sinonim pentru acest tabel. -tilizai
sinonimul pentru accesarea datelor din tabel. /edenumii tabelul 7/E)A$E .. *+ ..8. Mncercai din
nou s utilizai sinonimul pentru a accesa datele din tabel. Utergei sinonimul creat anterior.
"e!inirea tabelelor temorare
./EA*E 1=L+<AL *E$2+/A/;3 *A<LE 1sc>ema.3nume5tabel
7Pnume5coloan5D tip5date 1%E,A-L* e#presie3
1constr5coloan 1constr5coloan3 X3
4 Pconstr5tabel Q
1, Pnume5coloan5IXQ 38
1+) .+$$(* P%ELE*E 4 2/ESE/VEQ /+0S3"
- un tabel temporar stoc>eaz date specifice unei sesiuni"
- datele sunt stocate &n tabel numai pe durata unei tranzacii sau a &ntregii sesiuni"
- definiia unui tabel temporar este accesibil tuturor sesiunilor, dar informaiile dintr?un astfel de
tabel sunt vizibile numai sesiunii care insereaz linii &n acesta"
- +) .+$$(* determin dac datele din tabelul temporar persist pe durata unei tranzacii sau a
unei sesiuni"
- %ELE*E /+0S se utilizeaz pentru definirea unui tabel temporar specific unei tranzacii, caz &n
care sistemul trunc>iaz tabelul, terg'nd toate liniile acestuia dup fiecare operaie de
permanentizare 7.+$$(*8"
- 2/ESE/VE /+0S se specific pentru a defini un tabel temporar specific unei sesiuni, caz &n care
sistemul trunc>iaz tabelul la terminarea sesiunii.
'-. a+ S se creeze un tabel temporar an,ajati_*** care s conin lista salariailor angaai &n anul DYYE.
,iecare sesiune va permite stocarea &n acest tabel a salariailor angaai &n anul DYYE. La sf'ritul
sesiunii, aceste date vor fi terse.
b+ (nserai o nou &nregistrare &n tabelul temporar creat. Utergei tabelul creat.
1%erciiu
a+ .reai un tabel temporar *E$25*/A)O5CCC, cu datele persistente doar pe durata unei tranzacii.
Acest tabel va conine o singur coloan #, de tip )-$<E/. (ntroducei o &nregistrare &n tabel. Listai
coninutul tabelului. 2ermanentizai tranzacia i listai din nou coninutul tabelului.
b+ .reai un tabel temporar *E$25SES(-)E5CCC, cu datele persistente pe durata sesiunii. .erinele
sunt cele de la punctul a.
c+ (niiai &nc o sesiune SQLC2lus. Listai structura i coninutul tabelelor create anterior. (ntroducei
&nc o linie &n fiecare din cele dou tabele.
d+ Utergei tabelele create anterior. .um se poate realiza acest lucruB 7Eliminarea unui tabel temporar se
poate realiza doar dac nu e#ist nici o sesiune ataat lui8.
"e!inirea tabelelor ,rurilor 2cluster+
.l6ster?ul este o regrupare fizic a dou sau mai multe tabele, relativ la una sau mai multe
coloane, cu scopul mririi performanelor. .oloanele comune definesc c>eia 1l6ster?ului.
.rearea unui 1l6ster presupune!
crearea structurii 1l6ster?ului"
crearea inde#ului 1l6ster?ului"
crearea tabelelor care vor compune 1l6ster?ul.
.rearea unui cluster se realizeaz prin comanda!
./EA*E .L-S*E/ nume5cluster
7nume5coloana tip5data 1,nume5coloana tip5data3 X8 1S(OE n3
Suprimarea unui 1l6ster din baza de date se face prin comanda!
%/+2 .L-S*E/ nume5cluster"
Suprimarea unui 1l6ster din baza de date, a tuturor tabelelor definite relativ la acel 1l6ster i
constr'ngerile lor de integritate se face prin comanda!
%/+2 .L-S*E/ nume5cluster
().L-%()= *A<LES
.AS.A%E .+)S*/A()*S"
$odificarea unui 1l6ster permite redefinirea condiiilor, modificarea parametriilor de stocare i
a
caracteristicelor de stare 7AL*E/ .L-S*E/8.
'.. a+ S se creeze un 1l6ster numit personal_*** av'nd c>eia 1l6ster departament, dimensiunea GDI
bytes.
CREATE CL%STER pe-sonal_***
(depa-tment $%"9ER(&))
SIFE 1)7
ST!RA;E (initial )'': neCt 1':)#
b+ S se creeze un inde# pe c>eia clusterului personal_***.
CREATE I$*EG idC_pe-sonal_*** !$ CL%STER pe-sonal_***#

c+ S se adauge 1l6ster?ului personal5CCC dou tabele! tabelul dept_90_*** care conine angaaii
din departamentul DE i tabelul dept_:0_*** care conine angaaii din departamentul IE.
CREATE TA9LE dept_)'_***
CL%STER pe-sonal_***(depa-tment_id)
AS SELECT * R!" employees W4ERE depa-tment_id 2 )'#
CREATE TA9LE dept_7'_***
CL%STER pe-sonal_*** (depa-tment_id)
AS SELECT * R!" employees W4ERE depa-tment_id 2 7'#
e+ Scoatei tabelul dept_:0_*** din clusterul personal_***, apoi tergei 1l6ster;ul.
Obs. 2entru a scoate un tabel dintr?un 1l6ster sunt parcurse urmtoarele etape!
- se creeaz un nou tabel, &n afara 1l6ster?ului, prin duplicarea celui vec>i"
- se terge tabelul din 1l6ster"
- se suprim 1l6ster?ul.
CREATE TA9LE dept_7'c_***
AS SELECT * R!" dept_7'_***#
*R!+ TA9LE dept_7'_***#
RE$A"E dept_7'c_*** T! dept_7'_***#
*R!+ CL%STER pe-sonal_***
I$CL%*I$; TA9LES CASCA*E C!$STRAI$TS#
SELECT * R!" dept_)'_***#
SELECT * R!" dept_7'_***#
II. In!ormaii din dicionarul datelor.
*ipuri de vizualizri ale dicionarului datelor!
ALL5C ? obiecte accesibile utilizatorului curent,
%<A5C ? obiecte accesibile numai administratorului,
-SE/5C ? obiecte ale utilizatorului curent
&. *abelele utilizatorului curent!
SELECT ta/le_name
R!" use-_ta/les
!R*ER 90 ta/le_name#
'. %efiniiile i numele constr'ngerilor!
SELECT const-aint_name, const-aint_type, sea-c,_condition, ta/le_name
R!" use-_const-aints
W4ERE ta/le_name I$ (6E"+L!0EES6, 6*E+ARTA"E$TS()
!R*ER 90 ta/le_name, const-aint_name#
(. .oloanele asociate unei constr'ngeri!
SELECT const-aint_name, column_name
R!" use-_cons_columns
W4ERE ta/le_name I$ (6E"+L!0EES6, 6*E+ARTA"E$TS()
!R*ER 90 ta/le_name, const-aint_name#
). (nformaii despre vizualizri!
SELECT vieB_name
R!" use-_vieBs#
*. (nformaii referitoare la secvene!
SELECT seIuence_name, min_value, maC_value, inc-ement_/y, last_num/e-
R!" use-_seIuences#
-. (nformaii referitoare la indeci!
SELECT indeC_name ,ta/le_name
R!" use-_indeCes#
SELECT indeC_name
R!" use-_ind_columns#
SELECT a5indeC_name, a5column_name,a5column_position po>, /5uniIueness
R!" use-_indeCes /, use-_ind_columns a
W4ERE a5indeC_name 2 /5indeC_name
A$* a5ta/le_name 2 6E"+_***6#
.. (nformaii referitoare la sinonime!
SELECT synonym_name, ta/le_oBne-, ta/le_name
R!" use-_synonyms#

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

  • Marc Levy - Toate Acele Lucruri Pe Care Nu Ni Le-Am Spus PDF
    Marc Levy - Toate Acele Lucruri Pe Care Nu Ni Le-Am Spus PDF
    Document177 pagini
    Marc Levy - Toate Acele Lucruri Pe Care Nu Ni Le-Am Spus PDF
    Carmen CG
    Încă nu există evaluări
  • Prajitura Carouri Cuburi
    Prajitura Carouri Cuburi
    Document2 pagini
    Prajitura Carouri Cuburi
    Nicoleta Apetrei
    Încă nu există evaluări
  • Prajitura Caramel Nuca
    Prajitura Caramel Nuca
    Document2 pagini
    Prajitura Caramel Nuca
    Nicoleta Apetrei
    Încă nu există evaluări
  • Modelarea 3D
    Modelarea 3D
    Document99 pagini
    Modelarea 3D
    Alex Diabolik
    0% (1)
  • Erorile Transmisiei Radioelectrice
    Erorile Transmisiei Radioelectrice
    Document2 pagini
    Erorile Transmisiei Radioelectrice
    Nicoleta Apetrei
    Încă nu există evaluări
  • Excel Piese
    Excel Piese
    Document4 pagini
    Excel Piese
    Nicoleta Apetrei
    Încă nu există evaluări
  • Norme Digitale
    Norme Digitale
    Document2 pagini
    Norme Digitale
    Nicoleta Apetrei
    Încă nu există evaluări
  • Proiect BD
    Proiect BD
    Document1 pagină
    Proiect BD
    Alexandru Popescu
    Încă nu există evaluări
  • ACTA
    ACTA
    Document7 pagini
    ACTA
    Nicoleta Apetrei
    Încă nu există evaluări
  • De Ce "Da" Transmisiilor Digitale
    De Ce "Da" Transmisiilor Digitale
    Document2 pagini
    De Ce "Da" Transmisiilor Digitale
    Nicoleta Apetrei
    Încă nu există evaluări
  • Laborator SQL 1
    Laborator SQL 1
    Document5 pagini
    Laborator SQL 1
    Nicoleta Apetrei
    Încă nu există evaluări
  • PRBD 01
    PRBD 01
    Document19 pagini
    PRBD 01
    Nicoleta Apetrei
    Încă nu există evaluări
  • Teorie Abd
    Teorie Abd
    Document5 pagini
    Teorie Abd
    Nicoleta Apetrei
    Încă nu există evaluări
  • Sist Expert
    Sist Expert
    Document3 pagini
    Sist Expert
    Nicoleta Apetrei
    Încă nu există evaluări
  • Normalizare 1
    Normalizare 1
    Document3 pagini
    Normalizare 1
    Nicoleta Apetrei
    Încă nu există evaluări
  • Sistemul Educational Romanesc
    Sistemul Educational Romanesc
    Document8 pagini
    Sistemul Educational Romanesc
    Nicoleta Apetrei
    Încă nu există evaluări
  • Fast Food
    Fast Food
    Document5 pagini
    Fast Food
    Nicoleta Apetrei
    Încă nu există evaluări
  • ACTA
    ACTA
    Document7 pagini
    ACTA
    Nicoleta Apetrei
    Încă nu există evaluări
  • Fast Food
    Fast Food
    Document5 pagini
    Fast Food
    Nicoleta Apetrei
    Încă nu există evaluări
  • Algebra
    Algebra
    Document266 pagini
    Algebra
    cgiasugcasiugcaigi
    Încă nu există evaluări