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 TEMAs 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 TEMAs 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);

Entradas relacionadas: