Ejercicios Resueltos de SQL
Borja Sotomayor 1 de junio de 2002
Kristel Villarreta 12°G
Taller 1 de Lenguaje SQL
Tabla: Empleados
EMPLEADOS
PK DNI varchar(8)
PK Codigo int
Nombre nvarchar(1
Nombre
Apellidos 0 Presupuesto
FK Departament 0) int
1 o nvarchar(2
5
5) int
2.1. Obtener los apellidos de los empleados.
- SELECT Apellidos FROM EMPLEADOS
2.2. Obtener los apellidos de los empleados sin repeticiones.
- SELECTC DISTINCT Apellidos FROM EMPLEADOS
2.3. Obtener todos los datos de los empleados que se apellidan ’L´opez’.
- SELECT * FROM EMPLEADOS WHERE Apellidos = ´López´
2.4. Obtener todos los datos de los empleados que se apellidan ’L´opez’ y los que se apellidan
’P´erez’.
- /* Con OR */
SELECT * FROM EMPLEADOS
WHERE Apellidos = ´López´ OR = ´Pérez´
- /* Con IN*/
SELECT * FROM EMPLEADOS
WHERE Apellidos IN (´López´ , ´Pérez´)
2.5. Obtener todos los datos de los empleados que trabajan para el departamento 14.
- SELECT * FROM EMPLEADOS WHERE Departamento = 14
2.6. Obtener todos los datos de los empleados que trabajan para el departamento 37 y para el
departamento 77.
- /* Con OR */
SELECT * FROM EMPLEADOS
WHERE Departamento = 37 OR Departamento = 77
- /* Con IN*/
SELECT * FROM EMPLEADOS
WHERE Departamento IN (37 , 77)
2.7. Obtener todos los datos de los empleados cuyo apellido comience por ’P’.
- SELECT * FROM EMPLEADOS
WHERE Apellidos LIKE ´P%´
2.8. Obtener el presupuesto total de todos los departamentos.
- SELECT SUM (Presupuesto) FROM DEPARTAMENTOS
2.9. Obtener el número de empleados en cada departamento.
- SELECT Departamento, COUNT(*)
FROM EMPLEADOS
GROUP BY Departamento
2.10. Obtener un listado completo de empleados, incluyendo por cada empleado los datos
del empleado y de su departamento.
- SELECT *
FROM EMPLEADOS INNER JOIN DEPARTAMENTOS
ON EMPLEADOS.Departametos = DEPARTAMENTOS.Codigo
2.11. Obtener un listado completo de empleados, incluyendo el nombre y apellidos del empleado
junto al nombre y presupuesto de su departamento
- /* Sin etiquetas*/
SELECT EMPLEADOS.Nombre, Apellidos, DEPARTAMENTOS.Nombre, Presupuestos
FROM EMPLEADOS INNER JOIN DEPARTAMENTOS
ON EMPLEADOS.Departamento = DEPARTAMENTOS.Codigo
- /* Con etiquetas*/
SELECT E.Nombres, Apellidos, D.Nombre, Presupuesto
FROM EMPLEADOS E INNER JOIN DEPARTAMENTOS D
ON E.Departamento = D.Codigo
2.12. Obtener los nombres y apellidos de los empleados que trabajen en departamentos cuyo
presupuesto sea mayor de 60.000
- /* Sin subconsulta*/
SELECT EMPLEADOS.Nombre, Apellidos
FROM EMPLEADOS INNER JOIN DEPARTAMENTOS
ON EMPLEADOS.Departamento = DEPARTAMENTOS.Codigo
AND DEPARTAMENTOS.Presupuestos > 60000
- /* Con subconsulta*/
SELECT Nombre, Apellidos FROM EMPLEADOS
WHERE Departamento IN
(SELECT Codigo FROM DEPARTAMENTOS WHERE Presupuesto > 60000)
2.13. Obtener los datos de los departamentos cuyo presupuesto es superior al presupuesto
medio de todos los departamentos.
- SELECT *
FROM DEPARTAMENTOS
WHERE Presupuesto >
(
SELECT AVG (Presupuesto)
FROM DEPARTAMENTOS
)
2.14. Obtener los nombres (únicamente los nombres) de los departamentos que tienen más de
dos empleados.
- /* Con Subconsulta */
SELECT Nombre FROM DEPARTAMENTOS
WHERE Codigo IN
(
SELECT Departamento
FROM EMPLEADOS
GROUP BY Departamento
HAVING COUNT (*) > 2
)
- /* Con Union. No funciona si dos departamentos tienen el mismo nombre */
SELECT DEPARTAMENTOS.Nombre
FROM EMPLEADOS INNER JOIN DEPARTAMENTOS
ON Deparmento = Codigo
GROUP BY Departamento.Nombre
HAVING COUNT (*) > 2
2.15. Añadir un nuevo departamento: ‘Calidad’, con presupuesto de 40.000 y código
11. Añadir un empleado vinculado al departamento recién creado: Esther Vázquez DNI:
89267109
- INSERT INTO DEPARTAMENTOS
VALUES ( 11 , ´Calidad´ , 40000)
- INSERT INTO EMPLEADOS
VALUES ( ´89267109´ , ´Esther´ , ´Vázquez´ , 11)