Está en la página 1de 19

UNIVERSIDAD INTERAMERICANA DE PUERTO RICO

RECINTO METROPOLITANO
FACULTAD DE CIENCIAS Y TECNOLOGA
PROGRAMA GRADUADO EN SISTEMAS ABIERTOS DE INFORMACIN
SAN JUAN, PUERTO RICO

BANCO DE DATOS RELACIONALES CURSO: COIS 5100


TRIMESTRE: NOVIEMBRE A FEBRERO 2017
DR. CARLOS A. DAZ APONTE
PROFESOR

LABORATORIO II

JOS A. NIEVES SANTIAGO


27 DICIEMBRE 2016
DEPARTAMENTO DE CIENCIAS DE COMPUTADORAS Y MATEMTICAS
PROGRAMA GRADUADO EN SISTEMAS ABIERTOS DE INFORMACIN

BANCO DE DATOS RELACIONALES CURSO


CURSO: COIS 5100
DR. CARLOS A. DAZ APONTE
PROFESOR

LABORATORIO II

1. Listar el detalle de la rden101.


SELECT * FROM s_ord
WHERE id=101;

2. Listar el detalle de las rdenes 100, 102 y 104. Ordenar en forma ascendente el
nmero de orden y el nmero del detalle.
SELECT * FROM s_ord
WHERE id IN (100, 102, 104);

3. Listar los nombres de los productos y el id del almacn que los tiene y el id de la
regin en que est el almacn.

SELECT name, region_id, warehouse_id


FROM s_inventory, s_warehouse, s_product
WHERE s_inventory.product_id=s_product.id
AND s_inventory.warehouse_id=s_warehouse.id;

