Anda di halaman 1dari 10

VISTAS

Concepto
Una vista es una tabla lgica que se basa en otras tablas o vistas. No contiene datos en si misma, es como una ventana que nos muestra datos. Es un select almacenado. Las tablas sobre las que se definen se llaman tablas base.

Ventajas
Proporciona un acceso restringido a la BD dando a cada usuario solo una parte de los datos (seguridad). Sustituir consultas complejas por otras ms sencillas que usen vistas o tener hechas las consultas repetitivas. Transparencia en las modificaciones de la BD para el usuario final.

Tipos
Vista simple:
Contiene datos de slo una tabla. No contiene funciones ni group by. Se puede hacer operaciones DML a travs de la vista.

Vista compleja:
Contiene datos de varias tablas. Contiene funciones o group by No siempre permite operaciones DML a travs de la vista.

Sintaxis
CREATE [OR REPLACE] VIEW nombre_vista [(alias columnas)] AS subconsulta
[WITH [CASCADED | LOCAL] CHECK OPTION]

Sintaxis
OR REPLACE: Si la vista ya estuviera creada se sustituye por la nueva. WITH CHECK OPTION: Especifica que solo las filas accesibles para la vista (cumplen con la condicin de la consulta) pueden ser insertadas o modificadas. LOCAL: Restringe el CHECK OPTION slo a la vista que est siendo definida. CASCADED: Provoca que las vistas subyacentes tambin sean verificadas. Si no se indica, el valor por defecto es CASCADED. (Las subyacentes son las que se usaron para construir la actual)

Sintaxis
Ejemplo: mysql> CREATE TABLE t1 (a INT); mysql> CREATE VIEW v1 AS SELECT * FROM t1 WHERE a < 2 WITH CHECK OPTION; mysql> CREATE VIEW v2 AS SELECT * FROM v1 WHERE a > 0 WITH LOCAL CHECK OPTION; mysql> CREATE VIEW v3 AS SELECT * FROM v1 WHERE a > 0 WITH CASCADED CHECK OPTION; mysql> INSERT INTO v2 VALUES (2); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO v3 VALUES (2); ERROR 1369 (HY000): CHECK OPTION failed 'test.v3'

Manipulacin de vistas
Ver la estructura de una vista
DESCRIBE Nombre_vista; Listar las vistas creadas SELECT * FROM USER_VIEWS; SHOW tables; //nos muestra tablas y vistas Recuperar datos de una vista

Las vistas se usan igual que las tablas


SELECT lo_que_sea FROM Nombre_vista WHERE condiciones;

Manipulacin de vistas
Modificar una vista (es como sobreescribirla)
ALTER VIEW nombre_vista [(alias_columnas)] AS subconsulta [WITH [CASCADED | LOCAL] CHECK OPTION];

Borrar una vista DROP VIEW [IF EXISTS] nombre_vista [, nombre_vista] ... [RESTRICT | CASCADE]; (RESTRICT y CASCADE son ignoradas.) Mostrar como se cre una vista SHOW CREATE VIEW nombre_vista;

Limitaciones
La sentencia SELECT que crea la vista, no puede contener una subconsulta en su clusula FROM. La sentencia SELECT no puede hacer referencia a variables ni a procedimientos almacenados. Cualquier tabla o vista referenciada por la definicin debe existir. Si tras crear la vista se borra alguna tabla base se puede comprobar la definicin de la vista con CHECK TABLE. No se puede asociar un disparador con una vista. Para que una vista sea actualizable, debe haber una relacin uno a uno entre los registros de la vista y los de la tabla. Una vista no ser actualizable si contiene: distinct, group by, join, max(), sum()