Una vista es una consulta almacenada que se presenta como una tabla virtual a partir de una o más tablas reales en una base de datos. Las vistas permiten ocultar información, simplificar permisos de usuarios y mejorar el rendimiento de consultas frecuentes al almacenar el resultado de una consulta compleja. Se pueden crear, modificar y eliminar vistas mediante sentencias SQL como CREATE VIEW, ALTER VIEW y DROP VIEW.
3. DEFINICIÓN:
Una vista es una tabla virtual cuyo contenido está definido por una consulta. Al igual que una tabla, una
vista consta de un conjunto de columnas y filas de datos con un nombre. Las filas y las columnas de
datos proceden de tablas a las que se hace referencia en la consulta que define la vista y se producen
de forma dinámica cuando se hace referencia a la vista.
Una vista actúa como filtro de las tablas subyacentes a las que se hace referencia en ella. La consulta
que define la vista puede provenir de una o de varias tablas, o bien de otras vistas de la base de datos
actual u otras bases de datos.
Las vistas suelen usarse para centrar, simplificar y personalizar la percepción de la base de datos para
cada usuario. Las vistas pueden emplearse como mecanismos de seguridad, que permiten a los
usuarios obtener acceso a los datos por medio de la vista, pero no les conceden el permiso de obtener
acceso directo a las tablas base subyacentes de la vista.
4. Las vistas de sistema exponen metadatos de catálogo.
Vistas del sistema:
Una vista con particiones combina datos horizontales con particiones de un conjunto de tablas miembro en uno o
más servidores. Esto hace que los datos aparezcan como si fueran de una tabla. Una vista que combina tablas
miembro en la misma instancia de SQL Server es una vista con particiones local.
Vistas con particiones:
Una vista indizada es una vista que se ha materializado. Esto significa que se ha calculado la definición de la vista y
que los datos resultantes se han almacenado como una tabla. Se puede indizar una vista creando un índice clúster
único en ella. Las vistas indizadas pueden mejorar de forma considerable el rendimiento de algunos tipos de
consultas.
Vistas indizadas:
SQL Server proporciona los siguientes tipos de vistas que permiten
llevar a cabo objetivos especiales en una base de datos.
5. SINTAXIS:
Una vista permite
guardar una
instrucción SQL
que podrás ejecutar
las veces que
quieras sin tener
que repetir la
instrucción SQL.
Esta es la sintáxis
para una vista:
CREATE VIEW
nombre_vista
AS
instrucción SQL
Para ejecutar la
vista, basta con
lanzar la SELECT:
SELECT *
FROM
nombre_vist
a
Por ejemplo, tengo
una tabla donde
guardo las incidencias
reportadas por
tiendas, quiero tener
un TOP 10 de tiendas
que generan esas
incidencias, para ello
el contenido de mi
vista sería:
6. CREATE VIEW
vista_top10_averias AS
SELECT t.deleg AS
Delegacion, t.nombre,
COUNT(a.deleg) AS numero
FROM averias AS a INNER
JOIN tiendas AS t ON
a.deleg=t.deleg GROUP by
t.deleg ORDER BY numero
DESC LIMIT 10;
Para ver el resultado sólo
tendría que teclear:
SELECT * FROM
vista_top10_averias;
Y el resultado sería este:
7. ADMINISTRACIÓN DE VISTAS (Creación, Modificación y Eliminación):
Una vista es como una ventana a través de la cual se puede consultar o cambiar información de la tabla
a la que está asociada.
Las vistas tienen la misma estructura que una tabla: filas y columnas. La única diferencia es que sólo se
almacena de ellas la definición, no los datos. Los datos que se recuperan mediante una consulta a una
vista se presentarán igual que los de una tabla. De hecho, si no se sabe que se está trabajando con una
vista, nada hace suponer que es así. Al igual que sucede con una tabla, se pueden insertar, actualizar,
borrar y seleccionar datos en una vista. Aunque siempre es posible seleccionar datos de una vista, en
algunas condiciones existen restricciones para realizar el resto de las operaciones sobre vistas.
• Creación de una Vista:
CREATE VIEW vista [({columna ,}+] AS consulta ;
La vista se crea con las columnas que devuelve una consulta.
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW nombre_vista [(columnas)]
AS sentencia_select
[WITH [CASCADED | LOCAL] CHECK OPTION]
8. Esta sentencia crea una vista nueva o reemplaza una existente si se incluye la cláusula OR REPLACE.
La sentencia SELECT que proporciona la definición de la vista. Puede estar dirigida a tablas de la base
o a otras vistas.
Modificación de una Vista:
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.
Borrado de una Vista:
DROP VIEW vista ;
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.
9. EJEMPLOS:
Una vista se define usando un "select".
La sintaxis básica parcial para crear una vista es la siguiente:
create view NOMBREVISTA as
SENTENCIAS SELECT from TABLA;
El contenido de una vista se muestra con un "select":
select *from NOMBREVISTA;
En el siguiente ejemplo creamos la vista "vista_empleados", que es resultado de una combinación
en la cual se muestran 4 campos:
create view vista_empleados as select (apellido+' '+e.nombre) as nombre,sexo,
s.nombre as seccion, cantidadhijos
from empleados as e join secciones as s on codigo=seccion
Para ver la información contenida en la vista creada anteriormente, escribimos lo siguiente:
select *from vista_empleados;
Podemos realizar consultas a una vista como si se tratara de una tabla:
select seccion,count(*) as cantidad
from vista_empleados;
10. Los nombres para vistas deben seguir las mismas reglas que cualquier identificador. Para distinguir una tabla de una
vista podemos fijar una convención para darle nombres, por ejemplo, colocar el sufijo vista y luego el nombre de las
tablas consultadas en ellas.
Los campos y expresiones de la consulta que define una vista deben tener un nombre. Se debe colocar nombre de
campo cuando es un campo calculado o si hay 2 campos con el mismo nombre. Notamos que en el ejemplo, al
concatenar los campos "apellido" y "nombre" colocamos un alias; si no lo hubiésemos hecho aparecería un mensaje
de error porque dicha expresión debe tener un encabezado, SQL Server no lo coloca por defecto.
Los nombres de los campos y expresiones de la consulta que define una vista deben ser únicos (no puede haber dos
campos o encabezados con igual nombre). Note que en la vista definida en el ejemplo, al campo "s.nombre" le
colocamos un alias porque ya había un encabezado (el alias de la concatenación) llamado "nombre" y no pueden
repetirse, si sucediera, aparecería un mensaje de error.
11. RESUMEN:
Una vista es una consulta que se presenta como una tabla (virtual) a partir de un conjunto de
tablas en una base de datos relacional.
Las vistas tienen la misma estructura que una tabla: filas y columnas. La única diferencia es
que sólo se almacena de ellas la definición, no los datos. Los datos que se recuperan
mediante una consulta a una vista se presentarán igual que los de una tabla. Si no se sabe
que se está trabajando con una vista, nada hace suponer que es así. Al igual que sucede con
una tabla, se pueden insertar, actualizar, borrar y seleccionar datos en una vista. Aunque
siempre es posible seleccionar datos de una vista, en algunas condiciones existen
restricciones para realizar el resto de las operaciones sobre vistas.
Una vista se especifica a través de una expresión de consulta (una sentencia SELECT) que la
calcula y que puede realizarse sobre una o más tablas. Sobre un conjunto de tablas
relacionales se puede trabajar con un número cualquiera de vistas.
La mayoría de los SGBD soportan la creación y manipulación de vistas. Las vistas se crean
cuando se necesitan hacer varias sentencias para devolver una tabla final.
12. Hay dos tipos de vistas de base de datos: vistas dinámicas y vistas
estáticas. Las vistas dinámicas pueden contener datos de una o dos
tablas e incluir automáticamente todas las columnas de la tabla o
tablas especificadas. Las vistas dinámicas se pueden actualizar
dinámicamente cuando se crean o modifican objetos relacionados u
objetos ampliados. Las vistas estáticas pueden contener datos de
varias tablas y las columnas necesarias de estas tablas se deben
especificar en las cláusulas SELECT y WHERE de la vista estática.
Las vistas dinámicas se pueden actualizar manualmente cuando se
crean o modifican objetos relacionados u objetos ampliados.
Cuando se crea una vista dinámica con datos de dos tablas, debe
asegurarse de que ambas tablas tengan las mismas columnas
PRIMARYKEYCOLSEQ o que contengan índices exclusivos con el
mismo nombre de columna en el mismo orden.
13. RECOMENDACIONES:
Si la vista no está indizada, sus datos no se almacenan en la base de datos como un objeto
diferente. Lo que se almacena en la base de datos es una instrucción SELECT.
El conjunto de resultados de la instrucción SELECT forma la tabla virtual que devuelve la vista. El
usuario puede utilizar dicha tabla virtual haciendo referencia al nombre de la vista en instrucciones
Transact-SQL, de la misma forma en que se hace referencia a las tablas.
14. CONCLUCIONES:
Una vista de base de datos es un subconjunto de una base de datos y se basa en una consulta que se ejecuta en una
o más tablas de base de datos. Las vistas de base de datos se guardan en la base de datos como consultas con
nombre y se pueden utilizar para guardar consultas completas que se utilizan con frecuencia. Una vista es una tabla
virtual que se genera a partir de una consulta de selección. Escribimos una consulta de selección (sobre una o más
tablas) para leer los datos, y almacenamos el resultado en una vista. Las vistas permiten:
Ocultar información: permitiendo el acceso a algunos datos y manteniendo oculto el resto de la información que no
se incluye en la vista. El usuario opera con los datos de una vista como si se tratara de una tabla, pudiendo
modificar tales datos.
Simplificar la administración de los permisos de usuario: se pueden dar al usuario permisos para que solamente
pueda acceder a los datos a través de vistas, en lugar de concederle permisos para acceder a ciertos campos, así
se protegen las tablas base de cambios en su estructura.
Mejorar el rendimiento: se puede evitar tipear instrucciones repetidamente almacenando en una vista el resultado
de una consulta compleja que incluya información de varias tablas.
Podemos crear vistas con: un subconjunto de registros y campos de una tabla; una unión de varias tablas; una
combinación de varias tablas; un resumen estadístico de una tabla; un subconjunto de otra vista, combinación de
vistas y tablas.
15. APRECIACIÓN DEL EQUIPO:
Las vistas suelen usarse para realizar consultas, centrar, simplificar y personalizar la
percepción de la base de datos para cada usuario.
Las vistas pueden emplearse como mecanismos de seguridad, que permiten a los
usuarios obtener acceso a los datos por medio de la vista, pero no se les conceden el
permiso de obtener acceso directo a las tablas base subyacentes de la vista.
Las vistas pueden utilizarse para copiar datos entre SQL Server a fin de mejorar el
rendimiento y crear particiones de los datos.