Ejercicios Prácticos de DDL en Bases de Datos Oracle
Enviado por Comunidad Xuletas y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 6,62 KB
A continuación, se presentan una serie de ejercicios prácticos para comprender y aplicar el lenguaje DDL (Data Definition Language) en bases de datos Oracle. Estos ejercicios abarcan la creación, modificación y eliminación de objetos de la base de datos.
Ejercicio 1: ¿Qué significa DDL?
El término DDL se refiere al Lenguaje de Definición de Datos (Data Definition Language).
Ejercicio 2: Restricciones de Integridad de Columna
A continuación, se muestra cómo crear tablas con restricciones de integridad a nivel de columna:
CREATE SCHEMA AUTHORIZATION moko;
CREATE TABLE alumno //Se crea primero las tablas sin claves ajenas.
(
alumno_id NUMBER (4) PRIMARY KEY,
dni VARCHAR2 (9),
apellidos VARCHAR2 (50),
nombre VARCHAR2 (50),
fec_nac DATE
);
CREATE TABLE titulacion
(
titulacion_id NUMBER (3) PRIMARY KEY,
nombre VARCHAR2 (30),
creditos NUMBER (4)
);
CREATE TABLE matricula
(
matricula_id NUMBER (4) PRIMARY KEY,
titulacion_id NUMBER (3) REFERENCES titulacion(titulacion_id),
alumno_id NUMBER (4) REFERENCES alumno(alumno_id),
fecha DATE,
importe NUMBER (7,2) CHECK(importe > 100),
curso_escolar NUMBER (4)
);
Ejercicio 3: Borrar Tablas
Para borrar tablas, se utiliza el comando DROP TABLE. El uso de CASCADE CONSTRAINTS permite eliminar las tablas y sus dependencias (claves foráneas). Si no se usa, primero se deben borrar las tablas con claves ajenas.
DROP TABLE alumno CASCADE CONSTRAINTS;
DROP TABLE titulacion CASCADE CONSTRAINTS;
DROP TABLE matricula CASCADE CONSTRAINTS;
Ejercicio 4: Restricciones de Integridad de Tabla
Este ejercicio muestra cómo definir restricciones de integridad a nivel de tabla:
CREATE SCHEMA AUTHORIZATION moko;
CREATE TABLE alumno
(
alumno_id NUMBER (4),
dni VARCHAR2 (9),
apellidos VARCHAR2 (50),
nombre VARCHAR2 (50),
fec_nac DATE,
CONSTRAINT clave_prim_alumno PRIMARY KEY (alumno_id)
);
CREATE TABLE titulacion
(
titulacion_id NUMBER (3),
nombre VARCHAR2 (30),
creditos NUMBER (4),
CONSTRAINT clave_prim_titulacion PRIMARY KEY (titulacion_id)
);
CREATE TABLE matricula
(
matricula_id NUMBER (4),
titulacion_id NUMBER (3),
alumno_id NUMBER (4),
fecha DATE,
importe NUMBER (7,2),
curso_escolar NUMBER (4),
CONSTRAINT clave_prim_matricula PRIMARY KEY (matricula_id),
CONSTRAINT clave_ajena_titulacion FOREIGN KEY (titulacion_id) REFERENCES titulacion(titulacion_id),
CONSTRAINT clave_ajena_alumno FOREIGN KEY (alumno_id) REFERENCES alumno(alumno_id),
CONSTRAINT importe_mayor_100 CHECK(importe > 100)
);
Ejercicio 5: Sinónimos Públicos en Inglés
Se crean sinónimos públicos en inglés para cada tabla:
CREATE PUBLIC SYNONYM student FOR moko.alumno;
CREATE PUBLIC SYNONYM matriculation FOR moko.matricula;
CREATE PUBLIC SYNONYM titulation FOR moko.titulacion;
Ejercicio 6: Crear Secuencias
Se crean secuencias para generar valores únicos:
CREATE SEQUENCE sec_alumno_id //por defecto empieza en 1 e incrementa 1;
CREATE SEQUENCE sec_matricula_id
START WITH 1000 INCREMENT BY -1
MAXVALUE 1000
MINVALUE 0;
CREATE SEQUENCE sec_titulacion_id
START WITH 0 INCREMENT BY 10
MINVALUE 0;
Ejercicio 7: Comentarios para las Tablas
Se añaden comentarios a las tablas:
COMMENT ON TABLE alumno IS 'Contiene un registro para cada alumno.';
COMMENT ON TABLE matricula IS 'Contiene un registro para cada matrícula.';
COMMENT ON TABLE titulacion IS 'Contiene un registro para cada titulación.';
Ejercicio 8: Comentarios para Columnas
Se añaden comentarios a las columnas:
COMMENT ON COLUMN matricula.importe IS 'Tiene que ser superior a 100€.';
COMMENT ON COLUMN titulacion.creditos IS 'Número mínimo de creditos.';
Ejercicio 9: Visualizar Comentarios
Se visualizan los comentarios utilizando las vistas del diccionario de datos:
SELECT * FROM USER_COL_COMMENTS;
SELECT * FROM USER_TAB_COMMENTS;
Ejercicio 10: Crear un Índice
Se crea un índice para agilizar las búsquedas y ordenaciones alfabéticas de los alumnos:
CREATE INDEX indice_ape_nom ON alumno(apellidos, nombre);
Ejercicio 11: Crear una Vista
Se crea una vista llamada “libro_no_devuelto”:
CREATE VIEW libro_no_devuelto AS
SELECT l.cod_libro, titulo, fec_pre, s.cod_socio, nombre
FROM libro l, prestamo p, socio s
WHERE l.cod_libro=p.cod_libro AND p.cod_socio=s.cod_socio
AND fec_dev IS NULL;
Ejercicio 12: Comentario para la Vista
Se añade un comentario a la vista:
COMMENT ON TABLE libro_no_devuelto IS 'Libros no devueltos';
Ejercicio 13: Comentario para la Columna de la Vista
Se añade un comentario a la columna nombre de la vista:
COMMENT ON COLUMN libro_no_devuelto.nombre IS 'Nombre Y apellidos del socio';
Ejercicio 14: Visualizar Comentarios (Repetición)
Se visualizan los comentarios (repetición del ejercicio 9):
SELECT * FROM user_tab_comments;
SELECT * FROM user_col_comments;
Ejercicio 15: Crear un Índice (Repetición)
Se crea un índice llamado ind_soc_nom para la columna nombre de la tabla socio:
CREATE INDEX ind_soc_nom ON socio (nombre);
Ejercicio 16: Visualizar Índices
Se visualizan todos los índices propiedad del usuario:
SELECT * FROM user_indexes;
Ejercicio 17: Reconstruir un Índice
Se reconstruye el índice anterior:
ALTER INDEX ind_soc_nom REBUILD;
Ejercicio 18: Crear una Secuencia (Repetición)
Se crea una secuencia que empieza en 1 con incrementos de 1 y valor máximo 1000:
CREATE SEQUENCE sc_prueba MAXVALUE 1000;
Ejercicio 19: Crear un Sinónimo Público
Se crea un sinónimo público para la tabla libro llamado book:
CREATE PUBLIC SYNONYM book FOR libro;
Ejercicio 20: Renombrar una Tabla
Se renombra la tabla socio a lalala:
ALTER TABLE socio RENAME TO lalala;
-- También sirve:
RENAME socio TO lalala;
Ejercicios 5-10 (Repetición)
Se repiten los ejercicios del 5 al 10.
Nota: Los ejercicios repetidos se han mantenido para reflejar el contenido original del documento.