Вы находитесь на странице: 1из 20

12

Creacin de Vistas

Copyright Oracle Corporation, 1998. All rights reserved.


Objetivos
Al
Al completar
completar esta
esta lecci n, deber
leccin, a ser
debera ser
capaz
capaz dede hacer
hacer lo
lo siguiente:
siguiente:
Describir
Describir una
una Vista
Vista
Crear
Crear una
una vista
vista
Recupera
Recupera datos
datos aa travs
travs de
de una
una vista
vista
Alterar
Alterar la
la definicin
definicin de
de una
una vista
vista
Insertar,
Insertar, modificar
modificar yy borrar
borrar datos
datos aa
travs
travs de
de una
una vista
vista
Eliminacin
Eliminacin dede vistas
vistas
12-2 Copyright Oracle Corporation, 1998. All rights reserved.
Objetos de la Base de Datos

Objecto Descripcin
Tabla Unidad bsica de almacenamiento;
compuesta de registros y columnas.
Vista Lgicamente representa un subconjunto de
una o ms tablas.
Secuencia Genera valores para claves primarias.
Indice Mejoran el rendimiento de algunas consultas
Sinnimo Da nombres alternativos a los objetos.

12-3 Copyright Oracle Corporation, 1998. All rights reserved.


Qu es una Vista?
EMP Table
EMPNO
EMPNO ENAME
ENAME JOBJOB
JOB
JOB MGR
MGR HIREDATE
HIREDATE SAL
SAL
SAL COMM
SAL COMM
COMM DEPTNO
COMM DEPTNO
-----
DEPTNO
----- -------
DEPTNO ------- ---------
--------- -----
----- ---------
--------- -----
----- -----
----- -------
-------
-----
7839
7839 KING
----- --------
--------PRESIDENT
KING ---------
--------- ----
PRESIDENT ---- 17-NOV-81
---------
--------- ------
17-NOV-81 5000
5000 -----
------ ----- ------
10
------
10
--7698
7698 BLAKE
BLAKE MANAGER
MANAGER 7839
7839 01-MAY-81
01-MAY-81 2850
2850 30
30
7839
7782
7782 CLARK
7839 KING
CLARK
KING MANAGER
PRESIDENT
PRESIDENT 7839
MANAGER 7839 09-JUN-81
17-NOV-81
17-NOV-81 2450
09-JUN-81 5000
2450
5000 10
10
10
7566
7566 JONES
10 JONES MANAGER
MANAGER 7839
7839 02-APR-81
02-APR-81 2975
2975 20
20
EMPVU10 View
7782
7654
7782 MARTIN
CLARK
7654 MARTIN
CLARK SALESMAN
MANAGER
SALESMAN
MANAGER 7698
7839
7698 28-SEP-81
09-JUN-81
7839 28-SEP-81 1250
1500
1500 1400
09-JUN-81 1250 300
1400
300 30
30
10
7499
7499 ALLEN
10 ALLEN SALESMAN
SALESMAN 7698
7698 20-FEB-81
20-FEB-81 1600
1600 300300 30
30
EMPNO 7934
ENAME
7844 TURNER
MILLER JOB 7698
SALESMAN
CLERK 7782
7782 08-SEP-81
23-JAN-82 1500
1300 00 30
------ -------- -----------
7934
7844 TURNER
MILLER SALESMAN
CLERK 7698 08-SEP-81
23-JAN-82 1500
1300 30
107900
107900 JAMES
JAMES CLERK
CLERK 7698
7698 03-DEC-81
03-DEC-81 950
950 30
30
7839 7566
KING
7521 WARD
JONES
PRESIDENT
SALESMAN
MANAGER 7698
7839 22-FEB-81
02-APR-81 1250
2975
7566
7521 WARD
JONES SALESMAN
MANAGER 7698
7839 22-FEB-81
02-APR-81 2975 500
1250 500 30
30
7782 2020
CLARK
7902
7902 FORD
FORD MANAGER
ANALYST
ANALYST 7566
7566 03-DEC-81
03-DEC-81 3000
3000 20
20
7934 7788
7369
7369 SMITH
SCOTT
MILLER
7788 SCOTT CLERK
SMITH ANALYST
CLERK
CLERK
ANALYST 7902
7566
7566 17-DEC-80
7902 09-DEC-82
17-DEC-80
09-DEC-82 800
3000
800
3000 20
20
20
7788
7788 SCOTT
20 SCOTT ANALYST
ANALYST 7566
7566 09-DEC-82
09-DEC-82 3000
3000 20
20
7876
7876
7876 ADAMS
7876 ADAMS CLERK
CLERK
CLERK
CLERK 7788 12-JAN-83 1100
1100
7788 12-JAN-83 1100
1100 20
20
20
7934
7934 MILLER
20 MILLER CLERK
CLERK 7782
7782 23-JAN-82
23-JAN-82 1300
1300 10
10
7369
7369 SMITH
SMITH CLERK
CLERK 7902
7902 17-DEC-80
17-DEC-80 800
800
20
20
7902
7902 FORD
FORD ANALYST
ANALYST 7566 7566 03-DEC-81
03-DEC-81 3000 3000
12-4 20
Copyright Oracle Corporation, 1998. All rights reserved.
20
7698
7698 BLAKE
BLAKE MANAGER
MANAGER 7839
7839 01-MAY-81
01-MAY-81 2850
2850
30
30
Por qu Usar Vistas?

