Acceso A La Informacion Con Complementacion de Vistas
Acceso A La Informacion Con Complementacion de Vistas
Acceso A La Informacion Con Complementacion de Vistas
Una vista ofrece la posibilidad de almacenar una consulta predefinida como un objeto
en una base de datos para usarse posteriormente. Las tablas consultadas en una vista
se denominan tablas base. Salvo algunas excepciones, es posible dar nombre a
cualquier instrucción SELECT y almacenarla como una vista.
Algunos ejemplos habituales de vistas son los siguientes:
. Mejorar el rendimiento
Las vistas le permiten almacenar los resultados de consultas complejas. Otras
consultas pueden utilizar estos resultados resumidos. Las vistas también permiten
dividir datos. Es posible colocar divisiones individuales en equipos distintos.
Esta sentencia crea una vista nueva o reemplaza una existente si se incluye la cláusula
OR REPLACE. La sentencia_select es una sentencia SELECT que proporciona la
definición de la vista. Puede estar dirigida a tablas de la base o a otras vistas.
Se requiere que posea el permiso CREATE VIEW para la vista, y algún privilegio en cada
columna seleccionada por la sentencia SELECT. Para columnas incluidas en otra parte
de la sentencia SELECT debe poseer el privilegio 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. Pera crear una vista en una base de datos específica, indíquela con
base_de_datos.nombre_vista al momento de crearla.
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.
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 definición de una vista está sujeta a las siguientes limitaciones:
Para MERGE, el texto de una sentencia que haga referencia a la vista y la definición de
la vista son mezclados de forma que parte de la definición de la vista reemplaza las
partes correspondientes de la consulta.
Para TEMPTABLE, los resultados devueltos por la vista son colocados en una tabla
temporal, la cual es luego utilizada para ejecutar la sentencia.
Para UNDEFINED, MySQL determina el algoritmo que utilizará. En ese caso se prefiere
MERGE por sobre TEMPTABLE si es posible, ya que MERGE por lo general es más
eficiente y porque la vista no puede ser actualizable si se emplea una tabla temporal.
Una razón para elegir explícitamente TEMPTABLE es que los bloqueos en tablas
subyacentes pueden ser liberados después que la tabla temporal fue creada, y antes
de que sea usada para terminar el procesamiento de la sentencia. Esto podría resultar
en una liberación del bloqueo más rápida que en el algoritmo MERGE, de modo que
otros clientes que utilicen la vista no estarán bloqueados mucho tiempo.
Algunas vistas son actualizables. Esto significa que se las puede emplear en sentencias
como UPDATE, DELETE, o INSERT para actualizar el contenido de la tabla subyacente.
Para que una vista sea actualizable, debe haber una relación uno-a-uno entre los
registros de la vista y los registros de la tabla subyacente. Hay otros elementos que
impiden que una vista sea actualizable. Más específicamente, una vista no será
actualizable si contiene:
A veces, es posible que una vista compuesta por múltiples tablas sea actualizable,
asumiendo que es procesada con el algoritmo MERGE. Para que esto funcione, la vista
debe usar inner join (no outer join o UNION). Además, solamente puede actualizarse
una tabla de la definición de la vista, de forma que la cláusula SET debe contener
columnas de sólo una tabla de la vista. Las vistas que utilizan UNION ALL no se pueden
actualizar aunque teóricamente fuese posible hacerlo, debido a que en la
implementación se emplean tablas temporales para procesarlas.
En vistas compuestas por múltiples tablas, INSERT funcionará si se aplica sobre una
única tabla. DELETE no está soportado.
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
La sentencia CREATE VIEW fue introducida en MySQL 5.0.1. La cláusula WITH CHECK
OPTION fue implementada en MySQL 5.0.2.
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. RESTRICT y CASCADE son ignoradas.