Está en la página 1de 5

Capitulo 21.

Manual de referencia MySQL 5 Sandra Patricia Rivera

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
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.

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.

Página 1 de 5

operadores. pero también pueden ser expresiones conteniendo funciones.Capitulo 21. 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. Manual de referencia MySQL 5 Sandra Patricia Rivera Se requiere que el usuario que va a crear la vista posea el permiso CREATE VIEW. Por defecto. también deberá tenerse el privilegio DELETE para la vista. En la cláusula WITH CHECK OPTION de una vista actualizable. Las columnas devueltas por la sentencia SELECT pueden ser simples referencias a columnas de la tabla. los nombres de las columnas devueltos por la sentencia SELECT se usan para las columnas de la vista. las vistas no pueden tener nombres de columnas duplicados. etc. las vistas se crean en la base de datos actual. Los nombres de tablas o vistas sin calificar en la sentencia SELECT se interpretan como pertenecientes a la base de datos actual. Por defecto. 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. Si está presente la cláusula OR REPLACE. el valor por defecto es CASCADED. 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. UNION. Si no se indica. constantes. Las vistas pueden crearse a partir de varios tipos de sentencias SELECT. Pueden hacer referencia a tablas o a otras vistas. La cantidad de nombres indicados en columnas debe ser igual a la cantidad de columnas devueltas por la sentencia SELECT. Página 2 de 5 . El SELECT inclusive no necesita hacer referencia a otras tablas. Pueden usar combinaciones. 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. Toda vista pertenece a una base de datos. y algún privilegio en cada columna seleccionada por la sentencia SELECT. CASCADED provoca que las vistas subyacentes también sean verificadas. Al igual que las tablas. y subconsultas.

es posible que después de crear una vista. cargo from empleado. Manual de referencia MySQL 5 Sandra Patricia Rivera 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. Si damos un SHOW TABLES veremos que la vista aparece como si fuera una tabla más. La sentencia SELECT no puede hacer referencia a variables del sistema o del usuario. Las tablas y las vistas comparten el mismo espacio de nombres en la base de datos. hacemos lo siguiente: mysql>use empresa. Las tablas mencionadas en la definición de la vista deben existir siempre. • • • La definición no puede hacer referencia a una tabla TEMPORARY. Nombre de la vista Columnas de la vista Columnas extraídas de la tabla empleado que van a formar la vista Este comando crea la vista pero no muestra nada. se elimine alguna tabla o vista a la que se hace referencia. No se puede asociar un disparador con una vista. nombre.Capitulo 21. y tampoco se puede crear una vista TEMPORARY. nombre y cargo de los empleados. utilice la sentencia CHECK TABLE. create view v_empleado (CODIGO. una base de datos no puede contener una tabla y una vista con el mismo nombre. La sentencia SELECT no puede hacer referencia a parámetros de sentencia preparados. Sin embargo. Cualquier tabla o vista referenciada por la definición debe existir. mysql>show tables. CARGO) as select cod_emp. Ejemplo: Si queremos crear una vista para la tabla empleados llamada V_EMPLEADOS donde solo se muestre el código. Para comprobar la definición de una vista en busca de problemas de este tipo. NOMBRE. Página 3 de 5 . por eso.

Capitulo 21. y total salario (salario + comisiones). mysql> select * from empleado. Manual de referencia MySQL 5 Sandra Patricia Rivera 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. años laborados. Datos de la vista extraídos del la tabla empleado Datos de la tabla empleado Ejemplo 2: Crearemos una vista llamada tiempo_salario que nos muestre el código y nombre del empleado. Para ver los datos de la vista…… Página 4 de 5 .

Capitulo 21. Vamos a ver la vista antiguos creada anteriormente: Página 5 de 5 . BORRAR UNA VISTA DROP VIEW [IF EXISTS] nombre_vista [. Manual de referencia MySQL 5 Sandra Patricia Rivera 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. Por ejemplo. La cláusula IF EXISTS se emplea para evitar que ocurra un error por intentar eliminar una vista inexistente. Drop view antiguos. Ejemplo: Para borrar la vista llamada v_empleado. o tambien. La vista se definirá con base en la vista creada en el ejemplo 2 (tiempo_salario). Drop view if exists antiguos. Se debe poseer el privilegio DROP en cada vista a eliminar. [RESTRICT | CASCADE] DROP VIEW elimina una o más vistas de la base de datos... VER LA ESTRUCTURA DE UNA VISTA CREADA Se emplea el comando SHOW CREATE VIEW para ver la sentencia SHOW CREATE de una vista. nombre_vista] .