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#
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.
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#