Sunteți pe pagina 1din 6

Laborator 9

VI. Crearea i utilizarea vederilor (VIEWS) asupra datelor din baza de


date

o vedere (VIEW) este o fereastr prin intermediul creia datele din tabele pot fi
vizualizate sau actualizate.
o vedere poate fi derivat dintr-o alt vedere sau tabel care este referit ca tabel de
baz a vederii o tabel real cu date care sunt stocate fizic;
o vedere este stocat doar ca o secven SELECT. Este o tabel virtual - adic este o
tabel care nu exist fizic, dar i apare utilizatorului ca i cum ar exista;
o vedere nu are date proprii. Ea manipuleaz datele din tabela de baz asociat;

Vederile pot fi utilizate pentru:


ngrdirea accesului la o baz de date. Selectnd dintr-o vedere putem afia o parte
restrns din baza de date;
permit utilizatorilor s fac cereri simple pentru obinerea de rezultate din cereri
complicate. De exemplu, vederile permit utilizatorilor s selecteze date din tabele
multiple fr cunoaterea mecanismelor de uniune JOIN;
furnizeaz independena datelor pentru utilizri ad-hoc fa de programele aplicaiilor.
O vedere poate fi utilizat pentru a extrage transparent date din mai multe tabele. De
asemenea, vederile permit ca aceleai date s fie vzute de utilizatori diferii n feluri
diferite

VI.1 Crearea vederilor n mod interactiv folosind interfaa Enterprise


Manager
1. n grupul de aplicaii ADMINISTRATION SCHEMA DATABASE OBJECTS
VIEWS se acioneaz butonul CREATE;
2. n rubrica NAME se introduce denumirea vederii, n rubrica SCHEMA se introduce
numele schemei, implicit este cea a utilizatorului logat la baza de date;
3. n rubrica ALIASES se introduc alias-urile pentru coloanele specificate n comanda
SELECT;
4. dac se dorete nlocuirea unei eventuale vederi existente cu acelai nume, se bifeaz
opiunea REPLACE THE VIEW IF EXISTS. Acest lucru este util n compilarea repetat a
aceleai vederi.

PDF created with pdfFactory trial version www.pdffactory.com

Laborator 9

Fig. 1 Crearea vederilor n mod vizual

5. n pagina OPTIONS se seteaz opiuni suplimentare pentru vedere;


6. dac se bifeaz opiunea FORCE, vederea este creat chiar dac tabele de baz nu exist
sau dac utilizatorul nu are drepturi suficiente asupra tabelelor respective;
7. bifarea opiunii CREATE OR REPLACE THE VIEW WITH ONE OF THESE
RESTRICTIONS permite crearea vederii cu una din urmtoarele restricii:
READ ONLY nu sunt permise operaii de inserare, tergere sau actualizare asupra
vederii i n consecin nici asupra datelor din tabelele de baz;
WITH CHECK OPTION datele inserate sau modificate prin intermediul vederii nu
sunt salvate n tabele de baz dac nu pot fi selectate de vedere. Adic, dac nu
respect condiia de selecie a datelor din tabele n vedere.
8. n rubrica CONSTRAINT NAME se introduce numele constrngerii. Dac nu se
introduce nici un nume, ORACLE va crea automat un nume;
9. la ncheierea definirii vederii se acioneaz butonul OK.

PDF created with pdfFactory trial version www.pdffactory.com

Laborator 9

Fig. 2 Fereastra de setare a opiunilor vederii

Pentru vizualizarea coninutului vederii se folosete comanda SELECT exact ca n cazul


tabelelor:
SELECT * FROM prod_panif;
Pentru modificarea definirii unei vederi se merge n grupul de aplicaii
ADMINISTRATION SCHEMA DATABASE OBJECTS VIEWS i se acioneaz
butonul EDIT. Se fac modificrile necesare dup care se salveaz acionnd butonul APPLY.
Pentru tergerea unei vederi, n grupul de aplicaii ADMINISTRATION SCHEMA
DATABASE OBJECTS VIEWS se selecteaz vederea respectiv i se acioneaz butonul
DELETE.

VI.2 Crearea vederilor n mod comand


Comanda CREATE VIEW are urmtoarea sintax:
CREATE [ OR REPLACE ] [FORCE] VIEW <nume-view>
[(<coloana1>, <coloana2>, ...)]
AS
SELECT <secventa-select>
[WITH CHECK OPTION [CONSTRAINT <nume_constr>]]

PDF created with pdfFactory trial version www.pdffactory.com

Laborator 9

Coloana1, coloana2, etc. sunt numele date coloanelor n vedere i trebuie s corespund
elementelor din lista SELECT.
EXEMPLE:
1. S se creeze o vedere care s conin produsele cu stocul 0.
CREATE OR REPLACE VIEW prod0
AS SELECT codp, denp, dataf, termg
FROM produse
WHERE cants=0;
2. O vedere poate fi utilizat ca orice tabel. S se afieze din vederea prod0 toate produsele
care au termenul de garanie mai mare de 10 zile;
SELECT codp, denp, dataf, termg
FROM prod0
WHERE termg>10;
3. S se creeze o vedere care s conin toate produsele din categoria panificaie cu
denumirea produse_panificaie:
CREATE OR REPLACE VIEW produse_panificatie (cod_prod, den_prod,um,
data_fabric)
AS SELECT codp, denp, um, dataf
FROM produse
WHERE codc IN (SELECT codc FROM categorii WHERE denc='panificatie')

