Está en la página 1de 28

VISTAS

(VIEWS)
Ing. Hernan Alejandro Osores
CLASE 4
DEFINICION
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.
DEFINICIONES
• Una vista es una alternativa para
mostrar datos de varias tablas.

• Una vista es como una tabla virtual


que almacena una consulta.

• Los datos accesibles a través de la


vista no están almacenados en la
base de datos como un objeto
DEFINICIONES
• Una vista almacena una consulta como un
objeto para utilizarse posteriormente.

• Las tablas consultadas en una vista se


llaman tablas base.

• En general, se puede dar un nombre a


cualquier consulta y almacenarla como
una vista.
LAS VISTAS PERMITEN
1. 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.

2. 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.
VISTAS
• Primer ejemplo de vistas
• Ventajas de las vistas
• Definición de vistas
• Modificación de datos mediante
vistas
• Optimización del rendimiento
mediante vistas
• Práctica: Implementación de vistas
EJEMPLO DE VISTA
Products
Products
ProductID
ProductID Productname
Productname UnitPrice
UnitPrice UnitsInStock
UnitsInStock
11 xxxx
xxxx 19
19 ~~~
~~~
22 Yyy
Yyy 21
21 ~~~
~~~
33 zzzz
zzzz 22
22 ~~~
~~~

CREATE
CREATE VIEW
VIEW dbo.VistaPrecios
dbo.VistaPrecios
AS
AS
SELECT
SELECT ProductName
ProductName as
as Producto
Producto ,,
UnitPrice
UnitPrice as
as Precio
Precio
FROM Products
FROM Products

VistaPrecios
VistaPrecios
Producto
Producto Precio
Precio
Te
Te 12
12 Vista del usuario
Cafe
Cafe 14
14
Mate
Mate 15
15
VER CODIGO FUENTE DE VISTAS
1. Boton derecho en la vista: Diseño

2. Con Stored Procedure de sistema :


sp_Helptext VistaPrecios
VENTAJAS DE VISTAS
 Centrar el interés en los datos de los usuarios
 Centrarse sólo en los datos importantes o adecuados.
 Limitar el acceso a los datos confidenciales
 Enmascarar la complejidad de la base de datos
 Ocultar el diseño de la base de datos.
 Simplificar las consultas complejas, incluyendo las
consultas distribuidas a datos heterogéneos
 Simplificar la administración de los permisos de usuario
 Mejorar el rendimiento ( con indices )
 Organizar los datos para exportarse a otras aplicaciones
DEFINICION DE VISTAS
• CREACIÓN DE VISTAS
• EJEMPLO: VISTA DE TABLAS COMBINADAS
• MODIFICACIÓN Y ELIMINACIÓN DE VISTAS
• EVITAR LA INTERRUPCIÓN DE LAS
CADENAS DE PERTENENCIA
• UBICACIÓN DE LA INFORMACIÓN DE
DEFINICIÓN DE VISTAS
• OCULTACIÓN DE LA DEFINICIÓN DE LAS
VISTAS
CREACION DE VISTAS
• CREACIÓN DE UNA VISTA

CASI
CASI CUALQUIER
CUALQUIER CONSULTA
CONSULTA DE
DE LOS
LOS EJERCICIOS
EJERCICIOS ANTERIORES,
ANTERIORES,
PUEDE
PUEDE TRANSFORMARSE
TRANSFORMARSE EN
EN UNA
UNA VISTA
VISTA

• RESTRICCIONES EN LAS DEFINICIONES DE VISTAS


– No se puede incluir la cláusula ORDER BY
– No se puede incluir la palabra clave INTO
PRACTICA DE VISTAS

ENUNCIADO: CREAR UNA VISTA CON LOS


LOS IMPORTES TOTALES DE LOS PEDIDOS
DEL CLIENTE ALFKI:

Nombre PedidosAlfki
PRACTICA DE VISTAS

EJECUTAR UNA VISTA

SELECT * FROM PedidosALFKI

VER RESULTADOS
PRACTICA DE VISTAS
MODIFICACIÓN DE VISTAS

• Alteración de vistas

SENTENCIA
SENTENCIAALTER
ALTER

– Conserva los permisos asignados


– Hace que la instrucción SELECT y las
opciones reemplacen la definición existente
ELIMINACION DE VISTAS

DROP
DROP VIEW
VIEW dbo.(vista)
dbo.(vista)
PROTEGER LA INFORMACIÓN DE LAS VISTAS

Alter view dbo.PedidosAlfki


WITH ENCRYPTION
as
Resto de codigo

- Probar ver el diseño de la vista


MODIFICACION DE DATOS EN LAS VISTAS

No pueden afectar a más de una


