5

Click here to load reader

Documento Vistas

Embed Size (px)

Citation preview

Page 1: Documento Vistas

Capitulo 21. Manual de referencia MySQL 5 Sandra Patricia Rivera

Página 1 de 5

VISTAS

Los RDBMS (sistema administrador de bases de datos relacionales) gestionan la estructura física de los datos y

su almacenamiento. Con esta funcionalidad, el RDBMS se convierte en una herramienta de gran utilidad. Sin

embargo, desde el punto de vista del usuario, se podría discutir que los RDBMS han hecho las cosas más

complicadas, ya que ahora los usuarios ven más

datos de los que realmente quieren o necesitan,

puesto que ven la base de datos completa.

Conscientes de este problema, los RDBMS

proporcionan un mecanismo de vistas que permite

que cada usuario tenga su propia vista o visión de la base de datos. El lenguaje de definición de datos permite

definir vistas como subconjuntos de la base de datos.

Entre las últimas características implementadas en MySQL 5.0 junto a los disparadores (triggers) y

procedimientos almacenados (stores procedures) están las vistas (views).

Crear vistas nos da la ventaja de que:

• Proporcionan un nivel de seguridad, ya que permiten excluir datos para que

ciertos usuarios no los vean.

• Proporcionan un mecanismo para que los usuarios vean los datos en el

formato que deseen.

• Representan una imagen consistente y permanente de la base de datos,

incluso si la base de datos cambia su estructura.

CREACIÓN DE UNA VISTA Para crear una vista es necesario utilizar la sentencia CREATE VIEW.

CREATE [OR REPLACE] VIEW nombre_vista [(lista_columnas)] AS (consulta) [WITH CHECK OPTION];

Esta sentencia crea una vista nueva o reemplaza una existente si se incluye la cláusula OR REPLACE. La consulta

es una sentencia SELECT que proporciona la definición de la vista (los datos que va a mostrar la vista). Puede

estar dirigida a tablas de la base o a otras vistas.

Las vistas no existen realmente como un conjunto

de valores almacenados en la base de datos, sino

que son tablas FICTICIAS. Se construyen a partir

de las tablas reales almacenadas en la base datos.

La no-existencia real de las vistas hace que puedan

ser actualizables o no.

Page 2: Documento Vistas

Capitulo 21. Manual de referencia MySQL 5 Sandra Patricia Rivera

Página 2 de 5

Se requiere que el usuario que va a crear la vista posea el permiso CREATE VIEW, y algún privilegio en cada

columna seleccionada por la sentencia SELECT. Si está presente la cláusula OR REPLACE, también deberá

tenerse el privilegio DELETE para la vista.

Toda vista pertenece a una base de datos. Por defecto, las vistas se crean en la base de datos actual.

Al igual que las tablas, las vistas no pueden tener nombres de columnas duplicados. Por defecto, los nombres

de las columnas devueltos por la sentencia SELECT se usan para las columnas de la vista. Para dar

explícitamente un nombre a las columnas de la vista utilice la cláusula columnas para indicar una lista de

nombres separados con comas. La cantidad de nombres indicados en columnas debe ser igual a la cantidad

de columnas devueltas por la sentencia SELECT.

Las columnas devueltas por la sentencia SELECT pueden ser simples referencias a columnas de la tabla, pero

también pueden ser expresiones conteniendo funciones, constantes, operadores, etc.

Los nombres de tablas o vistas sin calificar en la sentencia SELECT se interpretan como pertenecientes a la base

de datos actual. Una vista puede hacer referencia a tablas o vistas en otras bases de datos precediendo el

nombre de la tabla o vista con el nombre de la base de datos apropiada.

Las vistas pueden crearse a partir de varios tipos de sentencias SELECT. Pueden hacer referencia a tablas o a

otras vistas. Pueden usar combinaciones, UNION, y subconsultas. El SELECT inclusive no necesita hacer

referencia a otras tablas.

La cláusula WITH CHECK OPTION puede utilizarse en una vista actualizable para evitar inserciones o

actualizaciones excepto en los registros en que la cláusula WHERE de la sentencia_select se evalúe como true.

En la cláusula WITH CHECK OPTION de una vista actualizable, las palabras reservadas LOCAL y CASCADED

determinan el alcance de la verificación cuando la vista está definida en términos de otras vistas:

• LOCAL restringe el CHECK OPTION sólo a la vista que está siendo definida.

• CASCADED provoca que las vistas subyacentes también sean verificadas. Si no se indica, el valor por

defecto es CASCADED.

Page 3: Documento Vistas

Capitulo 21. Manual de referencia MySQL 5 Sandra Patricia Rivera

Página 3 de 5

La definición de una vista está sujeta a las siguientes limitaciones:

• La sentencia SELECT no puede contener una subconsulta en su cláusula FROM.

• La sentencia SELECT no puede hacer referencia a variables del sistema o del usuario.

• La sentencia SELECT no puede hacer referencia a parámetros de sentencia preparados.

• Cualquier tabla o vista referenciada por la definición debe existir. Sin embargo, es posible que después

de crear una vista, se elimine alguna tabla o vista a la que se hace referencia. Para comprobar la

definición de una vista en busca de problemas de este tipo, utilice la sentencia CHECK TABLE.

• La definición no puede hacer referencia a una tabla TEMPORARY, y tampoco se puede crear una vista

TEMPORARY.

• Las tablas mencionadas en la definición de la vista deben existir siempre.

• No se puede asociar un disparador con una vista.

Ejemplo:

Si queremos crear una vista para la tabla empleados llamada V_EMPLEADOS donde solo se muestre el código,

nombre y cargo de los empleados, hacemos lo siguiente:

mysql>use empresa;

Este comando crea la vista pero no muestra nada. Si damos un SHOW TABLES veremos que la vista aparece

como si fuera una tabla más. Las tablas y las vistas comparten el mismo espacio de nombres en la base de

datos, por eso, una base de datos no puede contener una tabla y una vista con el mismo nombre.

mysql>show tables;

create view v_empleado (CODIGO, NOMBRE, CARGO) as select cod_emp, nombre, cargo from empleado;

Nombre de la vista Columnas de la vista Columnas extraídas de la tabla empleado que van a

formar la vista

Page 4: Documento Vistas

Capitulo 21. Manual de referencia MySQL 5 Sandra Patricia Rivera

Página 4 de 5

Para ver el contenido de la vista lo hacemos como si estuviéramos ejecutando una sentencia SELECT sobre una

tabla:

mysql> select * from v_empleado; mysql> select * from empleado;

Ejemplo 2:

Crearemos una vista llamada tiempo_salario que nos muestre el código y nombre del empleado, años

laborados, y total salario (salario + comisiones).

Para ver los datos de la vista……

Datos de la vista extraídos del la tabla empleado

Datos de la tabla empleado

Page 5: Documento Vistas

Capitulo 21. Manual de referencia MySQL 5 Sandra Patricia Rivera

Página 5 de 5

Ejemplo 3:

Crearemos una vista llamada antiguos que muestre el nombre de los empleados que llevan más de 10 años en

la empresa. La vista se definirá con base en la vista creada en el ejemplo 2 (tiempo_salario).

BORRAR UNA VISTA

DROP VIEW [IF EXISTS] nombre_vista [, nombre_vista] ... [RESTRICT | CASCADE]

DROP VIEW elimina una o más vistas de la base de datos. Se debe poseer el privilegio DROP en cada vista a

eliminar.

La cláusula IF EXISTS se emplea para evitar que ocurra un error por intentar eliminar una vista inexistente.

Ejemplo: Para borrar la vista llamada v_empleado;

Drop view if exists antiguos; o tambien, Drop view antiguos;

VER LA ESTRUCTURA DE UNA VISTA CREADA

Se emplea el comando SHOW CREATE VIEW para ver la sentencia SHOW CREATE de una vista.

Por ejemplo.

Vamos a ver la vista antiguos creada anteriormente: