1.
Crear la BD DOCENCIA y la tabla PROFESOR
CREATE DATABASE DOCENCIA;
USE DOCENCIA;
CREATE TABLE PROFESOR (
DNI INT PRIMARY KEY,
NOM_P VARCHAR(10)
);
-- Comprobar estructura:
DESCRIBE PROFESOR;
2. Modificar la tabla PROFESOR
ALTER TABLE PROFESOR MODIFY NOM_P VARCHAR(30);
ALTER TABLE PROFESOR ADD N_HORAS INT;
ALTER TABLE PROFESOR ADD SALARIO INT;
-- Comprobar estructura:
DESCRIBE PROFESOR;
3. Crear tabla ASIG con clave externa y borrado en cascada
CREATE TABLE ASIG (
COD_A INT PRIMARY KEY,
NOM_A VARCHAR(10),
CRED DECIMAL(3,1),
DNI INT,
FOREIGN KEY (DNI) REFERENCES PROFESOR(DNI) ON DELETE CASCADE
);
4. Ver tablas de la BD
SHOW TABLES;
5. Intentar eliminar PROFESOR
DROP TABLE PROFESOR;
-- Aparecerá un error si `ASIG` depende de ella.
-- Para poder eliminarla:
DROP TABLE ASIG;
DROP TABLE PROFESOR;
-- Verificar que se eliminó:
SHOW TABLES;
6. Crear archivo CREAR. con las definiciones
Contenido del archivo CREAR.:
CREATE TABLE PROFESOR (
DNI INT PRIMARY KEY,
NOM_P VARCHAR(30),
N_HORAS INT,
SALARIO INT
);
CREATE TABLE ASIG (
COD_A INT PRIMARY KEY,
NOM_A VARCHAR(10),
CRED DECIMAL(3,1),
DNI INT,
FOREIGN KEY (DNI) REFERENCES PROFESOR(DNI) ON DELETE CASCADE
);
Ejecutar en consola:
SOURCE CREAR.;
7. Ver los índices existentes
SHOW INDEX FROM PROFESOR;
SHOW INDEX FROM ASIG;
8. Crear índice X_NOM_P en PROFESOR
CREATE INDEX X_NOM_P ON PROFESOR(NOM_P);
SHOW INDEX FROM PROFESOR;
9. Insertar registros en PROFESOR
INSERT INTO PROFESOR VALUES (111, '[Link]ía', 10, 700);
INSERT INTO PROFESOR VALUES (222, '[Link]', 12, 1200);
INSERT INTO PROFESOR VALUES (333, '[Link]', 8, 500);
-- Ver tabla:
SELECT * FROM PROFESOR;
10. Insertar en ASIG
INSERT INTO ASIG VALUES (01, 'BD', 6.0, 111);
-- Esta lanzará error: no existe el profesor 444
INSERT INTO ASIG VALUES (02, 'EMPRESA', 6.0, 444);
-- Corregir: cambiar 444 por un DNI existente
-- Por ejemplo:
-- INSERT INTO ASIG VALUES (02, 'EMPRESA', 6.0, 222);
INSERT INTO ASIG VALUES (03, 'ESTADISTICA', 4.5, 333);
-- Verificar datos:
SELECT * FROM ASIG;
SELECT * FROM PROFESOR;
11. Crear tabla PRACTICAS con restricciones nombradas
CREATE TABLE PRACTICAS (
COD_P INT PRIMARY KEY,
NOM_P VARCHAR(15),
COD_A INT,
CONSTRAINT FK_ASIG FOREIGN KEY (COD_A) REFERENCES ASIG(COD_A) ON
DELETE CASCADE
);
12. Insertar datos en PRACTICAS
INSERT INTO PRACTICAS VALUES (001, 'MANEJO ', 01);
INSERT INTO PRACTICAS VALUES (002, '[Link]', 02);
13. Eliminar la asignatura BD
DELETE FROM ASIG WHERE COD_A = 01;
-- Si existen prácticas con COD_A = 01, solo se eliminará si se activó
ON DELETE CASCADE.
14. Eliminar al profesor 333
DELETE FROM PROFESOR WHERE DNI = 333;
-- Las asignaturas de ese profesor también se eliminan automáticamente
si la FK en ASIG tiene ON DELETE CASCADE.
-- Verificar:
SELECT * FROM ASIG;
SELECT * FROM PROFESOR;