Vous êtes sur la page 1sur 4

CENTRO DE GESTION DE MERCADOS LOGISTICA Y TECNOLOGIAS DE LA INFORMACION Fecha:

ANALISIS Y DESARROLLO DE SISTEMAS DE INFORMACION Noviembre/2010

TALLER CREACION DE VISTAS EN SQL

Son tablas lógicas que se crean en la base de datos y existen como un objeto más de
la misma; aunque no tienen existencia física, su implementación permite usarlas de la
misma manera en la que se usan las tablas.

La importancia de su implementación radica en que el administrador de la base de


datos, podrá restringir el acceso a datos confidenciales y a los desarrolladores les
permitirá concentrarse en los datos más relevantes para las transacciones cotidianas.
Además es la forma más conveniente para exportar datos a otras aplicaciones sin que
creen dificultades frente al diseño de bases de datos complejas o en la que se
requieran consultas heterogéneas.

Sintaxis básica

CREATE VIEW [NombreVista]

AS para iniciar la sentencia

Se redacta el contenido de la sentencia sql, teniendo en cuenta las restricciones. Su


utilización es idéntica a la de una tabla normal de la base de datos

Ejemplo usando la base de datos northwind

CREATE VIEW ProduCategView


AS
SELECT CategoryName, ProductName, UnitPrice, UnitsInStock, UnitsOnOrder FROM Products
P
INNER JOIN Categories C ON P.CategoryID=C.CategoryID

/* la ejecutamos utilizándola como una tabla más de la base de datos*/

select *
from ProduCategView

1. Redacte una sentencia que utilice la vista dbo.ProduCategView de tal


manera que muestre el nombre de los productos que inicien con la letra p,
solo si, las unidades en stock son mayor o igual al promedio de las unidades
vendidas.

Si lo considera necesario, modifique la vista agregando campos para unirla


a otras tablas o agréguele todas las tablas que sean necesarias y después
úsela sola.

Agregue aquí la sentencia de la vista modificada y la sentencia en la cual la


usa.

Elaborado por: Instructora Sandra Yanneth Rueda Guevara


SENA - Área de Teleinformática
CENTRO DE GESTION DE MERCADOS LOGISTICA Y TECNOLOGIAS DE LA INFORMACION Fecha:
ANALISIS Y DESARROLLO DE SISTEMAS DE INFORMACION Noviembre/2010

create VIEW ProduCat


AS
SELECT CategoryName,ProductName, p.ProductID, UnitPrice, UnitsInStock,
UnitsOnOrder FROM Products P
INNER JOIN Categories C ON P.CategoryID=C.CategoryID

select ProductName
from ProduCat
p inner join [Order Details] ord on p.ProductID = ord.ProductID
where ProductName like 'p%'
group by ProductName, UnitsInStock
having UnitsInStock >= avg(Quantity)
--Si lo considera necesario, modifique la vista agregando campos para unirla a
otras
--tablas o agréguele todas las tablas que sean necesarias y después úsela sola.
--Agregue aquí la sentencia de la vista modificada y la sentencia en la cual la usa.
ALTER VIEW ProduCategView
AS

select ProductName, s.SupplierID, City, CategoryName, SUM((ord.UnitPrice *


Quantity)- Discount) as vendido
from Products p inner join [Order Details] ord on p.ProductID=ord.ProductID
inner join Suppliers s on p.SupplierID=s.SupplierID inner join Categories c on
c.CategoryID=p.CategoryID
where ProductName like 'p%'
group by ProductName, UnitsInStock, s.SupplierID,City, CategoryName
having(UnitsInStock) >= vendido

select *
from ProduCategView

Elaborado por: Instructora Sandra Yanneth Rueda Guevara


SENA - Área de Teleinformática
CENTRO DE GESTION DE MERCADOS LOGISTICA Y TECNOLOGIAS DE LA INFORMACION Fecha:
ANALISIS Y DESARROLLO DE SISTEMAS DE INFORMACION Noviembre/2010

2. ESTRUCTURA CASE EN SQL


Esta estructura solo se usa en el comando SELECT.

SINTAXIS BÁSICA

SELECT NombreColumnaVista = Case NombreColumnaTablaExistente

WHEN DatoColumnaTabla THEN DatoLlenarColumVista

EJEMPLO UTILIZANDO LA BASE DE DATOS NORTHWIND

Create view CargoEmpleado /*Creamos la vista normal*/


as
SELECT NombrEmpleado=FirstName+' '+LastName, Cargo = CASE Title
cuandoWHEN 'Sales Representative' entonces THEN 'Representante'
WHEN 'Vice President, Sales' THEN 'Vicepresidente'
ELSE 'NO APLICA'
END
FROM Employees
/*Visualizamos CargoEmpleado y agregamos una condicion, tambien podriamos incluir un
criterio de ordenamiento*/
select * from CargoEmpleado
where Cargo <> 'NO APLICA'

2.1 Cree una vista que contenga el nombre del cliente y la nacionalidad del
mismo, utilice una estructura CASE que le permita llenar el campo
nacionalidad, de acuerdo con el país (country) de origen del cliente.

Create view company /*Creamos la vista normal*/

as

select CompanyName, nacionalidad = case Country

WHEN 'Germany' THEN 'alemania'

WHEN 'Mexico' THEN 'mexico'

WHEN 'UK' THEN 'reino unido'

WHEN 'Sweden' THEN 'suecia'

WHEN 'France' THEN 'francia'

WHEN 'Spain' THEN 'españa'

WHEN 'Canada' THEN 'canada'

Elaborado por: Instructora Sandra Yanneth Rueda Guevara


SENA - Área de Teleinformática
CENTRO DE GESTION DE MERCADOS LOGISTICA Y TECNOLOGIAS DE LA INFORMACION Fecha:
ANALISIS Y DESARROLLO DE SISTEMAS DE INFORMACION Noviembre/2010

WHEN 'Argentina' THEN 'Argentina'

ELSE 'NO APLICA'

END

from Customers

2.2 Cree una sentencia que utilizando la vista del punto 2.1, muestre solo los
clientes cuya nacionalidad inicie con la letra A, organice la lista de forma
ascendente por nacionalidad.

select * from company

where nacionalidad like 'A%'

select * from companys

Elaborado por: Instructora Sandra Yanneth Rueda Guevara


SENA - Área de Teleinformática

Vous aimerez peut-être aussi