Para
Para restringir
restringir el
el acceso
acceso aa la
la B.D.
B.D.
Para
Para ralizar
ralizar consultas
consultas complejas
complejas
fcilmente
fcilmente
Para
Para la
la indenpendencia
indenpendencia dede los
los datos
datos
Para
Para presentar
presentar diferentes
diferentes vistas
vistas de
de los
los
mismos
mismos datos
datos

12-5 Copyright Oracle Corporation, 1998. All rights reserved.


Vistas Simples y Vistas Complejas

Caracterstica Vis. Simples Vis. Complejas

N de Tablas Una Una o ms

Contiene funciones No S

Contiene grup. de datos No S

DML a travs de la vista S No siempre

12-6 Copyright Oracle Corporation, 1998. All rights reserved.


Creacin de una Vista
Puede
Puede incluir
incluir una
una subconsulta
subconsulta dentro
dentro
de
de la
la sentencia
sentencia CREATE
CREATE VIEW.
VIEW.
CREATE
CREATE [OR
[OR REPLACE]
REPLACE] [FORCE|NOFORCE]
[FORCE|NOFORCE] VIEW
VIEW view
view
[(alias[,
[(alias[, alias]...)]
alias]...)]
AS
AS subquery
subquery
[WITH
[WITH CHECK
CHECK OPTION
OPTION [CONSTRAINT
[CONSTRAINT constraint]]
constraint]]
[WITH
[WITH READ
READ ONLY]
ONLY]

La
La subconsulta
subconsulta puede
puede contener
contener una
una
SELECT
SELECT compleja.
compleja.
La
La subconsulta
subconsulta no
no puede
puede contener
contener la
la
clasula
clasula ORDER
ORDER BY.
BY.

12-7 Copyright Oracle Corporation, 1998. All rights reserved.


Creacin de una Vista
Cree
Cree una
una vista,
vista, EMPVU10,
EMPVU10, que
que contenga
contenga
detalles
detalles de
de los
los empleados
empleados del
del dpto.
dpto. 10
10
SQL> CREATE VIEW empvu10
2 AS SELECT empno, ename, job
4 FROM emp
5 WHERE deptno = 10;
View created.

Describa
Describa la
la estructura
estructura de
de la
la vista,
vista, usando
usando
el
el comando
comando DESCRIBE
DESCRIBE dede SQL*Plus.
SQL*Plus.

SQL>
SQL> DESCRIBE
DESCRIBE empvu10
empvu10

12-8 Copyright Oracle Corporation, 1998. All rights reserved.


Creacin de una Vista
Cree
Cree una
una vista
vista usando
usando alias
alias de
de columna
columna
en
en la
la subconsulta.
subconsulta.
SQL> CREATE VIEW salvu30
2 AS SELECT empno EMPLOYEE_NUMBER, ename NAME,
3 sal SALARY
4 FROM emp
5 WHERE deptno = 30;
View created.

Seleccione
Seleccione las
las columnas
columnas de
de esta
esta vista,
vista,
haciendo
haciendo uso
uso del
del nombre
nombre del
del alias.
alias.

12-9 Copyright Oracle Corporation, 1998. All rights reserved.


Recuperando Datos de una Vista

SQL> SELECT *
2 FROM salvu30;

EMPLOYEE_NUMBER
EMPLOYEE_NUMBER NAME
NAME SALARY
SALARY
---------------
--------------- ----------
---------- ---------
---------
7698
7698 BLAKE
BLAKE 2850
2850
7654
7654 MARTIN
MARTIN 1250
1250
7499
7499 ALLEN
ALLEN 1600
1600
7844
7844 TURNER
TURNER 1500
1500
7900
7900 JAMES
JAMES 950
950
7521
7521 WARD
WARD 1250
1250

66 rows
rows selected.
selected.

12-10 Copyright Oracle Corporation, 1998. All rights reserved.


Consulta a la Tabla del
Diccionario de Datos, USER_VIEWS

SQL*Plus
USER_VIEWS
USER_VIEWS
SELECT *
EMPVU10
EMPVU10
FROM empvu10; SELECT empno,
SELECT empno, ename,
ename, job
job
FROM
FROM emp
emp
WHERE
WHERE deptno
deptno == 10;
10;
7839 KING PRESIDENT
7782 CLARK MANAGER EMP
7934 MILLER CLERK

