Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Una vista es una tabla virtual cuyo contenido esté definido por una consulta. Al igual que una
tabla real, una vista consta de un conjunto de columnas y filas de datos con un nombre. Sin
embargo, la vista no existe como conjunto de valores de datos almacenados en una base de
datos. 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 act1'1a como filtro de las tablas subyacentes a las que se hace referencia en
ella. La consulta que defme la vista puede provenir de una 0 de varias tablas. o bien de otras
vistas de la base de datos actual u otras bases de datos. Asimismo, es posiblc utilizar las
consultas distribuidas para defmir vistas que utilicen datos de origencs diversos. Esto puede
resultar de utilidad, por ejemplo, si desea combinar datos de estructura similar que proceden
de distintos servidores, cada uno de los cuales almacena los datos para una regién distinta de
la organizacién.
No existe ninguna restricción a la hora de consultar vistas y muy pocas restricciones a la hora
de modificar los datos de éstas. En la ilustración siguiente se muestra una vista basada en dos
tablas.
No existe ninguna restricción a la hora de consultar vistas y muy pocas2 restricciones a la hora
de modificar los datos de éstas. En la ilustración siguiente se muestra una vista basada en dos
tablas.
Las vistas suclen utilizarse para restringir el acceso del usuario a mas concretas de una tabla
(por ejemplo, para permitir que un empleado solo vea las fllas que guardan su trabajo en una
tabla de seguimiénto de actividad laboral). También suelen usarse para restn'ngir el acceso del
usuario a columnas especiflcas (por ejemplo, permitir que los empleados que no trabajen en el
departamento de nominas vean las columnas de nombre, oficina, teléfono y departamento de
la tabla de empleados, pero no permitir que vean las columnas con los datos de salario u otra
informacion personal). Las vistas suelen usarse tambie’n para combinar columnas de varias
tablas de fonna que parezcan una sola tabla y para agregar informacion en lugar de presentar
los detalles.
Una vista es sencillamente un objeto de base de datos que presenta datos de tablas. Se trata
de una consulta SQL que esté pennanentemente almacenada en la base de datos y a la que se
le asigna un nombre, de modo que los resultados de la consulta almacenada son Visibles a
través de la vista, y SQL permite acceder a estos resultados como si fueran de hecho una tabla
real en la base de datos.
Las vistas suelen utilizarse para centrar, simplificar y personalizar 1a 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
e1 permiso de obtener acceso directo a las tablas base subyacentes de la vista. Las vistas
también se pueden utilizar para
Las vistas permitcn a los usuarios centrarse en datos de su intere’s y en tareas especit’ncas de
las que son responsablcs. Los datos innccesarios pucdcn qucdar fuera de la vista. De ese modo,
también es mayor la scguridad dc los datos, dado que los usuarios sélo pueden ver los datos
definidos en la vista y no los que hay en la tabla subyacente.
Las vistas permiten simplificar [a forma en que los usuarios manipulan los datos. Las
combinaciones, proyecciones, consultas UNION y consultas SELECT que se utilizan
frecuentemente pueden defmirse como vistas para que los usuarios no tengan que especiflcar
todas las condiciones y calificaciones cada vez que realicen una nueva operacic’m con los
datos. Por ejemplo, es posible crear como vista una consulta compleja que se utilice para la
elaboracio’n de informes y que realice subconsultas, combinaciones extemas y agregaciones
para recuperar datos de un grupo de tablas. La vista simplifica e1 acceso a los datos ya que
evita la necesidad de escribir o enviar la consulta subyacente cada vez que se genera el
informe; en lugar de eso, se realiza una consulta en la vista. También puede crear funciones en
linea defmidas por el usuario que funcionen de manera légica como vistas parametrizadas o
como vistas con parémetros de condiciones de b&squeda de cléusulas WHERE. ‘
Las vistas permiten que varios usuarios puedan ver los datos de modo distinto, aunque estén
utilizando los mismos simulténeamente. Esto resulta de gran utilidad cuando usuarios que
tienen distintos intereses y calif'lcaciones trabajan con la misma base de datos. Por ejemplo, es
posible crear una vista que recupere {micamente los datos para los clientes con los que trabaja
el responsable comercial de una cuenta. La vista puede determinar qué datos deben
recuperarse en funcién del Id. de inicio de sesién del responsable comercial que utilice la vista.
Es posible utilizar vistas para exportar datos a otras aplicaciones. También es posible importar
informacio’n desde archivos de datos a determinadas vistas, siempre que se puedan insertar
las fllas en la vista mediante la instruccién INSERT.
El operador de conjuntos UNION puede utilizarse dentro de una vista para combinar los
resultados de dos o més consultas de tablas distintas en un solo conjunto. Esta combinacién se
muestra al usuario como una tabla (mica denominada vista dividida. Por ejemplo, si una tabla
contiene datos de ventas de Washington y otra tabla contiene datos de ventas de California,
podn’a crearse una vista a partir de la UNION de ambas tablas. La vista representada incluye
los datos de ventas de ambas zonas. Para utilizar vistas divididas, debe crear varias tablas
idénticas y especificar una restriccién que determine e1 intervalo de datos que se pueden
agregar a cada tabla. A continuacién, se crea la vista a panir de esas tablas base. Cuando se
realiza una consulta en la vista, SQL determina autométicamente qué tablas se ven afectadas
por la consulta y 3610 hace referencia a esas tablas. Por ejemplo, si en una consulta se
especiflca que 5610 se necesitan los datos de ventas de Washington, SQL l'micamente lee la
tabla que contiene los datos de Washington, sin intentar obtener acceso a otms tablas.
Las vistas divididas puedcn estar basadas en datos de distintos origenes, como scrvidorcs
remotos, y no 5610 en tablas de la misma base de datos. Por cjcmplo, para combinar datos de
distintos servidores rcmotos, cada uno de los cuales almaccna datos para una rcgién distima de
su organizacién, puede crear consultas distribuidas que recuperan datos de cada origen de
datos y, a continuacién, crear una vista basada en esas consultas distribuidas. Las consultas
sélo leen datos de las tablas de los servidores remotos que contienen los datos pedidos por la
consulta; no se intenta el acceso al resto de los servidores a los que hacen referencia las
consultas distribuidas de la vista. Cuando realice una particién de datos entre varias tablas o
servidores, las consultas que tengan acceso unicamente a una fraccién de los datos pueden
ejecutarse con mayor rapidez, ya que se deben recorrer menos datos. Si las tablas se
encuentran en servidores distintos 0 en un equipo con varios procesadores, también se podré
recorrer en paralelo cada tabla incluida en la consulta, lo que aumenta el rendimiento de las
consultas. Ademés, las tareas de mantenimiento (como, por ejemplo, la reconstruccién de
indices 0 las copias de seguridad de una tabla), podrén ejecutarse con mayor rapidez.
Mediante 1a utilizacién de una vista dividida, los datos siguen apareciendo como una sola
tabla y SC 165 puede hacer una
consulta tal cual, sin necesidad de hacer referencia manualmente a la tabla subyacente que
corresponda.
especiflcada si la consulta incluye columnas calculadas o si produce dos columnas con nombres
idénticos.
Las vistas divididas puedcn estar basadas en datos de distintos origenes, como scrvidorcs
remotos, y no 5610 en tablas de la misma base de datos. Por cjcmplo, para combinar datos de
distintos servidores rcmotos, cada uno de los cuales almaccna datos para una rcgién distima de
su organizacién, puede crear consultas distribuidas que recuperan datos de cada origen de
datos y, a continuacién, crear una vista basada en esas consultas distribuidas. Las consultas
sélo leen datos de las tablas de los servidores remotos que contienen los datos pedidos por la
consulta; no se intenta el acceso al resto de los servidores a los que hacen referencia las
consultas distribuidas de la vista. Cuando realice una particién de datos entre varias tablas o
servidores, las consultas que tengan acceso unicamente a una fraccién de los datos pueden
ejecutarse con mayor rapidez, ya que se deben recorrer menos datos. Si las tablas se
encuentran en servidores distintos 0 en un equipo con varios procesadores, también se podré
recorrer en paralelo cada tabla incluida en la consulta, lo que aumenta el rendimiento de las
consultas. Ademés, las tareas de mantenimiento (como, por ejemplo, la reconstruccién de
indices 0 las copias de seguridad de una tabla), podrén ejecutarse con mayor rapidez.
Mediante 1a utilizacién de una vista dividida, los datos siguen apareciendo como una sola
tabla y SC 165 puede hacer una
consulta tal cual, sin necesidad de hacer referencia manualmente a la tabla subyacente que
corresponda.
Para crear vistas se utiliza la sentencia CREATE VIEW. Esta sentencia asigna un nombre a la
vista y especiflca la consulta que la defme. Su sintaxis es la siguiente:
especiflcada si la consulta incluye columnas calculadas o si produce dos columnas con nombres
idénticos.
Los parémctros opcionalcs bane dams y propielario indican la base de datos donde se crea la
vista y su propictario. El parz'nnctro m2m/7re_vista es el nombre de la vista. Los nombres de
las vistas debcn cumplir las rcglas de los identificadores. E1 parémetro columna es el nombre
que se va a utilizar para una columna en una vista. solo es necesario asignar un nombre a una
columna en CREATE VIEW cuando una columna proviene de una expresién aritmética, una
funcién o una constante; cuando dos o més columnas puedan tener el mismo nombre
(normalmente, debido a una combinacion); o cuando una columna de una vista recibe un
nombre distinto a] de la columna de la que proviene. Los nombres de columna se pueden
asignar también en la instruccion SELECT. Si no se especiflca columna, las columnas de la vista
adquieren los mismos nombres que las columnas de la instruccion SELECT. En las columnas de
la vista, los permisos de un nombre de columna se aplican a través de una instruccion CREATE
VIEW 0 ALTER VIEW, independientemente del origen de los datos subyacentes. El parémetro n
es un marcador de posicion que indica que se pueden especiflcar varias columnas.
WITH CHECK OPTION exige que todas las instrucciones de modificacién de datos ejecutadas
contra la vista se adhieran a los criterios establecidos en select_statement. Cuando una flla se
modifica mediante una vista, WITH CHECK OPTION garamiza que los datos permanecerz’m
visibles en toda la vista despuéS de confirmar la modificacion.
WITH ENCRYPTION indica que SQL Server cifra las columnas de la tabla dcl sistema que
conticnen el tcxto dc la instruccién CREATE VIEW. Utilizar WITH ENCRYPTION evita que la vista
se publique como parte de la duplicacion de SQL Server. SCHEMABINDING enlaza la vista al
csqucma. Cuando se especiflca SCHEMABINDING, instruccidn_se/eccion dcbc incluir los
nombres con dos partes (propietarioobjeto) de las tablas, vistas o funciones definidas por el
usuario a las que se hace referencia. Las vistas 0 las tablas que participan en una vista creada
con la cléusula de enlace de esquema no se pueden quitar ni alterar, de forma que deja de
tener un enlace de esquema. De lo contrario, SQL Server genera un error. Ademés, las
instrucciones ALTER TABLE sobre tablas que participan en vistas que tienen enlaces de
esquemas provocarén un error si estas instrucciones afectan a la defmicion de la' vista.
VIEW_METADATA especiflca que SQL Server devolveré a las API de DBLIB, ODBC y OLE DB la
informacion de metadatos sobre la vista, en vez de las tablas o tabla base, cuando se soliciten
los metadatos del modo de exploracion para una consulta que hace referencia a la vista. Los
metadatos del modo de exploracion incluyen informacion sobre la tabla base a la que
pertenecen las columnas del conjunto de resultados. Para las vistas creadas con la opcion
VIEW_METADATA, los metadatos del modo de exploracion devuelven el nombre de vista en
vez de los nombres de la tabla base cuando se describen las columnas de la vista en el
conjunto de resultados. Cuando se crea una vista WITH VIEW_METADATA, todas sus columnas
(excepto timestamp) son actualizables si la vista tiene los desencadenadores INSERT 0 UPDATE
INSTEAD OF.
Una vista 5610 se puede crear en la base de datos actual y puede hacer referencia a un
méximo de 1.024 columnas. Cuando se realiza una consulta a través de una vista, SQL Server
comprueba que todos los objetos de base de datos a los que se hace referencia en la
instruccion existen, que son vélidos en el contexto de la instruccion y que las instrucciones de
modificacion de datos no infringen ninguna regla de integridad de los datos. Las
comprobaciones que no son correctas devuelven un mensaje (16 error. Las comprobaciones
correctas convierten la accion en una accién contra las tablas subyacentes. Si una vista
depende de una tabla (o vista) que se ha eliminado, SQL Server produce un mensaje de error si
alguien trata de utilizar la vista. Si 56 crea una nueva tabla (o vista), y la estructura de la tabla
no cambia de la tabla base anterior para sustituir a la eliminada, se puede volver a utilizar la
vista de nuevo. Si cambia la estructura de la nueva tabla (o vista), seré necesario eliminar . la
vista y volver a crearla. Cuando se crea una vista, el nombre de la vista 56 almacena en la tabla
sysobjects. La informacion acerca de las columnas defmidas en una vista 56 agrega a la tabla
syscolumns y la informacion acerca de las dependencias de la vista se agrega a la tabla
sysdepends. Ademés, el texto de la instruccién CREATE VIEW se agrega a la tabla
syscomments. Se trata de un proceso similar a1 de un procedimiento almacenado; cuando la
vista se ejecuta por primera vez, solo su érbol de consulta se almacena en la cache’ de
procedimientos. Cada vez que se tiene acceso a una vista, su plan de ejecucion se vuelve a
compilar.
V istas horizontales
_,.. mmmxrmm“
Si queremos ver la informacién de la vista recién creada, basta con utihzar la‘ sentenc1a
SELECT sobre la vista (lo mismo que si fuera una tabla).
En la consulta siguiente se crea una vista que contiene fmicamente las oficinas de la regién
Este y se muestra su contenido.
Vistas verticales
Es muy comlin utilizar vistas que dividan una tabla fuente tanto horizontal como
verticalmente. Por ejemplo, la vista que se crea a continuacién contiene e] m’lmero de cliente,
el nombre de la empresa y el limite de crédito de todos los clientes asignados a1 empleado
mimero 105.
Vistas agrupadas
Se denominan vistas agrupadas las que contienen una cléusula GROUP BY que permite agrupar
filas relacionadas de datos y producir una f11a de resultados para
cada grupo que resume los datos de 686 grupo. En la consulta siguiente se crea una Vista que
contiene datos de pedidos resumidos por cada vendedor.
Vistas compuestas
Las vistas compuestas se crean especiflcando en la definicién de la vista una consulta que
involucre dos o més tablas. De esta forma, la vista extrae sus datos de dos o més tablas y
presenta los resultados como una {mica tabla virtual. Este tipo de vistas suele simplificar las
consultas multitabla. Como ejemplo, creamos una vista en la tabla PEDIDOS que muestre los
nombres de los clientes y de los empleados en vez de sus nL’Imeros.
Actualizacién de vistas
UPDATE sobre ellas, pero hay que tener presentes las siguientes reglas:
No se debe especiflcar DISTINCT para que las filas duplicadas no se eliminen de los resultados
de las consultas.
Cada elemento de seleccion debe ser una referencia de columna simple (no puede contener
expresiones, columnas calculadas ni funciones de columna).
La cléusula WHERE no debe incluir una subconsulta. La consulta no debe incluir una cléusula
GROUP BY 0 HAVING.
Si 56 quiere que los datos pennanecezcan visibles en toda la Vista después de confirmar las
modificaciones en ella, deberé crearse la Vista con la 0pci6n WITH CHECK OPTION. A
continuacién, se presenta un ejemplo.