You are on page 1of 18

Sesin 6

Laboratorio de Base de Datos

Sesin 6
I.

SQL Server 2005: Joins y Vistas

OBJETIVOS Conocer el entorno de trabajo de SQL Server 2005 Crear bases de datos en SQL Server 2005 Crear tablas en SQL Server 2005 Repasar las sentencias SQL aprendidas Conocer el uso de joins en las consultas Realizar consultas usando joins Entender el funcionamiento y el uso de las vistas Crear y usar vistas TEMAS A TRATAR Microsoft SQL Server 2005 Ediciones de SQL Server 2005 Creacin de Base de Datos en SQL Server 2005 Creacin de Tablas Transact-SQL JOINS Vistas MARCO TERICO

II.

III.

1. MICROSOFT SQL SERVER 2005 SQL Server 2005 es la siguiente edicin de su predecesor en el mercado, SQL Server 2000, el cual tuvo muy buena aceptacin en las empresas por su alta calidad. Con esta versin se ha conseguido mejorar an ms SQL Server 2000, mejorando la fiabilidad, escalabilidad, rendimiento y manejo. Muchas de las empresas controlan sus redes locales con el conocido sistema operativo Windows Server 2003, siendo uno de los ms extendidos y preferidos por la mayora de empresas. Este sistema operativo de Microsoft es el entorno ideal para la instalacin de SQL Server 2005, convirtindose en la mejor pareja posible para la administracin. Adems la reciente aparicin de SQL Server 2005, conlleva que est preparado para la expansin por la red de redes (Internet) ya que por ejemplo es capaz de generar automticamente documentos XML, se trata del formato estndar de datos que facilita la transmisin de datos en Internet. Como veremos en el siguiente punto, tenemos diferentes versiones de SQL Server 2005, cada una orientada a cubrir unas determinadas necesidades de diferentes tipos de empresas o clientes, pero podemos enumerar una serie de propiedades comunes para todas ellas, que demuestran que SQL Server es bastante ms que un servidor de base de datos:

Servidor de base de datos, de gran rendimiento. RDBMS que pueden ser instalados tanto en sistemas de usuarios como Windows XP, mquinas de multiprocesador de 64 bits, redes de ordenadores. La administracin se facilita mediante interfaz grfica de usuario. Capaz de tener varias instancias del servidor en una nica mquina. Acceso directo a datos desde pgina Web, gracias a la generacin automtica de documentos XML, consiguiendo una completa integracin con Internet. Posibilidades de data warehousing y data mining, para almacenar y analizar datos, funcionando como Online Transaction Processing (OLTP) y con servicios Online Analytical Processing (OLAP). 1 Ing. Oscar Ramrez Valdez

Sesin 6

Laboratorio de Base de Datos

Comunicacin perfecta con otras aplicaciones Microsoft, pudiendo presentar informacin en hojas de Excel, por citar un ejemplo. Integracin perfecta con herramientas de desarrollo de software como Visual Studio 2005. Lenguaje T-SQL para ampliar las posibilidades de las tareas a realizar. Capacidad para interpretar funciones realizadas con CLR (Common Language Runtime) de plataformas .NET, esto nos permite realizar funciones en lenguajes muy conocidos como Visual Basic o C#. 2. EDICIONES DE SQL SERVER 2005 Edicin Descripcin