tabla subyacente.

No pueden afectar a ciertas


columnas.

Pueden provocar errores si


afectan a columnas a las que la vista
no hace referencia
OPTIMIZACIÓN DEL RENDIMIENTO MEDIANTE VISTAS

Consideraciones acerca del


rendimiento

Uso de vistas para dividir


datos
CONSIDERACIONES ACERCA DEL RENDIMIENTO

Libros
Libros
11Generos
Generos
~~ ~~ ~~ nn
Editoriales CREATE
CREATE VIEW
VIEW dbo.v_LibrosSudamericana
dbo.v_LibrosSudamericana
2211~~Editoriales
~~ ~ ~~ ~ ~~n nn
~ ~ ~ ~n ~ AS
1 ~ AS
3322~~~~ ~~~~ ~ ~~~~yy~nn ~
1 ~ SELECT
SELECT **
2 ~ ~ ~ ~ FROM
4433~~2~~ ~ ~~~~ ~ ~~~~yy~yy ~ FROM dbo.v_Libros
dbo.v_Libros
3 ~ ~ ~ ~ WHERE
WHERE EDitorial=‘Sudamericana’
EDitorial=‘Sudamericana’
5544~~3~~ ~ ~~~~ ~ ~~~~nn~yy ~
4 ~ ~ ~ ~
6655~~4~~ ~ ~~~~ ~ ~~~~yy~nn ~
66 55~~ ~~ ~~ ~~ ~~ ~~yy ~~
66 ~~ ~~ ~~ ~~
v_LibrosSudameriana
v_LibrosSudameriana
V_Novelas
V_Novelas
11 ~~ ~~ ~~ ~~ ~~ ~~ ~~
22 ~~ ~~ ~~ ~~ ~~ ~~ ~~
33 ~~ ~~ ~~ ~~ ~~ ~~ ~~
44 ~~ ~~ ~~ ~~
55 ~~ ~~ ~~ ~~
66 ~~ ~~ ~~ ~~ SELECT
SELECT **
FROM v_LibrosSudamericana
FROM v_LibrosSudamericana
WHERE
WHERE Genero
Genero == ‘Novela'
‘Novela'
OTORGAR PERMISOS SOBRE LAS VISTAS

GRANT SELECT ON Vista


TO user_name

GRANT SELECT ON PedidosAlfki


TO ‘Vendedores’
Ej1:Crear una vista de los pedidos(nro y total) de argentina.

/*Ej1:Crear una vista de los pedidos(nro y total($))


de clientes de argentina.*/
CREATE VIEW PedidosArgentina
AS
SELECT o.OrderID,
sum(od.quantity*od.unitPrice) as Total
FROM orders o
JOIN [Order Details] od on od.OrderID=o.OrderID
JOIN customers c on c.CustomerID=o.CustomerID
WHERE c.Country='Argentina'
GROUP BY o.OrderID
Ej1: Crear una vista de los pedidos(nro y total) de argentina.
Ejer2:Crear una vista con los totales de flete x Pais

/*Crear una vista con los totales de flete x Pais*/

CREATE VIEW FletesxPais


AS
SELECT c.Country,sum(o.freight) as Flete
FROM orders as o
JOIN customers as c on c.CustomerID=o.CustomerID
GROUP BY c.Country
Ejer2:Crear una vista con los totales de flete x Pais
Ejer3 :Crear una vista con los productos ( nombres y cantidades
en el año 1998

/*Ejer2 :Crear una vista con los productos


( nombres y cantidades en el año 1998*/
SELECT p.productName,sum(od.quantity) as Cantidad
FROM products p
JOIN [Order Details] od on od.productid=p.ProductID
JOIN Orders o on o.OrderID=od.OrderID
WHERE year(o.orderdate)=1998
GROUP BY p.ProductName
Ejer5:Crear una vista con las categorias , los proveedores y sus
productos

/*Ejer5:Crear una vista con las categorias ,


los proveedores y sus productos*/
SELECT c.CategoryName, s.CompanyName,
p.ProductName
FROIM Categories as c
JOIN products as p on p.CategoryID=c.CategoryID
JOIN Suppliers as s on s.SupplierID=p.SupplierID
Ejer6:Crear una vista con los empleados, sus importes totales
de los pedidos en 1996

/*Ejer6:Crear una vista con los empleados,


sus importes totales de los pedidos en 1996*/

SELECT e.LastName,sum(od.quantity*od.unitPrice) as
Total
FROM Employees as e
JOIN orders as o on o.EmployeeID=e.EmployeeID
JOIN [Order Details] od on od.OrderID=o.OrderID
WHERE year(o.orderdate)=1996
GROUP BY e.LastName

También podría gustarte