Vistas
Una vista es una sentencia SELECT constituida como un objeto de SQL separado de la tabla o tablas a las que hace referencia. El resultado de su ejecución es un conjunto de registros similar al que obtendríamos con una tabla.
La vista no es una tabla, es una definición de una consulta es decir no posee datos propios. Una vez que está definida la consulta, una vista puede utilizarse como si fuera una tabla, refiriéndose a ella por su nombre.
Consulta y actualización
Una vista es actualizable sí es posible trasladar las modificaciones que en ella se introduzcan en la tablas o tablas de las que proviene. Esta actualización de tablas no será posible si existe ambigüedad en la procedencia de los datos, es decir cuando no exista una correspondencia biunívoca entre las filas de la vista y la de las tablas asociadas. En las siguientes situaciones la vista no será actualizable.
- Vistas que realicen joins de dos o más tablas.
- Vistas que contengan funciones colectivas
- Vistas que contengan la cláusula GROUP BY
- Vistas que contengan la cláusula DISTINCT.
Creación de vistas
Para crear vistas a través de comandos se utiliza la sintaxis de definición CREATE VIEW.
CREATE VIEW [ propietario. ] nombre_vista [ (columna [ ,...n ] ) ]
[ WITH <atributo> [ ,...n ] ] AS sentencia_select
[ WITH CHECK OPTION ]
[ ; ]
<atributo>
{
[ ENCRYPTION ]
[ SCHEMABINDING ]
[ VIEW_METADATA ]
}
- No se pueden anidar más de 32 niveles de profundidad
- No pueden contener más de 1024 columnas
- No pueden utilizar COMPUTE, COMPUTE BY o INTO
- No pueden utilizar ORDER BY sin TOP
Lista de columnas.
La lista de identificadores de columna es opcional y permite especificar nombres de columna diferentes a los de la tabla de la que procede. Sólo es imprescindible indicar un nombre de columna de la vista si deriva de una expresión aritmética, una función o una constante, o si dos columnas de la vista tienen el mismo nombre en las tablas de origen, como consecuencia de un join.
Encriptado.
La cláusula WITH ENCRYPTION encripta las filas de la tabla syscomments en las cuales se encuentra el texto de definición de la vista del catálogo, para que la sintaxis de la sentencia SELECT no pueda ser consultada por ningún usuario.
Esta select muestra la definición de todos los objetos definidos en la base de datos.
select * from syscomments
Consulta que define la vista a través de sentencia_select.
En la cláusula AS se especificará una sentencia SELECT que definirá la vista. Esta sentencia SELECT consulta datos de una o varias tablas, sin embargo existen algunas restricciones para esta consulta:
No puede contener la cláusula ORDER BY.
No puede incluir la palabra clave INTO.
No puede hacer referencia a una tabla temporal.
Esto es un ejemplo de una vista sencilla.
CREATE VIEW [DBO].[Nombre_vista]
AS
SELECT Columna1
FROM DBO.Nombre_tabla
WHERE NOT EXISTS (SELECT * FROM DBO Nombre_tabla
WHERE Columna2 = DBO Nombre_tabla.Columna1)
GO
En este caso se realiza una select sobre una única tabla pero con la condición que de que el contenido de la columna1 no exista en otra columna de esa misma tabla llamada columna2.
Comentarios
Publicar un comentario