Edicin bsica del servidor, limitada en el nmero de usuarios y en cuanto al volumen de datos a gestionar. Es la versin que Microsoft nos ofrece SQL Server 2005 Express gratuitamente y sin duda es la versin ideal para comenzar a trabajar y Edition desde la cual podemos ir ampliando a versiones superiores si nos fuese necesario. Permite ser distribuida con programas de desarrollo propios con su correspondiente licencia. SQL Server 2005 Workgroup Edition SQL Server 2005 Standard Edition Orientada a pequeas empresas, no tiene lmite de nmeros de usuarios ni de capacidad de almacenamiento en cuanto al tamao de la base de datos. No incluye las herramientas avanzadas de las versiones superiores. Pensada para empresas de mediano tamao, cuenta con herramientas avanzadas para la administracin y anlisis de datos. Esta edicin est preparada para gestionar las empresas de mayor tamao, ya que ofrece mayor potencia que las anteriores. Y adems de aadir servicios avanzados y estar preparada para trabajar con multiprocesadores de 64 Bits, amplias memorias RAM. Podemos hablar de bases de datos con tamaos dados en Terabytes, para que puedas hacer una idea de la cantidad de informacin que puede llegar a gestionar con fiabilidad. Tiene la capacidad de trabajar con Clsters de ordenadores, de modo que el fallo de uno de ellos active otro ordenador que se encontraba pasivo hasta el momento del error. Se trata de una versin que cuenta con las mismas caractersticas que su versin anterior, con la diferencia de que va dirigida a desarrolladores. Porque si tienen las mismas caractersticas, no se trata de la misma edicin? Esta versin especial est limitada por su licencia que no permite que se ejecute en entornos de explotacin y slo se permite para desarrollo. Otra diferencia importante, es que permite ser instalada en Sistemas Operativos Windows XP Professional Edition.
Tabla N 1: Ediciones de SQL Server 2005

SQL Server 2005 Enterprise Edition

SQL Server 2005 Developer Edition

3. CREACIN DE BASES DE DATOS A continuacin se describen los pasos a seguir para la creacin de una base de datos: 1. Ingrese a Inicio/Programas/Microsoft SQL Server 2005/SQL Server Management Studio Express 2. En la ventana de conexin al servidor (Connect to Server) especifique los valores mostrados en la siguiente tabla: Property Server Type Server name (nombre_mquina\nombre_instancia) Authentication Value Database Engine PC100\SQL2005 Windows Authentication

Tabla N 2: Propiedades de la Conexin al Servidor

Ing. Oscar Ramrez Valdez

Sesin 6

Laboratorio de Base de Datos

3. En el explorador de objetos (Object Explorer), clic derecho sobre Databases y seleccione New Database. 4. En la ventana New Database, especifique el nombre de la base de datos como PruebaDB, y puede asignarle el tamao inicial (Initial Size) que desee, para el ejemplo le asignaremos un tamao inicial de 5 Mb.

5. Para asignar las opciones de crecimiento de la Base de Datos, en la columna Autogrowth del archivo PruebaDB, haga clic en el botn (...). 6. Podemos indicar la forma en la crecer la Base de Datos, para el ejemplo desmarcamos la opcin Enable Autogrowth y seleccionamos OK.

7. Deshabilitamos tambin la opcin de crecimiento automtico para el archivo de transacciones PruebaDB_Log.

Ing. Oscar Ramrez Valdez

Sesin 6

Laboratorio de Base de Datos

8. Seleccionamos OK y verificamos en el explorador de objetos la creacin de la base de datos PruebaDB. Si no aparece, hacemos clic derecho sobre Databases y seleccionamos Refresh. 4. CREACIN DE TABLAS 1. En la base de datos creada PruebaDB, seleccione el nodo Tables, clic derecho y seleccione New Table. 2. Ingrese los siguientes campos para la creacin de la tabla.

3. Para colocar una clave primaria seleccione el campo que ser primary key, y en la barra de herramientas haga clic sobre el botn con forma de llave, set primary key.

4. Para crear un campo cuyo valor se genere automticamente (auto_increment) se debe seleccionar en las propiedades de la tabla, en Identity Colum, debe elegir el campo cdigo.

Ing. Oscar Ramrez Valdez

Sesin 6

Laboratorio de Base de Datos

5. Para guardar los cambios realizados en la tabla, seleccin el botn Save de la barra de herramientas e ingrese el nombre de la tabla, CLIENTES.

6. Ahora creamos una tabla TIPOS, con los siguientes campos:

7. Para crear una clave fornea vamos a modificar la tabla CLIENTES, la seleccionamos, le damos clic derecho y elegimos Modify. En la barra de herramientas elegimos el botn que nos permite definir las relaciones.

Ing. Oscar Ramrez Valdez

Sesin 6

Laboratorio de Base de Datos

8. Seleccionamos el botn Add y en Table and Colum Specification, hacemos clic sobre el botn ()

9. Seleccionamos e ingresamos la siguiente informacin para crear una clave fornea en el campo codtipo de la tabla CLIENTES y relacionar la tabla con TIPOS.

Ing. Oscar Ramrez Valdez

Sesin 6

Laboratorio de Base de Datos

10. Guarde los cambios realizados y verifique la creacin de la clave fornea desde el explorador de objetos, si es necesario actualice la tabla CLIENTES (Refresh) para visualizar la clave creada.

5. TRANSACT-SQL El lenguaje de consultas que Microsoft SQL Server utiliza es una variante del ANSI-standard Structured Query Language, SQL, y es llamado Transact-SQL. Notas: todas las sentencias SQL utilizadas en las sesiones de prctica anteriores, se trabajan de la misma forma en SQL Server 2005 (insert, update, delete, select, drop).

Ing. Oscar Ramrez Valdez

Sesin 6

Laboratorio de Base de Datos

6. COMBINACIONES (JOINS) Las combinaciones permiten recuperar datos de dos o ms tablas segn las relaciones lgicas entre ellas. Las combinaciones indican cmo debe usar Microsoft SQL Server 2005 los datos de una tabla para seleccionar las filas de otra tabla. Cuando se trabaja con mltiples tablas en una consulta, se combinan (join) las tablas para producir un conjunto de resultados tabular. Se tienen principalmente dos tipos de joins: inner joins y outer joins. Inner joins devuelven solo los datos que satisfacen la condicin del join, las filas que no coinciden, que no estn relacionadas con la otra tabla, no son recuperados. Outer joins nos permiten recuperar las filas que no coinciden adems de las filas que coinciden que estn relacionadas. 6.1. INNER JOIN Es el ms sencillo de entender. Muestra solo los registros que coinciden en ambas tablas.

EJEMPLO: La siguiente consulta recupera las filas registros que existen en ambas tablas, Employee y EmployeeAddress. Las tablas estn relacionadas mediante la columna EmployeeId.
SELECT E.EmployeeID, E.Title, EA.AddressID, PA.AddressLine1, PA.City FROM HumanResources.Employee AS E INNER JOIN HumanResources.EmployeeAddress AS EA ON E.EmployeeID = EA.EmployeeID INNER JOIN Person.Address AS PA ON PA.AddressID = EA.AddressID;

6.2. OUTER JOIN Outer joins recuperan filas con datos que coinciden as como filas con datos no coincidentes. Hay tres tipos de outer joins disponibles: left outer join, right outer join y full outer join.

LEFT OUTER JOIN: Recupera todas las filas de la tabla de la izquierda LEFT, as estn o no relacionadas con la tabla de la derecha. Para las filas relacionadas con la tabla de la derecha, los datos sern recuperados. Para las filas que no estn relacionadas con la tabla de la derecha, las columnas en la tabla de la derecha devolvern NULL.

Ing. Oscar Ramrez Valdez

Sesin 6

Laboratorio de Base de Datos

EJEMPLO: La siguiente consulta recupera una fila por cada empleado de la tabla Employee. Por cada empleado, si el registro correspondiente existe en la tabla EmployeeAddress, los datos para esa tabla tambin sern recuperados. Sin embargo, si un registro de la tabla Employee no se relaciona con algn registro de la tabla EmployeeAddress, los registros de la tabla Employee sern recuperados con valores nulos (NULL) para cada columna de la tabla EmployeeAddress que debera ser mostrada.
SELECT P.ProductID, P.Name, P.ProductNumber, P.ProductModelID, PM.Name FROM Production.Product P LEFT OUTER JOIN Production.ProductModel PM ON P.ProductModelID=PM.ProductModelID;

RIGHT OUTER JOIN: Es parecido al left join, aunque esta vez, los registros de la tabla derecha sern recuperados. Todas las filas de la tabla de la derecha RIGHT son incluidas. Las filas que no coincidan en la tabla izquierda, no son includas en el resultado devuelto.

EJEMPLO:
SELECT P.ProductID, P.Name, P.ProductNumber, P.ProductModelID, PM.Name FROM Production.Product P RIGHT OUTER JOIN Production.ProductModel PM ON P.ProductModelID=PM.ProductModelID;

Ing. Oscar Ramrez Valdez

Sesin 6

Laboratorio de Base de Datos

FULL OUTER JOIN: Todas las filas de ambas tablas son recuperadas, sin importar si los registros estn relacionados no.

EJEMPLO:
SELECT P.ProductID, P.Name, P.ProductNumber, P.ProductModelID, PM.Name FROM Production.Product P FULL OUTER JOIN Production.ProductModel PM ON P.ProductModelID=PM.ProductModelID;

En resumen, inner joins son las combinaciones ms comnmente usadas. Se debe usar inner join cuando se consultan dos tablas de las que se conoce tienen registros relacionados por algn campo, cuando no se quiere recuperar datos faltantes. Por ejemplo, si asumimos que se tiene una tabla Employee y una tabla EmployeePhoneNumber. La tabla EmployeePhoneNumber puede no, tener un nmero telefnico para cada empleado. Si se desea recuperar una lista de empleados y sus nmeros telefnicos, y no mostrar los empleados sin nmero telefnico, se debe usar un inner join. Se utiliza un outer join cuando se necesita recuperar los datos que no coinciden. En el ejemplo, probablemente se quiere tener un listado completo de los empleados, incluyendo aquellos que no tengan nmeros telefnicos registrados. En este caso, se debe usar un outer join en lugar de un inner join. 6.3. NOTAS ADICIONALES DE LOS JOINS Los siguientes son ejemplos clsicos para demostrar los casos donde OUTER JOIN es utilizado.

La consulta realizada puede ser fcilmente reemplazada por OUTER JOIN. Adems, reemplazarla por OUTER JOIN es la mejor prctica. La sentencia que genera el mismo resultado es:

El ejemplo anterior puede tambin ser creado utilizando RIGHT OUTER JOIN

10

Ing. Oscar Ramrez Valdez

Sesin 6

Laboratorio de Base de Datos

EJEMPLO:
SELECT P.ProductID, P.Name, P.ProductNumber, P.ProductModelID, PM.Name FROM Production.Product P RIGHT OUTER JOIN Production.ProductModel PM ON P.ProductModelID=PM.ProductModelID WHERE P.ProductID IS NULL;

6.4. NOT INNER JOIN El trmino NOT INNER JOIN, no existe en la terminologa de base de datos. Sin embargo, cuando es usado FULL OUTER JOIN con WHERE NULL, como se explico con los ejemplos anteriores, este producir resultados exclusivos, devolver las filas ausentes del INNER JOIN.

EJEMPLO:
SELECT P.ProductID, P.Name, P.ProductNumber, P.ProductModelID, PM.Name FROM Production.Product P FULL OUTER JOIN Production.ProductModel PM ON P.ProductModelID=PM.ProductModelID WHERE P.ProductModelID IS NULL OR PM.ProductModelID IS NULL;

11

Ing. Oscar Ramrez Valdez

Sesin 6

Laboratorio de Base de Datos

6.5. CROSS JOIN Un cross join sin una clasula where devuelve el producto Cartesiano de las tablas involucradas en el Join. El tamao del conjunto devuelto por el producto cartesiano es el nmero de filas en la primera tabla multiplicado por el nmero de filas en la segunda tabla. Un ejemplo comn es cuando una compaa genera un listado de todos sus productos en una tabla de precios para comparar cada producto con los otros precios.

EJEMPLO:
SELECT P.ProductID, P.Name, PM.ProductModelID, PM.Name FROM Production.Product P CROSS JOIN Production.ProductModel PM ORDER BY ProductID;

6.6. SELF JOIN En este caso particular, una tabla hace JOIN consigo misma con uno dos alias para evitar confusin. Un self-join puede ser de cualquier tipo, con la condicin de que las tablas consultadas sean la misma. Un self-join es UNICO en el sentido que involucra una relacin con solo una tabla. Self-join puede ser un outer join un Inner Join. Self join, utiliza alias para dar a cada instancia de la tabla un nombre por separado. Combinar una tabla consigo misma puede ser til cuando se quiere comparar valores en una columna con otros valores de la misma columna. Ahora, piense en una situacin donde todos los datos que se requieren estn contenidos en una sola tabla, pero los datos necesarios a extraer se relacionan entre s con la misma tabla. Ejemplos de este tipo de relacin se da en la informacin de empleados, donde la tabla puede tener dos campos, el ID del empleado y tambin un campo que muestre el ID del supervisor o gerente. Para recuperar los datos, es necesario un self-join. Otro ejemplo puede ser encontrado en la base de datos de prueba AdventureWorks, donde se requiera encontrar productos que son suministrados por ms de un proveedor.

12

Ing. Oscar Ramrez Valdez

Sesin 6 EJEMPLO:

Laboratorio de Base de Datos

SELECT E.EmployeeID empleado, E.Title, M.ManagerID manager, M.Title FROM HumanResources.Employee E JOIN HumanResources.Employee M ON (E.ManagerID = M.EmployeeID);

7. VISTAS Una vista es una tabla virtual cuyo contenido est definido por una consulta. Al igual que una tabla real, una vista consta de un conjunto de columnas y filas con nombres 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 dinmicamente cuando se hace referencia a la vista. Las tablas consultadas en una vista se denominan tablas base. La Vista puede definirse de varias formas: Es una tabla virtual. No tiene datos fsicos pero muestra datos de tablas u otras vistas. Es una ventana a travs de la cual podemos ver datos de tablas o vistas. Algunos ejemplos frecuentes de vistas: Un subconjunto de filas o columnas de una tabla base Una unin de dos o ms tablas base Una combinacin de dos o ms tablas base Un resumen estadstico de una tabla base Un subconjunto de otra vista o una combinacin de vistas y tablas base Las razones para crear una vista son: Deseamos restringir el acceso a la informacin, de forma que el usuario solo pueda ver ciertos datos. Deseamos ver informacin que requiere comandos complejos de una manera fcil. Deseamos tener diversas formas de ver la misma informacin. Las vistas permitirn que el usuario de la BD o constructor de programas pueda tener acceso a cualquier informacin y de cualquier nivel de complejidad a partir de simples tablas, sin estar obligado a conocer como se hacen joins, agrupamientos o sub consultas. Todo ese nivel de complejidad quedar solo para el diseador de la BD. 7.1. CREAR UNA VISTA SIMPLE Para crear una vista se usa el comando CREATE VIEW.
CREATE VIEW [nombreDeEsquema.] nombreDeVista [ ( columna [ ,...n ] ) ] AS (sub consulta);

Donde:

La sub consulta es un SELECT con cualquiera de las caractersticas estudiadas. La palabra AS significa como. A partir del momento de la creacin de la vista, esta se comportar como si fuera una tabla.

La vista ms sencilla es la que reduce la cantidad de columnas que pueden ser vistas desde cierta tabla. Se hace a una sola tabla. El nombre de la vista puede ser cualquier combinacin de caracteres, al igual que los nombres de tablas. EJEMPLO:
CREATE VIEW v_cliente

13

Ing. Oscar Ramrez Valdez

Sesin 6

Laboratorio de Base de Datos

AS SELECT codigo, nombre, apellido, direcc, titulo FROM cliente;

Luego de haber creado la vista, esta se comportar como si fuera una tabla, es decir podremos hacer una consulta a esa tabla, con lo que se lograr que ciertos usuarios vean solo parte de la tabla.
SELECT * FROM v_cliente;

Una vista un poco ms compleja ser la que emplea expresiones para trabajar ciertas columnas de forma diferente a la original. Si empleamos expresiones, ninguna expresin podr funcionar como un nombre de columna, por lo tanto se hace necesario el uso de alias de columna. El alias debe ser simple, no debe contener ms de una palabra.
CREATE VIEW v_cliente_b AS SELECT nombre || ' ' || apellido cliente, direcc, telfijo FROM cliente WHERE telfijo is not null;

7.2. CREAR UNA VISTA COMPLEJA En una vista compleja se usar una subconsulta que contiene ms de una tabla, agrupamientos u otras sub consultas. Este tipo de vistas permitirn que informacin compleja quede al alcance del constructor o usuario final en una simple tabla. Tener en cuenta que cualquier expresin usada en la sub consulta deber tener un alias, los cuales pueden ser descritos dentro de un par de parntesis antes de la palabra AS.
CREATE VIEW v_pelicula_ejemplar (pelicula, ejemplar, idioma, subtitulo) AS SELECT p.pelnombre, e.ejemnumero, i.idionombre, s.idionombre FROM pelicula p INNER JOIN ejemplar e ON p.pelcodigo = e.pelcodigo INNER JOIN idioma i ON e.ejemidioma = i.idiocodigo INNER JOIN idioma s ON e.ejemsubtitu = s.idiocodigo;

Un segundo ejemplo:
CREATE VIEW HumanResources.vEmployee AS SELECT e. EmployeeID,c.FirstName,c.LastName,e.Title AS JobTitle, a.AddressLine1,a.AddressLine2,sp.Name AS StateProvinceName, cr.Name AS CountryRegionName FROM HumanResources.Employee e INNER JOIN Person.Contact c ON c.ContactID = e.ContactID INNER JOIN HumanResources.EmployeeAddress ea ON e.EmployeeID = ea.EmployeeID INNER JOIN Person.Address a ON ea.AddressID = a.AddressID INNER JOIN Person.StateProvince sp ON sp.StateProvinceID = a.StateProvinceID INNER JOIN Person.CountryRegion cr ON cr.CountryRegionCode = sp.CountryRegionCode;

14

Ing. Oscar Ramrez Valdez

Sesin 6

Laboratorio de Base de Datos

7.3. MODIFICAR UNA VISTA Se utiliza la instruccin ALTER VIEW de Transact-SQL. Puede modificar las tablas y columnas incluidas en la vista, cambiar las relaciones entre columnas, restringir qu filas devuelve la vista, y modificar opciones como los alias de columna y las ordenaciones que se utilizan para generar la vista. La instruccin ALTER VIEW tiene la siguiente sintaxis:
ALTER VIEW [nombreDeEsquema.] nombreDeVista [ ( columna [ ,...n ] ) ] AS (sub consulta);

EJEMPLO:
ALTER VIEW HumanResources.vEmployee AS SELECT e.EmployeeID ,c.Title ,c.FirstName ,c.MiddleName ,c.LastName ,c.Suffix ,e.Title AS JobTitle ,c.Phone ,c.EmailAddress FROM HumanResources.Employee e INNER JOIN Person.Contact c ON c.ContactID = e.ContactID;

7.4. ELIMINAR UNA VISTA Si ya no necesita una vista, puede quitar su definicin de la base de datos utilizando la instruccin DROP VIEW de Transact-SQL. Al quitar una vista se quita su definicin y todos los permisos que tiene asignados. Adems, si los usuarios consultan alguna vista que hace referencia a la vista quitada, recibirn un mensaje de error. Sin embargo, al quitar una tabla a la que hace referencia una vista no se quita la vista automticamente. Debe quitar la vista explcitamente. La instruccin DROP VIEW tiene la siguiente sintaxis:
DROP VIEW [ nombreDeEsquema . ] nombreDeVista [ ...,n ] [ ; ]

EJEMPLO:
DROP VIEW HumanResources.vEmployee

7.5. OBTENER UNA LISTA DE VISTAS MEDIANTE TRANSACT-SQL Puede consultar las vistas de catlogo sys.views para obtener informacin general acerca de las vistas disponibles. El conjunto de resultados contendr una fila para cada vista disponible. El siguiente ejemplo devuelve una lista de todas las vistas disponibles en la base de datos AdventureWorks. 15 Ing. Oscar Ramrez Valdez

Sesin 6 EJEMPLO:

Laboratorio de Base de Datos

USE AdventureWorks GO SELECT * FROM sys.views

7.6. OBTENER LA DEFINICION DE UNA VISTA MEDIANTE TRANSACT-SQL Para ver la definicin de una vista no cifrada, utilice el procedimiento almacenado del sistema sp_helptext, pasando el nombre de vista como argumento. El procedimiento almacenado sp_helptext devolver un error si la vista especificada est cifrada. El siguiente ejemplo devuelve la definicin de la vista HumanResources.vEmployee de la base de datos AdventureWorks. EJEMPLO:
USE AdventureWorks GO EXEC sp_helptext 'HumanResources.vEmployee'

7.7. CIFRADO DE VISTAS El texto utilizado en la instruccin CREATE VIEW o ALTER VIEW para definir una vista se almacena en la tabla del sistema sys.syscomments. Para proteger la lgica que define una vista, especifique la opcin WITH ENCRYPTION. Esto cifra el texto almacenado en sys.syscomments, de forma que los usuarios no puedan leerlo. EJEMPLO: En el siguiente cdigo se modifica la vista HumanResources.vEmployee de la base de datos AdventureWorks y se habilita el cifrado.
ALTER VIEW HumanResources.vEmployee WITH ENCRYPTION AS SELECT e.EmployeeID,c.Title,c.FirstName,c.MiddleName,c.LastName, c.Suffix,e.Title AS JobTitle,c.Phone,c.EmailAddress FROM HumanResources.Employee e INNER JOIN Person.Contact c ON c.ContactID = e.ContactID;

Nota: Si crea una vista cifrada, cuando la modifique debe especificar la opcin WITH ENCRYPTION; de lo contrario, se deshabilitar el cifrado.

16

Ing. Oscar Ramrez Valdez

Sesin 6

Laboratorio de Base de Datos

IV. ACTIVIDADES

1. Realice los ejemplos y ejercicios vistos en el marco terico y los indicados por el Docente.
V. EJERCICIOS

Se tiene la base de datos de una compaa de venta de productos para la mujer. Establezca las claves primarias y claves forneas necesarias. PERSONAL (codper, nomper, edaper, codofi, codcar, fecinicio, cuota, sueldo) CARGO (codcar, nomcar) OFICINA (codofi, ciudad, regin, director, objventas) CLIENTE (RUC, razsoc, contacto, dircli, codpostal, telfono, limitecredito) ATENCION (RUC, codper) codper: representante asignado PRODUCTO (codprod, desprod, precunit, stock) PROVEEDOR (codprov, nomprov, telprov, dirprov) PRODPROV (codprod, codprov) PEDIDOS (codpedido, RUC, codper, fecped) codper: vendedor asignado a ese pedido DETALLE (codpedido, codprod, cantidad, precio)
Realice las sentencias SQL utilizando JOINS (cuando sea necesario) para las siguientes consultas:

1. 2. 3. 4. 5. 6. 7. 8. 9.

Calcular el promedio de la cuota de todos los empleados Hallar el importe medio de pedidos, el importe total de pedidos y el precio medio de venta (el precio de venta es el precio unitario en cada pedido). Hallar el precio medio de los productos del proveedor ROSALES Cul es el importe total de los pedidos realizados por el empleado Vicente Pantalla Hallar en qu fecha se realiz el primer pedido (suponiendo que en la tabla de pedidos tenemos todos los pedidos realizados hasta la fecha). Hallar cuntos pedidos hay de ms de S/. 25000. Listar cuntos empleados estn asignados a cada oficina, indicar el nmero de oficina y cuntos hay asignados. Para cada vendedor, obtener su cdigo, nombre, e importe vendido por ese empleado a cada cliente indicando el cdigo de cliente. Para cada vendedor cuyos pedidos suman ms de S/. 50 000, hallar su promedio, indicar el cdigo del empleado y el promedio.

10. Mostrar de cada producto, descripcin, precio unitario y cantidad total pedida, incluyendo slo los productos cuya cantidad total pedida sea superior al 75% del stock; y ordenado por cantidad total pedida. 11. Saber cuntas oficinas tienen empleados con ventas superiores a su cuota. 12. Mostrar las oficinas que se localicen en la regin SUR indicando para cada una de ellas ciudad, cdigo y nombres de sus empleados. 13. Mostrar las oficinas que se localicen en la regin NORTE indicando para cada una de ellas ciudad, cdigo y nombres de sus empleados, que tiene empleados asignados

17

Ing. Oscar Ramrez Valdez

Sesin 6

Laboratorio de Base de Datos

14. Mostrar las oficinas que se localicen en la regin NORTE que no tienen empleados asignados. 15. Mostrar los pedidos realizados: cdigo de pedido, nombre del cliente, fecha que se realizo el pedido, el importe del pedido y el lmite de crdito del cliente correspondiente. 16. Mostrar los datos de cada uno de los empleados, la ciudad y regin en donde trabaja. 17. Mostrar las oficinas con objetivo superior a S/. 300 000 indicando para cada una de ellas el nombre de su director. 18. Mostrar los pedidos superiores a S/. 34 000, incluyendo el nombre del vendedor que tom el pedido y el nombre del cliente que lo solicit. 19. Hallar los vendedores que realizaron su primer pedido el mismo da en que fueron contratados. 20. Mostrar los cdigos de los empleados que tienen una lnea de pedido superior a S/. 10 000 o que tengan una cuota inferior a S/. 10 000 21. Mostrar los nombres de los clientes que tienen asignado el representante Genaro Valencia. (Utilice subconsulta) 22. Mostrar los vendedores (codper, nomper, y codofi) que trabajan en oficinas que tienen ventas superiores a su objetivo. 23. Mostrar la informacin completa de los productos incluyendo sus proveedores, pero de aquellos que tengan un pedido de 25000 o ms. 24. Mostrar las oficinas en donde haya un vendedor cuyas ventas representen ms del 55% del objetivo de su oficina. 25. Mostrar las oficinas que tengan un objetivo mayor que la suma de las cuotas de sus vendedores. 26. Mostrar al personal cuya cuota se mayor al promedio 27. Crear una vista que muestre los pedidos realizados: cdigo de pedido, nombre del cliente, fecha que se realizo el pedido, el importe del pedido y el lmite de crdito del cliente correspondiente. 28. Crear una vista que muestre los vendedores (codper, nomper, y codofi) que trabajan en oficinas que tienen ventas superiores a su objetivo. 29. Crear una vista que muestre los pedidos superiores a S/. 34 000, incluyendo el nombre del vendedor que tom el pedido y el nombre del cliente que lo solicit. 30. Crear una vista que muestre la informacin completa de los productos incluyendo sus proveedores, pero de aquellos que tengan un pedido de 25000 o ms. 31. Crear una vista que muestre las oficinas con objetivo superior a S/. 300 000 indicando para cada una de ellas el nombre de su director. 32. Crear una vista que muestre al personal cuya cuota se mayor al promedio 33. Crear una vista que muestre las oficinas que tengan un objetivo mayor que la suma de las cuotas de sus vendedores.
18 Ing. Oscar Ramrez Valdez

You might also like