12-11 Copyright Oracle Corporation, 1998. All rights reserved.


Modificacin de una Vista
Modificar
Modificar la
la vista
vista EMPVU10
EMPVU10 por
por medio
medio de
de
la
la clasula
clasula CREATE
CREATE OR OR REPLACE
REPLACE VIEW.
VIEW.
Aada
Aada unun alias
alias para
para cada
cada columna.
columna.
SQL> CREATE OR REPLACE VIEW empvu10
2 (employee_number, employee_name, job_title)
3 AS SELECT empno, ename, job
4 FROM emp
5 WHERE deptno = 10;
View created.

Los
Los alias
alias de
de columna
columna enen la
la clasula
clasula
CREATE
CREATE VIEW,
VIEW, debern
debern dede aparecer
aparecer en
en
el
el mismo
mismo orden
orden que
que las
las columnas
columnas enen la
la
subconsulta.
subconsulta.
12-12 Copyright Oracle Corporation, 1998. All rights reserved.
Creacin de una Vista Compleja
Cree
Cree una
una vista
vista compleja
compleja que
que contenga
contenga
funciones
funciones de
de grupo,
grupo, para
para ver
ver valores
valores de
de dos
dos
tablas.
tablas.
SQL> CREATE VIEW dept_sum_vu
2 (name, minsal, maxsal, avgsal)
3 AS SELECT d.dname, MIN(e.sal), MAX(e.sal),
4 AVG(e.sal)
5 FROM emp e, dept d
6 WHERE e.deptno = d.deptno
7 GROUP BY d.dname;
View created.

12-13 Copyright Oracle Corporation, 1998. All rights reserved.


Reglas para Realizar
Operaciones DML sobre Vistas
Se pueden realizar operaciones DML
sobre vistas simples.
No se puede eliminar una fila si la vista
contiene:
Funciones de grupo.
Una clusula GROUP BY.
El comando DISTINCT.

12-14 Copyright Oracle Corporation, 1998. All rights reserved.


Reglas para Realizar
Operaciones DML sobre Vistas
No es posible modificar datos en la vista si la
misma contiene:
Cualquiera de las condiciones anteriores.
Columnas definidas por expresiones.
La pseudocolumna ROWNUM.
No se puede agregar datos si la vista contiene:
Cualquiera de las condiciones anteriores.
Cualquier columna NOT NULL no includa
por la vista.

12-15 Copyright Oracle Corporation, 1998. All rights reserved.


La Clasula WITH CHECK OPTION
Asegura que un comando DML sobre la vista
mantiene el dominio de la misma.
SQL> CREATE OR REPLACE VIEW empvu20
2 AS SELECT *
3 FROM emp
4 WHERE deptno = 20
5 WITH CHECK OPTION CONSTRAINT empvu20_ck;
View created.

Si se intenta cambiar el nmero de


departamento para cualquier fila, la sentencia
fallar porque viola la restriccin de CHECK
OPTION.

12-16 Copyright Oracle Corporation, 1998. All rights reserved.


Denegar Operaciones DML
Agregando la opcin WITH READ ONLY en la
definicin de la vista, se asegura que no
ocurran operaciones DML.
SQL> CREATE OR REPLACE VIEW empvu10
2 (employee_number, employee_name, job_title)
3 AS SELECT empno, ename, job
4 FROM emp
5 WHERE deptno = 10
6 WITH READ ONLY;
View created.

Si se intenta realizar una operacin DML sobre


cualquier fila en la vista, aparecer el error
ORA-01732 del Oracle8 Server.
12-17 Copyright Oracle Corporation, 1998. All rights reserved.
Eliminacin de una Vista

Al
Al Borrar
Borrar una
una vista
vista no
no perder
perder los
los
datos,
datos, porque
porque la
la vista
vista est
est basada
basada en
en
tablas
tablas subyacentes
subyacentes de de la
la B.D.
B.D.
DROP
DROP VIEW
VIEW view;
view;

SQL> DROP VIEW empvu10;


View dropped.

12-18 Copyright Oracle Corporation, 1998. All rights reserved.


Resumen
Una vista se deriva de los datos de otras tablas u
otras vistas.
Una vista es como una ventana sobre los datos
subyacentes.
Una vista provee las siguientes ventajas:
Restriccin del acceso a los datos.
Simplificacin de las consultas.
Independencia de los datos.
Permite varias visiones de los mismos datos.
Puede ser eliminada sin borrar los datos
subyacentes.
12-19 Copyright Oracle Corporation, 1998. All rights reserved.
Visin General de la Prctica

Crear una vista simple.


Crear una vista compleja.
Crear una vista con una restriccin
check.
Intentar modificar datos en una vista.
Mostrar definiciones de una vista.
Eliminar vistas.

12-20 Copyright Oracle Corporation, 1998. All rights reserved.

Вам также может понравиться