You are on page 1of 5

VISTAS

Una vista es una consulta almacenada que devuelve un conjunto de


resultados provenientes de una o ms tablas y a la que se le pone un nombre.
Una vista es una tabla virtual, aparece como una tabla ms del esquema,
aunque realmente no lo es.
Desde el punto de vista del usuario, la vista es como una tabla real pero sus
datos no se almacenan fsicamente en la Base de Datos.
Dos son las principales razones por las que podemos crear vistas:
Seguridad, nos pueden interesar que los usuarios tengan acceso a una
parte de la informacin que hay en una tabla, pero no a toda la tabla.
Comodidad, como hemos dicho el modelo relacional no es el ms
cmodo para visualizar los datos, lo que nos puede llevar a tener que
escribir complejas sentencias SQL, tener una vista nos simplifica esta
tarea.
CREACION DE VISTAS

Para crear una

vista debemos

utilizar la

sentencia

CREATE

VIEW,

debiendo proporcionar un nombre a la vista y una sentencia SQL SELECT


vlida.
CREATE VIEW <nombre_vista>
AS
(<sentencia_select>)
Ejemplo: Crear una vista donde visualicemos los campos nombre de la
compaa, nombre del contacto, ciudad y pas de los proveedores.
CREATE VIEW V_Proveedor
AS
SELECT Companyname, Contactname, city, country
FROM Suppliers

No se pueden incluir la clusula ORDER BY dentro de una vista.


Opcionalmente se le puede asignar un nombre a cada columna de la vista.
Existen dos casos en donde es obligatoria la asignacin de nombres a las
columnas:

Facultad de Ingeniera Industrial, Sistemas e Informtica

Ing. Ana Doris M. Barrera Loza

1) Cuando la consulta incluyo consultas calculadas.


2) Cuando la consulta produce nombres idnticos.
Segn con el propsito con el que se organizan las vistas, pueden clasificarse
en los siguientes tipos:
a) Horizontales o por Restriccin

Son las que restringen el acceso de un usuario a nicamente un conjunto


de filas de una tabla.
Ejemplo: Si un empleado desea ver las ventas realizadas por l, se debe
crear la siguiente vista:
CREATE VIEW V_Venta5
AS
SELECT *
FROM Orders
WHERE employeeId = 5

Las vistas horizontales son adecuadas cuando se quiere proporcionar una


tabla privada para cada usuario compuesta con las final que realmente
son necesarias slo para ese usuario.
b) Verticales o por Proyeccin

Son aquellos que restringen el acceso de un usuario slo a ciertas


columnas de una tabla.
Ejemplo: El Jefe de Personal quiere un listado slo con el cdigo del
empleado, su nombre y apellido, direccin y ciudad.
CREATE VIEW V_Lista_Emp
AS
SELECT EmployeeID,FirstName, LastName, Address, City
FROM Employees

c) Subconjuntos filas/columnas

Consiste en crear filas con ciertas filas y ciertas columnas de una tabla.
Ejemplo: Visualizar el nombre de la Compaa, nombre del Contacto y
direccin de todos los clientes de la ciudad de Madrid

Facultad de Ingeniera Industrial, Sistemas e Informtica

Ing. Ana Doris M. Barrera Loza

CREATE VIEW V_Clientes_Madrid


AS
SELECT CompanyName, ContactName, Address
FROM Customers
Where City = 'Madrid'

d) Agrupados

Son vistas que incluyen la clusula GROUP BY en la consulta


especificada.
Ejemplo: Hacer una vista que contenga la cantidad de pedidos por
trabajador
CREATE VIEW v_cantidad AS
SELECT EmployeeId,Count(OrderId) Cantidad
FROM Orders
GROUP BY EmployeeID

e) Compuestas

Son vistas creadas a partir de datos de dos o ms tablas. Presentan los


datos como una nica tabla virtual.
Ejemplo: Hacer una vista de la tabla Pedidos, pero visualizando el nombre
y apellido de los empleados y Nombre de las compaas que son nuestros
clientes en vez de sus respectivos cdigos.
CREATE VIEW V_Pedidos AS
SELECT OrderID, FirstName Nombre_Empleado,LastName
Apellido_Empleado,

CompanyName Cliente

FROM Orders O INNER JOIN Employees E


ON E.EmployeeID = O.EmployeeID INNER JOIN Customers C
ON O.CustomerID = C.CustomerID

ACCESO A VISTAS

El usuario accede a los datos de una vista exactamente igual como si estuviera
accediendo a los datos de una tabla.
Ejemplo: Visualizar los pedidos de los trabajadores cuyo apellido empiezan con
las letras de la A hasta la E.

Facultad de Ingeniera Industrial, Sistemas e Informtica

Ing. Ana Doris M. Barrera Loza

SELECT *
FROM V_Pedidos
WHERE Apellido_Empleado LIKE '[A-E]%'
ORDER BY Apellido_Empleado

MODIFICACION DE VISTAS

Si queremos, modificar la definicin de nuestra vista podemos utilizar la


sentencia ALTER VIEW. En este caso queremos aadir los campos direccin y
telfono a la vista.
ALTER VIEW V_Proveedor
AS
SELECT Companyname, Contactname, city, country, Address, Phone
FROM Suppliers

ELIMINACION DE VISTAS

Podemos eliminar la vista a travs de la sentencia DROP VIEW. Para eliminar


la vista que hemos creado anteriormente se utilizara:
DROP VIEW V_Proveedor

ACTUALIZACION A TRAVES DE LAS VISTAS

Para que una vista se pueda actualizar debe existir una relacin directa entre
las filas y las columnas de la vista y las de la tabla fuente. Se puede actualizar
a travs de las vistas si la consulta que la define, satisface las siguientes
restricciones:
1.- No utiliza DISTINCT
2.- En FROM solo debe indicar una tabla.
3.- La lista de seleccin no puede contener expresiones, columnas calculadas
o funciones de columna.
4.- WHERE no debe incluir subconsultas.
5.- No debe de incluir GROUP BY ni HAVING.

Facultad de Ingeniera Industrial, Sistemas e Informtica

Ing. Ana Doris M. Barrera Loza

Ejemplo: Crear una vista donde veamos todas las zonas de la regin Norte
CREATE VIEW V_R_Norte AS
SELECT *
FROM Territories
WHERE RegionId = 3

Ahora aadimos una nueva zona en la regin Norte a travs de la consulta


V_R_Norte
INSERT INTO V_R_Norte (TerritoryId, TerritoryDescription,
RegionId)
VALUES ('45850', 'Los Angeles', 3)

Ahora cambiaremos una zona (48084) a otra regin (2).


UPDATE V_R_Norte
SET Region Id = 2
WHERE TerritoryId = '48084'

Ahora eliminamos la zona 45850.


DELETE
FROM V_R_Norte
WHERE TerritoryId = '45850'

Facultad de Ingeniera Industrial, Sistemas e Informtica

Ing. Ana Doris M. Barrera Loza

You might also like