Вы находитесь на странице: 1из 3

ESCUELA DE CIENCIAS DE LA COMPUTACIN FUNDAMENTOS DE BASE DE DATOS

Fecha de entrega: 21 de noviembre de 2012 La presente tarea tiene como objetivo, desarrollar las destrezas y aptitudes requeridas para asegurar el logro de las competencias planteadas para la unidad de lenguaje SQL. La tarea se debe entregar MANUSCRITA, en hoja cuadriculada al ingresar a clases el da 21 de noviembre del 2012. No hace falta escribir los enunciados de las consultas, sino solamente la consulta SQL que da respuesta a cada literal. Cualquier duda consulte con el profesor.

En el esquema siguiente, se puede determinar que departmentName es una clave externa en la tabla worker, que mgrId es una clave externa en la tabla Dept, que projMgrId es una clave externa en la tabla Project, y que projNo y empId son claves externas en la tabla Assign. Suponga que cada departamento tiene un supervisor (manager) y que cada proyecto tiene un supervisor, pero stos no necesariamente estn relacionados. Worker (empId, lastName, firstName, departmentName, birthDate, hireDate, salary) Dept (departmentName, mgrId) Project (projNo, projName, budget, startDate, expectedDurationWeeks) Assign (projNo, empId, hoursAssigned, rating) D solucin a las siguientes interrogantes a travs de consultas SQL. 1. Liste los nombres de todos los trabajadores en el departamento accounting (contabilidad). 2. Muestre una lista alfabtica de nombres de todos los trabajadores asignados al proyecto 1001. 3. Liste el nombre del empleado (employee) en el departamento research (investigacin) que tenga el salario ms bajo (lowest). 4. Liste detalles del proyecto con el presupuesto (budget) ms alto (highest). 5. Muestre los nombres y departamentos de todos los trabajadores en el proyecto 1019. 6. Muestre una lista alfabtica de nombres y calicaciones (ratings) correspondientes de todos los trabajadores en cualquier proyecto que est supervisado (managed) por Lorena Paz. 7. Cree una vista que tenga nmero de proyecto y nombre de cada proyecto, junto con las ID y nombres de todos los trabajadores asignados a l. 8. Con la vista creada en el literal 7, encuentre el nmero de proyecto y nombre de proyecto de todos los proyectos a los que est asignado el empleado 110. 9. Agregue un nuevo trabajador llamado Luis Flores con ID 1999 al departamento research. 10. Cambie las horas que tiene asignadas el empleado 110 al proyecto 1019, de 20 a 10. 11. Para todos los proyectos que comiencen (starting) despus del 1 de junio de 2007, encuentre el nmero de proyecto y las ID y nombres de todos los trabajadores asignados a ellos.

12. Para cada proyecto, haga lista del nmero de proyecto y cuntos trabajadores se asignan a l. 13. Muestre los nombres de empleado y nombres de supervisor de departamento de todos los trabajadores que no estn asignados a proyecto alguno. 14. Liste los detalles de cualquier proyecto con la palabra urn en cualquier parte en su nombre. 15. Muestre una lista de nmeros de proyecto y nombres y fechas de inicio de todos los proyectos que tienen la misma fecha de inicio. Proceda a crear las tablas en la base de datos OracleXE: create table Worker (empId number(6) primary key, lastName varchar2(30) not null, firstName varchar2(30) not null, departmentName varchar2(30) not null, birthDate date, hireDate date not null, salary number(6));

create table Dept (departmentName varchar2(30) primary key, mgrId number(6));

create table Project (projNo number(6) primary key, projName varchar2(30) not null, projMgrId number(6) not null, budget number(6), startdate date, expectedDurationWeeks number(4));

create table Assign (projNo number(6), empId number(6), hoursAssigned number(4), rating number(2), constraint assign_pk primary key (projNo,empId));

alter table Worker add constraint work_dept foreign key (departmentName) references Dept(departmentName);

alter table Project add constraint proj_work foreign key (projMgrId) references Worker(empId);

alter table Assign add constraint assi_work foreign key (empId) references Worker(empId);

alter table Assign add constraint assi_proj foreign key (projNo) references Project(projNo); Una vez creadas las tablas, las poblamos con datos: INSERT INTO Dept VALUES ('Accounting', null); INSERT INTO Dept VALUES ('Research', null); INSERT INTO Worker VALUES (101,'Paz','Lorena','Accounting','01-Feb-1977','01-Feb-2000', 1200); INSERT INTO Worker VALUES (103,'Songor','Luis','Accounting','15-Jun-1983','01-Mar-2001', 1300); INSERT INTO Worker VALUES (105,'Torres','Soraya','Accounting','12-Jun-1990','01-Ene-2002', 1150); INSERT INTO Worker VALUES (110,'Flores','Luis','Research','05-Abr-1972','01-Sep-2003', 1800); INSERT INTO Worker VALUES (115,'Reyes','Amanda', 'Research','22-Sep-1976','01-Oct-2002', 1200); INSERT INTO Project VALUES (1001, 'Jupiter', 101, 300000, '01-Feb-2007', 50); INSERT INTO Project VALUES (1005, 'Saturno', 101, 400000, '01-Jun-2004', 35); INSERT INTO Project VALUES (1019, 'Mercurio', 110, 350000, '15-Feb-2004', 40); INSERT INTO Project VALUES (1025, 'Neptuno', 110, 600000, '01-Feb-2005', 45); INSERT INTO Project VALUES (1030, 'Pluton', 110, 380000, '15-Sep-2004', 50); INSERT INTO Assign VALUES (1001, 103, 20, 5); INSERT INTO Assign VALUES (1001, 115, 20, 4); INSERT INTO Assign VALUES (1019, 110, 20, 5); INSERT INTO Assign VALUES (1019, 115, 10, 4); INSERT INTO Assign VALUES (1005, 103, 20, 4); INSERT INTO Assign VALUES (1001, 105, 30, 5); INSERT INTO Assign VALUES (1025, 110, 10, 4); INSERT INTO Assign VALUES (1030, 110, 10, 4); UPDATE DEPT SET MGRID = '101' WHERE departmentName = 'Accounting'; UPDATE DEPT SET MGRID = '110' WHERE departmentName = 'Research'; commit;

Вам также может понравиться