Ejercicios Prácticos de SQL: Consultas y Manipulación de Datos en Bases de Datos Relacionales
Enviado por Programa Chuletas y clasificado en Otras lenguas extranjeras
Escrito el en español con un tamaño de 7,16 KB
Operaciones SQL en la Tabla LIBRERIA
Consultas de Selección en LIBRERIA
Visualización Completa de la Tabla
Muestra todos los registros de la tabla LIBRERIA
.
SELECT * FROM LIBRERIA;
Filtrado por Rango de Ejemplares
Selecciona todas las columnas de la tabla LIBRERIA
donde el número de EJEMPLARES
esté entre 8 y 15, ambos incluidos.
SELECT * FROM LIBRERIA WHERE EJEMPLARES BETWEEN 8 AND 15;
Filtrado por Rango Excluyente en Estante
Visualiza las columnas TEMA
, ESTANTE
y EJEMPLARES
de la tabla LIBRERIA
donde el ESTANTE
no esté comprendido entre 'B' y 'D'.
SELECT * FROM LIBRERIA WHERE ESTANTE NOT BETWEEN 'B' AND 'D';
Subconsulta para Comparación de Ejemplares
Visualiza todos los TEMA
s de la tabla LIBRERIA
cuyo número de EJEMPLARES
sea inferior a los que hay para el tema 'MEDICINA'.
SELECT TEMA FROM LIBRERIA WHERE EJEMPLARES < (SELECT EJEMPLARES FROM LIBRERIA WHERE TEMA='MEDICINA');
Filtrado de Temas por Rango de Ejemplares Excluyente
Visualiza los TEMA
s de la tabla LIBRERIA
cuyo número de EJEMPLARES
no esté entre 15 y 20, ambos incluidos.
SELECT TEMA FROM LIBRERIA WHERE EJEMPLARES NOT BETWEEN 15 AND 20;
Consultas SQL en las Tablas ALUMNOS, NOTAS y ASIGNATURAS
Visualización de Tablas Individuales
SELECT * FROM ALUMNOS;
SELECT * FROM ASIGNATURAS;
SELECT * FROM NOTAS;
Consultas Combinadas y Filtrado Avanzado
Asignaturas con Patrón Específico y Alumnos de Madrid
Selecciona el nombre y apellidos de las asignaturas que contengan tres letras 'o' en su nombre y que tengan alumnos matriculados en 'Madrid'.
SELECT A.NOMBRE, AL.APENOM FROM ASIGNATURAS A, ALUMNOS AL WHERE A.NOMBRE LIKE '%o%o%o%' AND AL.POBLA='Madrid';
Alumnos de Madrid con Asignaturas Suspendidas
Visualiza los nombres de los alumnos de 'Madrid' que tengan alguna asignatura suspendida (nota inferior a 5).
SELECT AL.APENOM FROM ALUMNOS AL JOIN NOTAS N ON AL.DNI = N.DNI WHERE AL.POBLA='Madrid' AND N.NOTA < 5;
Alumnos con la Misma Nota que un Estudiante Específico
Muestra los nombres de los alumnos que tengan la misma nota que 'Díaz Fernández, María' en la asignatura 'FOL'.
SELECT APENOM FROM ALUMNOS WHERE DNI IN (
SELECT DNI FROM NOTAS WHERE NOTA = (
SELECT N.NOTA FROM NOTAS N
JOIN ASIGNATURAS A ON N.COD = A.COD
JOIN ALUMNOS AL ON N.DNI = AL.DNI
WHERE AL.APENOM = 'Díaz Fernández, María' AND A.NOMBRE = 'FOL'
)
);
Asignaturas sin Alumnos Matriculados
Obtén los datos de las asignaturas que no tienen alumnos matriculados.
SELECT * FROM ASIGNATURAS WHERE COD NOT IN (SELECT COD FROM NOTAS);
Manipulación de Datos (DML)
Inserción de Datos (INSERT)
Inserción de Fila en la Tabla PROFESORES (Forma 1)
Inserta una nueva fila en la tabla PROFESORES
especificando las columnas.
INSERT INTO profesores (cod_centro, apellidos, especialidad)
VALUES (45, 'Martín, Isabel', 'INFORMÁTICA');
Inserción de Fila en la Tabla PROFESORES (Forma 2)
Inserta una nueva fila en la tabla PROFESORES
especificando todos los valores en el orden de las columnas de la tabla.
INSERT INTO profesores
VALUES (55, 21212121, 'Gómez, Jaime', 'Economía');
Eliminación de Datos (DELETE)
Eliminación de Registros en la Tabla PERSONAL (Ejercicio 4)
Elimina registros de la tabla PERSONAL
basándose en una subconsulta compleja que involucra las tablas PROFESORES
y CENTROS
. Nota: La sintaxis de la subconsulta parece incompleta o incorrecta en su origen.
DELETE FROM personal WHERE cod_centro IN (
SELECT c.cod_centro FROM profesores p, centros c
WHERE num_plazas < 300 AND p.cod_centro(+) > 300
GROUP BY c.cod_centro HAVING COUNT(*) <
);
Inserción de Datos desde una Consulta (INSERT SELECT)
Inserción en la Tabla PEDIDOS (Ejercicio 7)
Inserta nuevos registros en la tabla PEDIDOS
seleccionando datos de la tabla VENTAS
. Los registros insertados corresponden a los artículos con la máxima suma de unidades vendidas.
INSERT INTO pedidos
SELECT '1111-A', articulo, cod_fabricante, peso, categoria, SYSDATE, 20
FROM ventas
GROUP BY articulo, cod_fabricante, peso, categoria
HAVING SUM(unidades_vendidas) = (
SELECT MAX(sum_unidades)
FROM (
SELECT SUM(unidades_vendidas) AS sum_unidades
FROM ventas
GROUP BY articulo, cod_fabricante, peso, categoria
)
);
Definición y Modificación de Estructuras (DDL)
Creación de Tablas (CREATE TABLE)
Definición de la Tabla ARTICULO
Crea la tabla ARTICULO
con sus respectivas columnas, tipos de datos y restricciones (clave primaria, clave foránea y restricciones de chequeo).
CREATE TABLE articulo (
articulo VARCHAR2(20),
cod_fabricante NUMBER(3),
peso NUMBER(3),
categoria VARCHAR2(10),
precio_venta NUMBER(6,2),
precio_coste NUMBER(6,2),
existencias NUMBER(6),
CONSTRAINT pk_articulo PRIMARY KEY (articulo, cod_fabricante, peso, categoria),
CONSTRAINT fk_articulo FOREIGN KEY (cod_fabricante) REFERENCES fabricante,
CONSTRAINT ck_peso CHECK (peso > 0),
CONSTRAINT ck_precio_venta CHECK (precio_venta > 0),
CONSTRAINT ck_precio_coste CHECK (precio_coste > 0),
CONSTRAINT ck_cat CHECK (categoria IN ('Primera', 'Segunda', 'Tercera'))
);
Modificación de Tablas (ALTER TABLE)
Añadir Columna a PROFESORES (Ejercicio 8)
Añade la columna CONSER
de tipo numérico a la tabla PROFESORES
.
ALTER TABLE profesores ADD (CONSER NUMBER(2));
Creación de la Tabla TASIG (Ejercicio 9)
Crea la tabla TASIG
con las columnas cod_asig
y nom_asig
.
CREATE TABLE tasig (
cod_asig NUMBER(2),
nom_asig VARCHAR2(20)
);
Añadir Clave Primaria a TASIG (Ejercicio 10)
Añade una clave primaria a la tabla TASIG
en la columna cod_asig
.
ALTER TABLE tasig ADD CONSTRAINT pk_asig PRIMARY KEY (cod_asig);
Modificar Columna para Referencia (Ejercicio 11)
Intento de modificar la columna cod_asig
en la tabla TASIG
para que haga referencia a la tabla PROFESORES
. Nota: La sintaxis original para añadir una clave foránea mediante MODIFY
es incorrecta; se debería usar ADD CONSTRAINT ... FOREIGN KEY ... REFERENCES ...
.
ALTER TABLE tasig MODIFY (cod_asig REFERENCES profesores);