You are on page 1of 10

Adminstracin de Bases de Datos

Vistas

Vistas
Son objetosde las BBDD que, mediante una consulta incluyen un subconjunto de datos. Podemos filtrar mucha informacin que de otro modo puede ser costosa, muchas claves ajenas Permite por un lado que el administrador de BBDD (DBA) pueda proteger los accesos directos a las tablas Para el usuario final ver los datos en modo vista o tabla es exactamente igual, pero no para el DBA que tiene que velar por la integridad de los mismos. Podemos adems dar permisos sobre vistas como si fuesen tablas.
2 Pepe Devesa

Vistas
Para agregar registros mediante sentencias INSERT, las columnas deben cumplir:
No deben haber nombres duplicados entre las columnas. La vista debe contemplar todas las columnas de la tabla en la BBDD que no tenga indicado un valor por defecto. Las columnas de las vistas deben ser referenciadas a columnas simples y no de columnas derivadas

Pepe Devesa

Gestin de Vistas
Los comandos que nos permiten trabajar con vistas en MySQL son CREATE VIEW, ALTER VIEW, DROP VIEW y SHOW CREATE VIEW. Creacin, CREATE VIEW
CREATE VIEW nom_vista [ ( comallista_nom_col ) ] AS s e n t n c i a_s e l e c t [ WITH CHECK OPTION ]

Donde:

nom_vista: Nombre de la vista comallista_nom_col: columnas de la vista. sentncia_select : el contenido

Pepe Devesa

Gestin de Vistas
CREATE VIEW vend_harw(nom,telefono,calle) AS SELECT nomvend,telefono,calle FROM vendedor WHERE nombrecomer="HARW S.A.

Vista con WITH CHECK OPTION Si se incluye la opcin WITH CHECK OPTION en la definicin de la vista, cualquier operacin de insercin o modicacin de esta es rechazada si la fila no cumple las condiciones de la creacin de la vista:
CREATE VIEW l l i b r e s_c a r s ( codi , t t o l , preu , e d i t o r i a l ) AS SELECT c o d i_l l i b r e , t t o l_l l i b r e , pr eu_l l ibr e , codi_edi t FROM l l i b r e WHERE pr eu_l l ibr e > 3000 WITH CHECK OPTION; INSERT INTO l l i b r e s_c a r s ( codi , t t o l , preu , e d i t o r i a l ) VALUES ( ' 1111 ' , ' Les mi l i una n i t s ' , 2500 , 1)

Esta operacin seria rechazada . Su precio es menor que 3000

Pepe Devesa

Eliminar vistas
DROP VIEW elimina una o ms vistas de la base de datos. Se debe poseer el privilegio DROP en cada vista a eliminar. La clusula IF EXISTS se emplea para evitar que ocurra un error por intentar eliminar una vista inexistente. Sintaxis: DROP VIEW [IF EXISTS] nombre_vista [, nombre_vista] ... [RESTRICT | CASCADE]
6 Pepe Devesa

Algunas Restricciones
No se puede utilizar el operador UNION en la creacin. No se pueden realizar inserciones o actualizaciones a travs de una vista en algunos casos:
Si hay columnas NOT NULL en la tabla base que no aparecen en la vista. Cuando la vista se crea con columnas calculadas, funciones agregadas, group by Si se utiliza para crear una vista la sentencia SELECT * sobre una tabla, y a esa tabla se leaaden columnas posteriormente, estas nuevas no apareceran.

Pepe Devesa

Ejercicios WITH CHECK OPTION


Crear una vista, masdedos, con los datos del vendedor de las empresas con ms de dos vendedores. Insertar en, masdedos, al vendedor Armando Bronca Segura, de la empresa HARW,SA, tlf:98767612, calle: salto del agua, ciudad: Benidorm, provincia:VLC.

Pepe Devesa

Ejercicios(sobre la BD de elecciones)
Crear las vista:
VOT65-70 con los votantes que hayan nacido entre los aos 1965 y 1970. CONFLICTOS donde los apoderados que sean tb votantes figuren los siguientes datos: nif, nombre y partido. CONFLICTOS1, con la opcin WITH CHECK OPTION, donde para los apoderados que son tb votantesidem. CONFLICTOS2, donde para los apoderados que son tb votantesidem y adems letra y mesa del colegio donde votan. VOT2B, con WITH CHECK OPTION, en la vista tendremos inf,fecha nac, de aquellos votantes que votan en la mesa B del colegio 2. CONTROLOES, donde figuren las siglas de cada partido, esa columna se llama partidos, junto con una columna que se llame apoderados, donde figure el total de apoderados por partido.
9 Pepe Devesa

Ejercicios(sobre la BD de elecciones)
Insertar y prestar atencin a los que no se puedan, en la vista VOT6570.
Votante PABLO MORALES, NACIDO 20/03/1968. Votante nif:12222222B, ANA BERNABEU, nacida el 19 de septiembre de 1966. Votante nif:13333333B, MARIA REVERTE, nacida el 14/08/1967, que vota en la mesa A del colegio n1. Votante nif:24444444B, ARTURO LORENCES, nacida el 18/08/1970, que vota en la mesa C del colegio n1.

Insertar en la vista CONFLICTOS:


Apoderado de nif 88888888F, JORGE APODERA, que es del partido TDT. Apoderado de nif 88888888F, JORGE APODERA, que es del partido DVD.

Insertar en la vista CONFLICTOS1:


Apoderado de nif 99999999F, ANA NOVOTA, que es del partido CCC. Apoderado de nif 77777777F, ANA SIVOTA, que es del partido CCC.

10

Pepe Devesa

You might also like