Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
O vizualizare este o perceptie logica a datelor apartinand unor tabele sau altor vizualizari. Vizualizarea este definita plecand de la o cerere de manipulare a datelor si mosteneste aceleasi caracterisici ca si obiectele la care se refera (tip, constrangere etc.). Vizualizarea nu solicita o alocare de memorie si este definita in dictionarul datelor cu aceleasi caracteristici ca si un tabel. Exista doua categorii de vizualizari: simple si complexe. Un view simplu contine date dintr-o singura tabela, nu contine functii sau grupari ale datelor si poate contine comenzi de manipulare a datelor. Un view complex contine date din mai multe tabele, contine functii sau grupari ale datelor si nu poate contine comenzi de manipulare a datelor.
Crearea unei vizualizari se realizeaza prin comanda CREATE VIEW, care are sintaxa:
CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW view
[(alias [, alias] . )]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY]
unde
OR REPLACE recreeaza un view daca el exista.
FORCE creeaza un view indiferent daca exista sau nu tabelele de baza.
NOFORCE creeaza un view numai daca exista tabele de baza.
view este numele vizualizari.
alias este numele expresiilor selectate de subquery a vizualizari.
subquery este o instructiune SELECT.
WITH CHECK OPTION specifica faptul ca, numai randurile accesibile (care indeplinesc o conditie) ale unui view pot fi modificate.
Constraint este numele asignat constrangeri CHECK OPTION.
WITH READ ONLY asigura ca, nu pot fi realizate operatii de manipulare a datelor pe acest view.
Vom exemplifica crearea unui view prin cateva exemple.
Crearea unui view care contine informatii despre angajatii din departamentul 10.
CREATE VIEW empvu10
AS SELECT empno, ename, job
FROM emp
WHERE deptno = 10;
Putem afisa structura unui view prin utilizarea comenzi DESCRIBE din SQL*PLUS. Continutul unei tabele view se poate afisa la fel ca si orice tabela folosind comanda SELECT.
Modificarea unui view deja existent, prin adaugarea unui alias fiecarei coloane, se va realiza prin secventa urmatoare:
CREATE OR REPLACE VIEW empvu10
(employee_number, employee_name, job_title)
AS SELECT empno, ename, job
FROM emp
WHERE deptno = 10;
Ordinea aliasurilor trebuie sa tina cont de ordinea coloanelor din subquery.
Crearea unui view complex care contine functii pe grup si afiseaza date din mai multe tabele.
Crearea unui view cu numele dept_sum_vu care contine numele departamentului, salariul minim pe departament, salariul maxim pe departament si media aritmetica a salariului pe departament, se va realiza in urmatoarea secventa:
CREATE VIEW dept_sum_vu
(name, minsal, maxsal, avgsal)
AS SELECT d.dname, MIN(e.sal), MAX(e.sal), AVG(e.sal)
FROM emp e, dept d
WHERE e.deptno = d.deptno
GROUP BY d.dname;
Putem realiza operatiile de manipularea a datelor (INSERT, UPDATE) numai pentru view-uri simple. Nu se pot muta randuri daca view-ul contine o functie pe grup, o clauza GROUP BY, sau cuvantul DISTINCT.
Utilizarea clauzei WITH CHECK OPTION permite specificarea unei constrangeri.
CREATE OR REPLACE VIEW empvu20
AS SELECT *
FROM emp
WHERE deptno = 20
WITH CHECK OPTION CONSTRAINT empvu20_ck;
View-ul creat permite afisarea informatiilor despre angajatii din departamentul 20 si nu permite modificarea informatiilor datorita optiunii WITH CHECK OPTION.
Prin adaugarea optiuni WITH READ ONLY la definirea unui view, operatiile de manipulare a datelor nu pot fi realizate asupra acelui view.
CREATE OR REPLACE VIEW empvu10
(employee_number, employee_name, job_title)
AS SELECT empno, ename, job
FROM emp
WHERE deptno = 10
WITH READ ONLY;
Orice incercare de modificare sau mutare a unui rand din empvu10 va determina aparitia unei erori.
Suprimarea unei tabele view se va realiza cu comanda DROP VIEW, care are sintaxa:
DROP VIEW view;
Comanda indeparteaza definitia view-ului din baza de date.
Definitia unei tabele view este salvata in tabela USER_VIEWS din dictionarul datelor.
Copyright © 2024 - Toate drepturile rezervate