Mind map
Tipos de Vistas MySQL
Map content
Tipos de Vistas MySQL
Las vistas (incluyendo vistas actualizables) fueron introducidas en la versión 5.0 del servidor de base de datos MySQL
- Sintaxis de ALTER VIEW
- ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW nombre_vista [(columnas)] AS sentencia_select [WITH [CASCADED | LOCAL] CHECK OPTION]
- Esta sentencia modifica la definición de una vista existente. La sintaxis es semejante a la empleada en CREATE VIEW.
- Se requiere que posea los permisos CREATE VIEW y DELETE para la vista, y algún privilegio en cada columna seleccionada por la sentencia SELECT.
- Esta sentencia modifica la definición de una vista existente. La sintaxis es semejante a la empleada en CREATE VIEW.
- ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW nombre_vista [(columnas)] AS sentencia_select [WITH [CASCADED | LOCAL] CHECK OPTION]
- Sintaxis de CREATE VIEW
- CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW nombre_vista [(columnas)] AS sentencia_select [WITH [CASCADED | LOCAL] CHECK OPTION]
- 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.
- 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.
- mysql> CREATE VIEW test.v AS SELECT * FROM t;
- 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
- 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
- Dentro de una rutina almacenada, la definición no puede hacer referencia a parámetros de la rutina o a variables locales.
- La definición no puede hacer referencia a una tabla TEMPORARY, y tampoco se puede crear una vista TEMPORARY
- Nota. En la definición de una vista está permitido ORDER BY, pero es ignorado si se seleccionan columnas de una vista que tiene su propio ORDER BY.
- La definición no puede hacer referencia a una tabla TEMPORARY, y tampoco se puede crear una vista TEMPORARY
- Dentro de una rutina almacenada, la definición no puede hacer referencia a parámetros de la rutina o a variables locales.
- La sentencia SELECT no puede hacer referencia a variables del sistema o del usuario
- Las tablas mencionadas en la definición de la vista deben existir siempre
- 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.
- No se puede asociar un disparador con una vista.
- 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 sentencia SELECT no puede contener una subconsulta en su cláusula FROM
- mysql> CREATE VIEW test.v AS SELECT * FROM t;
- 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.
- 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.
- El algoritmo de una vista puede ser UNDEFINED en tres situaciones:
- No se encuentra presente una cláusula ALGORITHMen la sentencia CREATE VIEW.
- La sentencia CREATE VIEW tiene explícitamente una cláusula ALGORITHM = UNDEFINED.
- Se especificó ALGORITHM = MERGE para una vista que solamente puede ser procesada usando una tabla temporal. En este caso, MySQL emite una advertencia y establece el algoritmo en UNDEFINED.
- Con respecto a la posibilidad de agregar registros mediante sentencias INSERT, es necesario que las columnas de la vista actualizable también cumplan los siguientes requisitos adicionales
- No debe haber nombres duplicados entre las columnas de la vista.
- La vista debe contemplar todas las columnas de la tabla en la base de datos que no tengan indicado un valor por defecto.
- Las columnas de la vista deben ser referencias a columnas simples y no columnas derivadas. Una columna derivada es una que deriva de una expresión. Estos son algunos ejemplos de columnas derivadas:
- La vista debe contemplar todas las columnas de la tabla en la base de datos que no tengan indicado un valor por defecto.
- No debe haber nombres duplicados entre las columnas de la vista.
- Con respecto a la posibilidad de agregar registros mediante sentencias INSERT, es necesario que las columnas de la vista actualizable también cumplan los siguientes requisitos adicionales
- Sintaxis de DROP VIEW
- 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. Cuando se utiliza esta cláusula, se genera una NOTE por cada vista inexistente.
- RESTRICT y CASCADE son ignoradas.
- DROP VIEW elimina una o más vistas de la base de datos. Se debe poseer el privilegio DROP en cada vista a eliminar.
- Sintaxis de SHOW CREATE VIEW
- SHOW CREATE VIEW nombre_vista
- Muestra la sentencia CREATE VIEW que se utilizó para crear la vista.
- SHOW CREATE VIEW nombre_vista
- DROP VIEW [IF EXISTS] nombre_vista [, nombre_vista] ... [RESTRICT | CASCADE]
- No se encuentra presente una cláusula ALGORITHMen la sentencia CREATE VIEW.
- CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW nombre_vista [(columnas)] AS sentencia_select [WITH [CASCADED | LOCAL] CHECK OPTION]
- Sintaxis de ALTER VIEW
Information
- Description
- Mind Map on Tipos de Vistas MySQL, created by Miguel Llerena on 18/09/2021.
- Created by
- Miguel Llerena
- Views
- 1
- Rating