/* Ejemplos SQL para entorno SQLPlus Oracle 8 */ /* Formateado de la salida de datos */ column nombre format a20; column codEmp format a6; column codDepto format a6; SELECT * FROM Empleado; SELECT * FROM Departamento; SELECT * FROM Proyecto; SELECT * FROM Participar; SELECT codEmp, nombre FROM Empleado WHERE codDepto= '03'; SELECT * FROM Empleado WHERE codDepto IS NULL; SELECT codEmp FROM Empleado WHERE codDepto= '02' AND salario<2000000; SELECT codEmp FROM Empleado WHERE salario between 2000000 AND 4000000; SELECT * FROM Empleado WHERE codDepto in ('01', '02', '04'); SELECT codEmp, nombre FROM Empleado WHERE NOT (codDepto = '01'); SELECT * FROM Empleado WHERE nombre like 'P%'; SELECT * FROM Empleado WHERE nombre like 'R______'; SELECT avg(salario) SalarioMedio FROM Empleado WHERE puesto = 'analista'; SELECT distinct puesto FROM Empleado; SELECT count(puesto) NumeroPuestos FROM Empleado; SELECT * FROM Empleado ORDER BY codDepto, salario desc; SELECT * FROM Empleado WHERE FinContrato < add_months(sysdate, 6); SELECT codDepto, avg(salario) SalarioMedio FROM Empleado GROUP BY codDepto; SELECT codDepto, avg(salario) SalarioMedio FROM Empleado GROUP BY codDepto HAVING min(salario) < 2000000; SELECT nombre FROM Departamento WHERE EXISTS (SELECT * FROM Empleado WHERE Empleado.codDepto = Departamento.codDep AND salario > 5000000); SELECT nombre FROM Empleado WHERE codDepto in (SELECT codDepto FROM Empleado WHERE nombre='Martinez'); SELECT Empleado.nombre, Proyecto.Titulo FROM Empleado, Participar, Proyecto WHERE Empleado.codEmp = Participar.codEmp AND Participar.numProy = Proyecto.numProy; SELECT E2.nombre FROM Empleado E1, Empleado E2 WHERE E1.codDepto = E2.codDepto AND E1.codEmp <> E2.codEmp AND E1.nombre = 'Martinez'; SELECT * FROM Empleado WHERE salario>5000000 UNION SELECT * FROM Empleado WHERE salario<2000000; /* Creación y eliminación de una vista */ CREATE VIEW Cargos AS SELECT codEmp, nombre, puesto, salario FROM Empleado WHERE puesto = 'analista' WITH CHECK OPTION; SELECT * FROM Cargos WHERE salario > 4000000; INSERT INTO Cargos VALUES ('B666', 'Dominguez', 'analista', NULL); DROP VIEW Cargos; /* Número medio de horas dedicadas por empleado en proyectos que participan */ SELECT codEmp, sum(NumHoras)/count(*) FROM Participar GROUP BY codEmp; SELECT codEmp, avg(NumHoras) FROM Participar GROUP BY codEmp; /* Título de los proyectos que se desarrollan en el departamento Software */ SELECT distinct titulo FROM Proyecto P, Empleado E, Participar Pa, Departamento D WHERE (P.numProy = Pa.numProy) AND (D.codDep = E.codDepto) AND (Pa.codEmp = E.codEmp) AND (D.nombre = 'Software'); SELECT distinct titulo FROM Proyecto WHERE EXISTS (SELECT * FROM Empleado WHERE (Empleado.codDepto=(SELECT codDep FROM Departamento WHERE nombre = 'Software')) AND EXISTS (SELECT * FROM Participar WHERE (codEmp = Empleado.codEmp) AND (Participar.numProy = Proyecto.numProy))); /* Empleados que participan en todos los proyectos */ SELECT codEmp, nombre FROM Empleado WHERE NOT EXISTS (SELECT * FROM Proyecto WHERE NOT EXISTS (SELECT * FROM Participar WHERE (Participar.numProy = Proyecto.numProy) AND (Participar.codEmp = Empleado.codEmp))); /* Listado de proyectos ordenados por el número de empleados asignados */ CREATE VIEW dedicacion AS SELECT numProy, count(*) NumEmpleados FROM Participar GROUP BY numProy; SELECT P.titulo FROM Dedicacion D, Proyecto P WHERE (P.numProy=D.numProy) ORDER BY NumEmpleados; DROP VIEW Dedicacion; /* Otras operaciones */ /* Introducción de datos para una consulta */ ACCEPT horas PROMPT 'Horas trabajadas: '; SELECT * FROM Participar WHERE numHoras = &horas; SELECT * FROM Proyecto WHERE numProy = 1; /* Llamada a un procedimiento almacenado */ BEGIN Currar('A369', 1, 5); END; . RUN; SELECT * FROM Proyecto WHERE numProy = 1; SELECT * FROM HistorialSalario; UPDATE empleado SET salario = salario + 100000 WHERE codemp = 'A369'; SELECT * FROM HistorialSalario;