Está en la página 1de 26

Vistas en MS SQL Server

Bases de Datos I Universidad Catlica II Cuatrimestre - 2012

Definicin Vistas
Una vista se puede considerar una tabla virtual o una consulta almacenada. El conjunto de resultados de la instruccin 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.

Definicin Vistas
Al igual que una tabla real, una vista consta de un conjunto de columnas y filas de datos con un nombre. Sin embargo, a menos que est indizada, una 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 dinmica cuando se hace referencia a la vista.

Definicin Vistas
Una vista acta 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. Asimismo, es posible utilizar las consultas distribuidas para definir vistas que utilicen datos de orgenes heterogneos. 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 regin distinta de la organizacin.

Definicin Vistas

Tipos de vistas

Vistas estndar
La combinacin de datos de una o ms tablas mediante una vista estndar permite satisfacer la mayor parte de las ventajas de utilizar vistas. stas se utilizan para:
Para centrarse en datos especficos Para simplificar la manipulacin de datos Para proporcionar compatibilidad con versiones anteriores Para personalizar datos Para exportar e importar datos Para combinar datos de particiones entre servidores
7

Vistas indizadas (analizadas ms adelante)


Una vista indizada es una vista que se ha materializado. Esto significa que se ha calculado y almacenado. Se puede indizar una vista creando un ndice agrupado nico en ella. Las vistas indizadas mejoran de forma considerable el rendimiento de algunos tipos de consultas. Las vistas indizadas funcionan mejor para consultas que agregan muchas filas. No son adecuadas para conjuntos de datos subyacentes que se actualizan frecuentemente.
8

Vistas con particiones (analizadas ms adelante)


Una vista con particiones junta datos horizontales con particiones de un conjunto de tablas miembro en uno o ms servidores. Esto hace que los datos aparezcan como si fueran de una tabla. Una vista que junta tablas miembro en la misma instancia de SQL Server es una vista con particiones local.

Crear una vista


Sintaxis bsica
CREATE VIEW NOMBREVISTA (NombresEncabezadosColumnas)AS SENTENCIAS SELECT FROM TABLA;

El contenido se muestra consultado la vista de la misma forma que una tabla


select *from NOMBREVISTA;
10

Crear una vista


Por ejemplo, creamos otra vista de "empleados" denominada "vista_empleados_ingreso" que almacena la cantidad de empleados por ao: create view vista_empleados_ingreso (fecha, cantidad) as select datepart(year, fechaingreso), count(*) from empleados group by datepart(year, fechaingreso)

11

Restricciones sobre Vistas


Existen algunas restricciones para el uso de "create view", a saber:
No puede incluir las clusulas "compute" ni "compute by" ni la palabra clave "into" No se pueden crear vistas temporales ni crear vistas sobre tablas temporales. No se pueden asociar reglas ni valores por defecto a las vistas. Se pueden construir vistas sobre otras vistas.

12

Evaluacin CASE

Definicin <CASE>
Evala una lista de condiciones y devuelve una de las varias expresiones de resultado posibles. La expresin CASE tiene dos formatos:
La expresin CASE sencilla compara una expresin con un conjunto de expresiones sencillas para determinar el resultado

La expresin CASE buscada evala un conjunto de expresiones booleanas para determinar el resultado
14

Definicin <CASE>
Ambos formatos admiten un argumento ELSE opcional. Se puede utilizar en cualquier instruccin o clusula que permite una expresin vlida. Por ejemplo, puede utilizar CASE en instrucciones como SELECT, UPDATE, DELETE y SET, y en clusulas como: IN, WHERE, ORDER BY, entre otros

15

Ejemplo <CASE>
Usar una instruccin SELECT con una expresin CASE sencilla
En una instruccin SELECT, una expresin CASE sencilla solo permite una comprobacin de igualdad; no se pueden hacer otras comparaciones. En este ejemplo se utiliza la expresin CASE para cambiar la presentacin de categoras de lnea de productos con el fin de hacerla ms comprensible.

16

Ejemplo <CASE>
Usar una instruccin SELECT con una expresin CASE de bsqueda
En una instruccin SELECT, la expresin CASE de bsqueda permite sustituir valores en el conjunto de resultados basndose en los valores de comparacin. En el ejemplo siguiente se presenta el precio de venta como un comentario basado en el intervalo de precios de un producto.