2
3
4
5
4. Listar la fecha en que comenzaron los empleados; el apellido y el nombre, si se
incorporaron a la compaa desde el 9 de febrero de 1991 hasta el 6 de agosto de 1991,
inclusive.
SELECT start_date, last_name, first_name
FROM s_emp
WHEREstart_date>=to_date('09-FEB-91','DD-Mon-YY)AND start_date<=to_date('06-
AUG-91','DD-Mon-YY');

6
5. Listar el nombre del cliente y nombre de la regin y el nombre completo del empleado
que le atiende como vendedor, el id del departamento y id y el nombre de la regin del
vendedor.

SELECT "S_CUSTOMER"."NAME" as "Client",


"S_REGION"."NAME" as "Region",
"S_EMP"."FIRST_NAME" as "Salesperson First Name",
"S_EMP"."LAST_NAME" as "Salesperson Last Name",
"S_EMP"."DEPT_ID" as "Departament ID"
FROM "S_EMP" "S_EMP",
"S_REGION" "S_REGION",
"S_CUSTOMER" "S_CUSTOMER",
"S_DEPT" "S_DEPT"
WHERE s_region.id=s_customer.region_id
AND s_customer.sales_rep_id=s_emp.id
AND s_dept.id=s_emp.dept_id;

7
6. Haga una lista de los nombres completos de los empleados, su puesto (title), el userid,
fecha de comienzo en la empresa y porcentaje de comisin. Si el empleado no tiene
asignado porcentaje de comisin debe aparecer 0 (cero). La lista debe tener formatos
adecuados con nombres en las columnas en espaol y que la informacin de cada
empleado aparezca en una lnea. Hint: Debe usar mandatos de formato y/o funciones
como RPAD.
SELECT FIRST_NAME as "Primer Nombre",
LAST_NAME as "Apellido",
TITLE as "Ttulo",
USERID as "Clave de ID",
START_DATE as "Fecha de empleo",
NVL(COMMISSION_PCT,0) as "Comison"
FROM S_EMP;

8
7. Listar id, los nombres de los productos, su nombre cuando el nombre del archivo que
tiene la imagen de ste comienza con las letras ACE. Haga la consulta que no
discrimine por tipo de letra mayscula o minscula.

SELECT S_PRODUCT.id as ID,


S_PRODUCT.name as Name,
S_IMAGE.filename as Filename
FROM S_IMAGE S_IMAGE,
S_PRODUCT S_PRODUCT
WHERE S_IMAGE.filename LIKE 'ace%';

9
10
8. Listar el nombre de los productos vendidos al cliente Sportique.

SELECT c.NAME AS "Customer Name",


p.NAME AS "Product Name"
FROM S_ITEM i,
S_PRODUCT p,
S_ORD o,
S_CUSTOMER c
WHERE o.CUSTOMER_ID = c.ID
AND i.ORD_ID = o.ID
AND p.ID = i.PRODUCT_ID
AND c.NAME = 'Sportique'

9. Listar el nombre del gerente del almacn que haya despachado las rdenes del cliente
Sportique, Incluya los nmeros de las rdenes.
SELECT DISTINCT S_ITEM.ORD_ID AS ORD_ID,
S_EMP.FIRST_NAME AS FIRST_NAME,
S_EMP.LAST_NAME AS LAST_NAME
FROM S_EMP S_EMP,
S_INVENTORY S_INVENTORY,
S_WAREHOUSE S_WAREHOUSE,
S_PRODUCT S_PRODUCT,
S_ITEM S_ITEM,
S_ORD S_ORD,
S_CUSTOMER S_CUSTOMER
WHERE S_CUSTOMER.ID=S_ORD.CUSTOMER_ID
AND S_ORD.ID=S_ITEM.ORD_ID
AND S_ITEM.PRODUCT_ID=S_PRODUCT.ID
AND S_INVENTORY.PRODUCT_ID=S_PRODUCT.ID
AND S_INVENTORY.WAREHOUSE_ID=S_WAREHOUSE.ID
AND S_WAREHOUSE.MANAGER_ID=S_EMP.ID
AND S_CUSTOMER.NAME = 'Sportique'
AND S_EMP.TITLE LIKE '%Manager%';

11
10. Listar el id y nombre de los productos que se reordenaron, fecha en que se reorden,
razn para reordenar en el inventario, tomando de referencia que hay una razn para
reordenar (out_of_stock_explanation).

SELECT "S_INVENTORY"."PRODUCT_ID" as
"PRODUCT_ID","S_PRODUCT"."NAME" as "NAME",
"S_INVENTORY"."RESTOCK_DATE" as "RESTOCK_DATE",
"S_INVENTORY"."OUT_OF_STOCK_EXPLANATION" as
"OUT_OF_STOCK_EXPLANATION"
FROM"S_PRODUCT" "S_PRODUCT",
"S_INVENTORY" "S_INVENTORY"
WHERE "S_INVENTORY"."PRODUCT_ID"="S_PRODUCT"."ID"
AND "S_INVENTORY"."OUT_OF_STOCK_EXPLANATION" IS NOT NULL;

11. Haga la misma consulta anterior, pero tomando en cuenta que se agot el producto
en inventario. Listar el nombre del cliente, el nmero de sus rdenes y el nmero de das
que se tomaron en despachar la orden. Ese nmero de das debe ser calculado por el
sistema. La lista debe estar en forma descendente desde la orden que ms das se tard
en despachar, hasta la que menos tom das.

SELECT DISTINCT c.NAME AS "CUSTOMER NAME",


o.ID AS "ORDER NUMBER",
o.DATE_SHIPPED - o.DATE_ORDERED AS "DELAY"
FROM S_CUSTOMER c,
S_ORD o
WHERE c.ID = o.CUSTOMER_ID
ORDER BY o.DATE_SHIPPED - o.DATE_ORDERED DESC;

12
12. Listar el id de los almacenes, la ciudad y el nombre completo de los gerentes de cada
almacn
SELECT "S_WAREHOUSE"."ID" as "ID",
"S_WAREHOUSE"."CITY" as "City",
"S_EMP"."FIRST_NAME" as "First Name",
"S_EMP"."LAST_NAME" as "Last Name"
FROM "S_EMP" "S_EMP",
"S_WAREHOUSE" "S_WAREHOUSE"
WHERE "S_WAREHOUSE"."MANAGER_ID"="S_EMP"."ID"
AND S_EMP.TITLE LIKE '%Manager%';

13
13. Listar el nombre completo del empleado en una columna con encabezado
EMPLEADO y el nombre completo de su supervisor en una columna con encabezado
SUPERVISOR. (Hint: tiene que usar la relacin recursiva)

SELECT CONCAT(CONCAT(e.FIRST_NAME, ' '), e.LAST_NAME) AS "Empleado",


(SELECT CONCAT(CONCAT(m.FIRST_NAME, ' '), m.LAST_NAME),FROM S_EMP m
WHERE m.ID = e.MANAGER_ID) AS "Supervisor",
FROM S_EMP e,
START WITH e.MANAGER_ID,
CONNECT BY PRIOR e.ID = e.MANAGER_ID;
ORDER SIBLINGS BY e.MANAGER_ID;

14. Escriba un script (7 puntos)

14
a. Para crear un view con el nombre cambiodatos que permita ver el nombre completo
de todos los empleados, el sueldo, el nombre del departamento y el nombre de la regin
y permita cambiar datos de la tabla s_emp desde el view.

15
b. Cambie datos de algn empleado por medio de una instruccin update o elimine un
rcord usando delete o aada un rcord usando insert por medio del view cambiodatos
.

c. Haga una consulta de los datos de la tabla s_emp, para ver que este view permite
los cambios se hizo a la tabla a travs del view cambiodatos.

d. Luego elimine el o los cambios, nuevamente debe incluir insert, update y delete o
haciendo un uso adecuado de la instruccin rollback. Asegrese que no alter el banco
de datos, haciendo un select a la tabla s_emp.

NOTA: Todo lo requerido debe estar en un solo script , para que vea la ejecucin por
pasos, utilice mandatos tales como Set echo on/off y Pause. Tambin durante la
ejecucin del script cree un archivo de salida llamado cambio.lst usando el mandato
Spool on/off
Debe incluir commit y rollback para deshacer los cambios juntos con la instruccin
update. Documente en mandatos REM el uso de instrucciones y/o mandatos

REM 'Ejercicio numero 14'


SET ECHO OFF
ECHO "Creating view named 'Cambiodatos'..."
CREATE VIEW "Cambiodatos" AS

SELECT "S_EMP"."ID" AS "ID",


"S_EMP"."LAST_NAME" AS "LAST_NAME",
"S_EMP"."FIRST_NAME" AS "FIRST_NAME",
"S_EMP"."DEPT_ID" AS "DEPT_ID",
"S_EMP"."SALARY" AS "SALARY",
"S_REGION"."ID" AS "ID",
"S_REGION"."NAME" AS "NAME"
FROM "S_REGION" "S_REGION",
"S_EMP" "S_EMP"
WHERE "S_REGION"."NAME"="S_EMP"."ID";

16
ECHO "Created view..."
PAUSE
SELECT * FROM "cambiodatos" WHERE FIRST_NAME = 'Carmen';
savepoint checkpoint1

UPDATE "cambiodatos" SET FIRST_NAME = 'Midoris' WHERE FIRST_NAME =


'LaDoris';
SELECT * FROM "cambiodatos" WHERE FIRST_NAME = 'LaDoris';
SELECT * FROM "cambiodatos" WHERE FIRST_NAME = 'Midori';
WHERE "S_EMP"."DEPT_ID"="S_DEPT"."ID"
AND "S_DEPT"."REGION_ID"="S_REGION"."ID";

17
ROLLBACK
SELECT * FROM "cambiodatos" WHERE FIRST_NAME = 'LaDoris';
PAUSE
SELECT * FROM S_EMP;
SET ECHO ON

15. Escriba un script (7 puntos)


a. Para crear un view con el nombre NOcambiodatos que permita ver el nombre
completo de todos los empleados, el sueldo, el nombre del departamento y el nombre de
la regin y NO permita cambiar datos de la tabla s_emp desde el view.

b. Corrobore que no puede Cambiar datos de algn empleado cuando se hace un update
usando el view cambiodatos y le cambia el sueldo u otro dato a algn empleado. c.
Haga una consulta de los datos de la tabla s_emp, para ver que el cambio se hizo a
travs del view cambiodatos, este view los permite.

d. Luego elimine el o los cambios. Asegrese que no alter el banco de datos, haciendo
un select a la tabla s_emp.

18
NOTA: Todo lo requerido debe estar en un solo script, para que vea la ejecucin por
pasos, utilice mandatos tales como Set echo on/off y Pause. Tambin durante la
ejecucin del script cree un archivo de salida llamado cambio.lst usando el mandato
Spool on/off.

Debe usar Commit y Rollback para deshacer los cambios juntos con las instruccin
update. Documente en mandatos REM el uso de instrucciones y/o mandatos.

REM 'Ejercicio numero 15'


SET ECHO OFF
ECHO "Creating view named 'NOcambiodatos'..."

CREATE VIEW "NOcambiodatos" AS


SELECT "S_REGION"."ID" AS "ID REGIONAL",
"S_REGION"."NAME" AS "REGIN",
"S_EMP"."LAST_NAME" AS "APELLIDO",
"S_EMP"."FIRST_NAME" AS "NOMBRE",
"S_EMP"."SALARY" AS "SALARIO",
"S_EMP"."DEPT_ID" AS "DEPARTAMENTO"
FROM "S_EMP" "S_EMP",
"S_REGION" "S_REGION"
WHERE "S_REGION"."ID"="S_EMP"."ID"
AND "S_DEPT"."REGION_ID"="S_REGION"."ID"
WITH READ ONLY;

ECHO "Created view..."

PAUSE

SELECT * FROM "NOcambiodatos" WHERE FIRST_NAME = 'Midori';

savepoint checkpoint1

UPDATE "NOcambiodatos" SET FIRST_NAME = 'Valerie'

WHERE FIRST_NAME = 'Midori';

SELECT * FROM "NOcambiodatos" WHERE FIRST_NAME = 'Midori';

PAUSE

SELECT * FROM S_EMP;

SET ECHO ON

19