A continuación, se presenta un posible examen práctico basado en el script de creación e inserción de tablas, orientado a evaluar tus habilidades para realizar consultas SQL en Oracle. Este examen incluye ejercicios representativos que podrían aparecer en una evaluación. Cada ejercicio se acompaña de ejemplos relacionados para practicar.
Sección 1: Tablas EMPLE y DEPART
1. Seleccionar apellido, oficio y localidad de los empleados cuyo oficio sea «ANALISTA».
Escribe una consulta que recupere los apellidos, los oficios y la localidad de los departamentos de aquellos empleados que tienen como oficio «ANALISTA».
Ejemplo:
SELECT apellido, oficio,
(SELECT loc
FROM depart
WHERE depart.dept_no = emple.dept_no) AS localidad
FROM emple
WHERE oficio = 'ANALISTA';
2. Obtener los datos de los empleados cuyo director sea «CEREZO».
Diseña una consulta que muestre toda la información de los empleados donde el director sea «CEREZO».
Ejemplo:
SELECT *
FROM emple
WHERE dir = (SELECT emp_no
FROM emple
WHERE apellido = 'CEREZO');
3. Obtener los datos de los empleados del departamento «VENTAS».
Elabora una consulta que recupere los datos de los empleados que trabajan en el departamento denominado «VENTAS».
Ejemplo:
SELECT *
FROM emple
WHERE dept_no = (SELECT dept_no
FROM depart
WHERE dnombre = 'VENTAS');
4. Obtener los datos de los departamentos que NO tengan empleados.
Diseña una consulta que identifique los departamentos que no tienen ningún empleado asignado.
Ejemplo:
SELECT *
FROM depart
WHERE dept_no NOT IN (SELECT DISTINCT dept_no
FROM emple);
5. Obtener los datos de los departamentos que tengan empleados.
Escribe una consulta que muestre los departamentos donde existe al menos un empleado asignado.
Ejemplo:
SELECT *
FROM depart
WHERE dept_no IN (SELECT DISTINCT dept_no
FROM emple);
6. Obtener el apellido y salario de los empleados que superen todos los salarios del departamento 20.
Escribe una consulta que muestre los apellidos y salarios de los empleados cuyo salario sea mayor que el de cualquier empleado del departamento 20.
Ejemplo:
SELECT apellido, salario
FROM emple
WHERE salario > ALL (SELECT salario
FROM emple
WHERE dept_no = 20);
Sección 2: Tabla LIBRERIA
7. Visualizar temas, estante y ejemplares con ejemplares entre 8 y 15.
Escribe una consulta que recupere los temas, los estantes y el número de ejemplares de los libros donde el número de ejemplares esté entre 8 y 15.
Ejemplo:
SELECT tema, estante, ejemplares
FROM libreria
WHERE ejemplares BETWEEN 8 AND 15;
8. Visualizar las filas cuyo estante no esté entre «B» y «D».
Escribe una consulta que recupere los temas, estantes y ejemplares donde el estante no esté en el rango «B» a «D».
Ejemplo:
SELECT tema, estante, ejemplares
FROM libreria
WHERE estante NOT BETWEEN 'B' AND 'D';
9. Visualizar todos los temas cuyo número de ejemplares sea inferior al de «MEDICINA».
Elabora una consulta que identifique los temas con menos ejemplares que el tema «MEDICINA».
Ejemplo:
SELECT tema
FROM libreria
WHERE ejemplares < (SELECT ejemplares
FROM libreria
WHERE tema = 'MEDICINA');
10. Visualizar los temas cuyo número de ejemplares no esté entre 15 y 20.
Diseña una consulta que excluya los temas cuyo número de ejemplares esté en el rango de 15 a 20.
Ejemplo:
SELECT tema
FROM libreria
WHERE ejemplares NOT BETWEEN 15 AND 20;
Sección 3: Tablas ALUMNOS, ASIGNATURAS y NOTAS
11. Visualizar asignaturas con tres letras «o» en su nombre y alumnos de «Madrid».
Crea una consulta que recupere las asignaturas que contengan tres letras «o» y que tengan al menos un alumno matriculado de «Madrid».
Ejemplo:
SELECT nombre
FROM asignaturas
WHERE nombre LIKE '
AND cod IN (SELECT cod
FROM notas
WHERE dni IN (SELECT dni
FROM alumnos
WHERE pobla = 'Madrid'));
12. Visualizar los nombres de alumnos de «Madrid» con asignaturas suspendidas.
Diseña una consulta para identificar a los alumnos de «Madrid» que tienen asignaturas con una nota menor a 5.
Ejemplo:
SELECT apenom
FROM alumnos
WHERE pobla = 'Madrid'
AND dni IN (SELECT dni
FROM notas
WHERE nota < 5);
13. Mostrar los alumnos que tengan la misma nota que «Díaz Fernández, María» en «FOL».
Elabora una consulta que recupere los nombres de los alumnos que compartan la misma nota que «Díaz Fernández, María» en la asignatura «FOL».
Ejemplo:
SELECT apenom
FROM alumnos
WHERE dni IN (SELECT dni
FROM notas
WHERE nota = (SELECT nota
FROM notas
WHERE dni = (SELECT dni
FROM alumnos
WHERE apenom = 'Díaz Fernández, María')
AND cod = (SELECT cod
FROM asignaturas
WHERE nombre = 'FOL')));
14. Obtener los datos de las asignaturas que no tengan alumnos.
Escribe una consulta para identificar las asignaturas en las que no hay alumnos matriculados.
Ejemplo:
SELECT *
FROM asignaturas
WHERE cod NOT IN (SELECT cod
FROM notas);
15. Obtener el nombre y apellido de los alumnos con nota en la asignatura con código 1.
Crea una consulta que recupere los nombres y apellidos de los alumnos que tienen nota en la asignatura con código 1.
Ejemplo:
SELECT apenom
FROM alumnos
WHERE dni IN (SELECT dni
FROM notas
WHERE cod = 1);
16. Obtener el nombre y apellido de los alumnos sin nota en la asignatura con código 1.
Diseña una consulta que recupere los nombres y apellidos de los alumnos que no tienen nota en la asignatura con código 1.
Ejemplo:
SELECT apenom
FROM alumnos
WHERE dni NOT IN (SELECT dni
FROM notas
WHERE cod = 1);
Conclusión
Este examen cubre una amplia gama de consultas SQL que te permiten practicar subconsultas, filtros y operaciones condicionales en Oracle SQL. Asegúrate de comprender el propósito de cada ejercicio y prueba las consultas en tu entorno para garantizar su correcto funcionamiento.