Documente Academic
Documente Profesional
Documente Cultură
Obiective:
Dupa parcurgerea acestei lectii, ar trebui sa puteti face urmatoarele :
* Sa descrieti o vizualizare (imagine)
* Sa creati o vizualizare
* Sa extrageti date dintr-o vizualizare
* Sa schimbati structura unei vizualizari
* Sa inserati, sa actualizati si sa stergeti date dintr-o vizualizare
* Sa stergeti o imagine
Scopul lectiei
In aceasta lectie, veti invata sa creati si sa utilizati o imagine. Deasemenea veti invata sa
interogati in mod relevant dictionarul de date pentru a obtine informatii despre vizualizari. In aceasta
lectie termenul vizualizare este sinonim cu imagine.
Obiect Descriere
Tabel Unitate de memorare; compus din linii si coloane
Vizualizare Reprezentare logica a datelor din unul sau mai multe tabele
Secventa Genereaza valorile pentru cheia primara
Index Imbunatateste performantele interogarii
Synonym Un alt nume pentru interogare
Ce este o imagine?
Tabelul EMP
Se pot face reprezentari logice ale unor date sau combinatii de date prin crearea vizualizarilor (imagini)
din tabele. O imagine este un tabel logic bazat pe un alt tabel (sau mai multe tabele) sau dintr-o alta
imagine. O imagine nu contine date proprii; este ca o fereastra prin intermediul careia datele din tabele
pot fi vizualizate sau schimbate. Tabelele pe baza carora sunt create vizualizarile se numesc 'tabele de
baza'. Vizualizarea este stocata doar ca o secventa SELECT in dictionarul de date.
De ce utilizam vizualizari ?
1
Avantajul utilizarii vizualizarilor
* Ingradirea accesului la baza de date ; selectind valori dintr-o imagine putem afisa o parte
restransa din baza de date.
* Permite utilizatorilor sa faca interogari simple pentru a extrage informatii din interogari
compexe. De exemplu vizualizarile permit utilizatorilor sa ceara informatii din mai multe
tabele fara a cunoaste instructiunea 'Join' .
* Furnizeaza independenta datelor pentru utilizatori ad-hoc si aplicatii program. O singura
imagine poate fi utilizata pentru a obtine date din mai multe tabele.
* Furnizeaza grupurilor de utilizatori accesul la date in conformitate cu anumite criterii.
Vizualizarile se clasifica in doua grupe : simple si complexe. Diferenta de baza intre cele doua grupe
este data de operatiile DML (inserare, actualizare si stergere).
O vizualizare simpla este o imagine care :
- Furnizeaza date dintr-o singura tabela
- Nu contine functii sau grupuri de date
- Permite operatii DML
O vizualizare complexa este o imagine care :
- Furnizeaza date din mai multe tabele
- Contine functii sau grupuri de date
- Nu permite operatii DML
2
Alias-urile pot fi utilizate in secventa SELECT
WITH CHECK OPTION - specifica faptul ca doar liniile accesibile imaginii
pot fi inserate sau actualizate
NUME-CONSTR - este numele dat constringerii
WITH READ ONLY - asigura ca nu se poate executa pe vizualizare nici o
operatie DML
Exemplu : Pentru a crea o vizualizare numita EMPVU10 care sa contina detalii ale angajatilor din
departamentul 10, se introduce:
* Pentru a afisa structura unei vizualizari poate fi folosita comanda SQL*Plus DESCRIBE.
DESCRIBE empvu10
Exemplul anterior contine numarul angajatului, numele si functia pentru toti angajatii din departamentul
10. Descrierea structurii imaginii este urmatoarea :
3
Exemplul anterior creaza o vizualizare care contine numarul angajatului cu alias-ul
EMPLOYEE_NUMBER, numele sau cu alias-ul NAME si salariul cu alias-ul SALARY pentru salariatii
din departamentul 30.
Alternativ, pot fi controlate numele coloanelor prin includerea alias-urilor in clauza CREATE
VIEW.
Datele pot fi extrase din vizualizari la fel ca si din tabele. Deasemenea poate fi afisat intregul continut al
vizualizarii sau numai liniile si coloanele specificate.
SELECT empno,ename,job
FROM emp
WHERE deptno=10;
Odata creata vizualizarea, se poate interoga un dictionar de tabele numit USER_VIEWS pentru
a vedea numele si structura vizualizarii. Textul secventei SELECT care constituie vizualizarea este
memorat intr-o coloana de tip LONG.
Cand accesati date dintr-o vizualizare, Serverul Oracle face urmatoarele operatii:
1. Citeste definitia vizualizarii in dictionarul de tabele USER_VIEWS.
2. Cauta privilegiile de acces pentru tabelul de baza.
3. Converteste interogarea vizualizarii intr-o operatie echivalenta asupra tabelului (tabelelor)
asociate. Cu alte cuvinte, datele sunt citite sau actualizate din tabelul (tabelele) de baza.
4
Modificarea unei vizualizari
Alias-urile coloanelor in clauza CREATE VIEW sunt scrise in aceeasi ordine ca si coloanele din
subinterogare.
Optiunea OR REPLACE permite crearea unei vizualizari chiar daca mai exista una cu acelasi nume,
inlocuindu-se astfel vechea versiune cu cea noua. Acest lucru inseamna ca vizualizarea poate fi alterata
(schimbata) fara stergerea celei anterioare, prin recreerea dupa noile cerintere si redarea privilegiilor
obiectului.
Observatie: Cand dati nume alternative coloanelor (alias-uri) in clauza CREATE VIEW, amintiti-va ca
alias-urile trebuiesc scrise in aceeasi ordine ca si coloanele din subinterogare.
Creati o vizualizare complexa care sa contina functii de grup, pentru a afisa valorile din doua tabele.
Exemplul anterior creaza o vizualizare complexa, care contine numele departamentului, salariul
minim, salariul maxim si salariul mediu pentru fiecare departament. De retinut ca pentru vizualizare au
fost specificate alias-uri de coloane. Acest lucru este strict necesar daca o coloana a vizualizarii este
derivata dintr-o functie sau expresie.
Structura vizualizarii poate fi vazuta cu ajutorul comenzii SQL* Plus DESCRIBE. Continutul
vizualizarii poate fi afisat cu o secventa SELECT.
5
Reguli pentru indeplinirea operatiilor DML intr-o vizualizare
Folosirea clauzei WITH CHECK OPTION intr-o vizualizarea, ne asigura asupra faptul ca
operatiile DML se fac numai pe vizualizare .
Orice incercare de a schimba numarul departamentului pentru orice linie din vizualizare va esua
deoarece nu respecta constrangerea WITH CHECK OPTION.
6
UPDATE empvu20 SET deptnoa10 WHERE empno=7788;
Observatie: Nici o linie nu este actualizata pentru ca, daca numarul departamentului ar deveni '10',
vizualizarea nu ar mai putea contine acel angajat. De aceea, avand clauza WITH CHECK OPTION,
vizualizarea poate contine doar angajatii din departamentul 20 si nu permite ca numarul
departamentului pentru acei angajati sa fie schimbat in vizualizare.
Orice incercare de a executa operatii DML pe oricare din liniile vizualizarii va da un mesaj de eroare
ORA-01752.
Exemplul descris modifica imaginea EMPVU10 pentru a impiedica orice operatie DML.
Orice incercare de stergere a unei linii va da o eroare.
Pe ecran va apare:
DELETE FROM empvu10
*
ERROR at line 1:
ORA_01752: Cannot delete from view without exactly one key-preserved table
7
Stergerea unei vizualizari
O vizualizare poate fi stearsa fara a pierde datele, deoarece imaginea are la baza un tabel asociat.
Utilizati comanda DROP VIEW pentru a sterge o imagine. Aceasta comanda elimina definitia
vizualizarii din baza de date. Datele nu sunt afectate deoarece sunt stocate in tabelele de unde a derivat
fiecare vizualizare. Vizualizarile sau alte aplicatii bazate pe o vizualizare stearsa devin invalide. Doar
creatorul vizualizarii sau un user cu privilegiul DROP ANY VIEW poate sterge o vizualizare.
Exercitii practice
1. Creati o vizualizare EMP_VU care sa contina numarul angajatului, numele sau si numarul
departamentului avand asociat tabelul EMP. Schimbati denumirea pentru numele angajatului cu
EMPLOYEE.
4. Folosind vizualizarea EMP_VU, introduceti o secventa pentru a afisa numele angajatilor si numerele
departamentelor.
5. Creati o vizualizare DEPT20 care sa contina numarul angajatului, numele sau si numarul
departamentului pentru toti angajatii din departamentul 20. Etichetati coloanele vizualizarii astfel :
EMPLOYEE_ID,EMPLOYEE si DEPARTMENT_ID. Nu permiteti ca unui angajat sa i se poata
schimba numarul departamentului in vizualizare.