OBSERVAIE:
O vedere nu poate conine clauza ORDER BY. Clauza ORDER BY este specificat cnd se
execut SELECT asupra vederii.
4. S se creeze o vedere cu CHECK OPTION.
CREATE OR REPLACE VIEW agenti_femei
AS SELECT * FROM agenti
WHERE sex='F'
WITH CHECK OPTION;
OBSERVAIE:
Clauza WITH CHECK OPTION specific faptul c INSERT i UPDATE executate prin
intermediul vederii nu permit crearea de linii noi sau modificarea de linii pe care vederea nu
le poate selecta. De exemplu, n vederea agenti_femei nu se pot insera, modifica sau terge
dect linii care au valoarea 'F' n coloana sex.
5. S se insereze o nou nregistrare n vederea agenti_femei.
INSERT INTO agenti_femei VALUES ('12','Toma','Ioana','03-mar-09','02-may89','F','medii');

PDF created with pdfFactory trial version www.pdffactory.com

Laborator 9

Dac se ncearc inserarea n vedere a unui brbat:


INSERT INTO
89','B','medii');

agenti_femei

VALUES

('10','Toma','Ion','03-mar-09','02-may-

Sistemul afieaz urmtoarea eroare:


ERROR at line 1:
ORA-01402: view WITH CHECK OPTION where-clause violation
Datele inserate n vedere au fost automat inserate i n tabela Ageni. Verificai cu:
SELECT * FROM agenti;
6. S se modifice vederea ageni femei transformnd-o ntr-o vedere READ ONLY care doar
afieaz datele dar nu permite nici una din operaiile INSERT; UPDATE i DELETE.
CREATE OR REPLACE VIEW agenti_femei
AS SELECT * FROM agenti
WHERE sex='F'
WITH READ ONLY CONSTRAINT doar_citire;
La ncercarea de modificare a valorii unei coloane:
UPDATE agenti_femei SET nume='Tomescu' WHERE nume='Toma';
Se va obine mesajul de eroare:
ERROR at line 1:
ORA-01733: virtual column not allowed here
ATENIE!
Pe lng restriciile impuse cu CHECK OPTION, exist o serie de restricii implicite n ceea
ce privete operaiile DML asupra vederilor:
Comanda DELETE este interzis cnd o vedere conine:
1. condiie Join;
2. funcii de grup;
3. clauza GROUP BY;
4. comanda DISTINCT;
5. ROWNUM (nr de ordine al rndului dup ce acesta a fost adus din baza de date).
Comanda UPDATE este interzis cnd o vedere conine :
1. oricare din elementele de mai sus;
2. coloane definite prin expresii ( de exemplu, cants*0,9 )
Comanda INSERT este interzis cnd o vedere conine :
1. oricare din elementele de mai sus;
2. coloane NOT NULL i care nu sunt selectate de vedere ( de exemplu, codp ).
7. S se tearg vederea prod0.
DROP VIEW prod0;

PDF created with pdfFactory trial version www.pdffactory.com

Laborator 9

OBSERVAIE:
Aceast comand elimin definiia vederii din baza de date. Coloanele i liniile nu sunt
afectate deoarece sunt stocate n tabelele de unde a derivat fiecare vedere. Vederile sau alte
aplicaii bazate pe o vedere tears devin invalide. O vedere poate fi derivat dintr-o tabel
sau din alt vedere!
Doar proprietarul vederii (cel care a creat-o) poate s o tearg.

PROBLEME DE REZOLVAT
1. S se creeze o vedere n care s se afieze numele, prenumele agentilor, numrul
documentului de ncasare i data documentului de ncasare.
2. S se introduc o nou nregistrare n vederea creat la punctul 1. Este posibil? De ce?
3. S se creeze o vedere care s conin angajaii brbai care n anul curent vor iei la pensie
(vor mplini 65 de ani).
4. S se creeze o vedere care s conin toate facturile emise la data curent cu CHECK
OPTION. S se introduc o nou factur n vederea astfel creat. S se modifice datele
unei facturi i s se tearg o factur. S se verifice dup fiecare operaie efectuat i
efectele produse asupra tabelei facturi.
5. S se creeze o vedere care s conin toate documentele de ncasare astfel nct datele
tabelei documente de ncasare s nu poat fi modificate.
6. S se introduc un nou document n vederea creat la punctul 5. S se modifice datele
unui document i s se tearg un document. Sunt posibile aceste operaii?
7. S se tearg vederea creat la punctul 5.

REZOLVRI

PDF created with pdfFactory trial version www.pdffactory.com

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