Vistas en MS SQL Server
Vistas en MS SQL Server
Vistas en MS SQL Server
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
11
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
Salario
Activo Departamento
Taller
Departamentos
Dato
Nmero de Departamento
Descripcin
Identificador del departamento
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.