17

Ejemplo <CASE>
Usar CASE en una clusula ORDER BY
En los ejemplos siguientes se utiliza la expresin CASE en una clusula ORDER BY para determinar el criterio de ordenacin de las filas segn el valor de una columna dada. En este ejemplo se evala el valor de la columna SalariedFlag de la tabla HumanResources.Employee:
Los empleados que tienen la columna SalariedFlag establecida en 1 se devuelven en orden descendente segn el EmployeeID. Los empleados que tienen la columna SalariedFlag establecida en 0 se devuelven en orden ascendente segn el EmployeeID.

18

Ejemplo <CASE>
Usar CASE en una clusula ORDER BY
En este otro ejemplo, el conjunto de resultados se ordena segn la columna TerritoryName:
Cuando la columna CountryRegionName es igual a 'United States. SI NO, ordene con la columna CountryRegionName en las dems filas.

19

Ejemplo <CASE>
Usar CASE en una instruccin UPDATE
En el ejemplo siguiente se utiliza la expresin CASE en una instruccin UPDATE para determinar el valor que est establecido en la columna VacationHours para los empleados con el valor de SalariedFlag establecido en 0. Si al restar 10 horas de VacationHours da un valor negativo, VacationHours se incrementa en 40 horas; de lo contrario, VacationHours se incrementa en 20 horas. La clusula OUTPUT se utiliza para mostrar los valores de las vacaciones antes y despus.

20

Taller
Primeramente, implementaremos las tablas a partir de la siguiente informacin tomando en cuenta la implementacin de las distintas restricciones (constraints) vistas en la clase anterior.
Informacin de personas Dato Identificacin de la persona Nombre de la persona Sexo Estado civil Fecha de nacimiento Descripcin Tipo y nmero de identificacin Nombre y apellidos M: masculino, F: Femenino 0: Soltero, 1: Casado Mayor a 1900 21

Taller
Informacin de empleados

Dato
Identificacin de empleado

Descripcin
Nmero de empleado

Fecha de ingreso

Si no se suministra, debe corresponder a la fecha actual Mayor a 150000


0: Inactivo, 1: Activo Departamento al que pertenece el empleado 22

Salario
Activo Departamento

Taller
Departamentos

Dato
Nmero de Departamento

Descripcin
Identificador del departamento

Departamento

Nombre o descripcin del departamento

23

Taller
Ahora, a partir de estas tablas, implementaremos una vista que nos permita visualizar la informacin de las personas tomando en cuenta los datos de empleado. De manera especfica la vista debe retornar los siguientes datos:
Identificacin Nombre y Apellidos Sexo, indicado mediante: Femenino, Masculino Estado civil, indicado mediante: Soltero o Casado Fecha de nacimiento Departamento Fecha de ingreso a la compaa Salario Nivel de salario, de acuerdo a la siguiente escala: Bajo (150000 a 349000), Medio (350000 a 549000) o Medio-Alto (550000 a 749000) y Alto (750000 en adelante) Activo, indicado mediante: Si o No

24

Tarea
Implementar las tablas de Telfonos y Direcciones de referencia, adems de una vista para cada uno de estos rubros (Telfonos y Direcciones de empleados):
Telfonos
Dato Tipo de telfono Descripcin Indica el tipo de telfono suministrado por el usuario, por ejemplo: 1 Habitacin 2 Celular Detalle del nmero telefnico 25

Nmero de telfono

Detalle

Alguna anotacin sobre el nmero suministrado, por ejemplo: El nmero pertenece a mi esposa

Tarea
Direcciones Dato Tipo de direccin Descripcin Tipo de direccin: 1 Primaria (residencia por ejemplo) 2 Secundaria (direccin alternativa) Provincia: 1- San Jos 2- Alajuela 3- Cartago 4- Heredia Detalle 5- Guanacaste 6- Puntarenas 7- Limn 26

Provincia

Para efectos de minimizar nuestro ejercicio, ignoramos los cantones y distritos por separado, ya que los incluiremos dentro de un detalle.