Ejemplos Iniciales DDL
Bases de Datos
IES Trassierra
EJEMPLOS PARA CLASE
Ejemplo 1 (Creación de tablas)
Crear una tabla denominada socios con los siguientes atributos:
• socio_no: numérico de longitud 4. Clave primaria.
• apellidos: alfanumérico de longitud 14. Único.
• telefono: alfanumérico de 9. No nulo.
•fecha_alta: fecha. Con el valor por defecto ’01:01:15’
• direccion: alfanumérico de longitud 20.
• codigo_postal: numérico. Valores comprendidos entre 14000 y 14900.
Solución:
DROP TABLE socios;
CREATE TABLE socios(
socio_no
NUMBER(4) PRIMARY KEY,
apellidos
VARCHAR2(14) UNIQUE,
telefono
CHAR(9) NOT NULL,
fecha_alta
DATE DEFAULT '01:01:14',
direccion
VARCHAR2(20),
codigo_postal NUMBER(5) CHECK (codigo_postal BETWEEN 14000 AND 14900)
);
INSERT INTO socios VALUES(1000,'LOPEZ SANTOS','957123456','08:01:05','C.REAL 5',14200);
INSERT INTO socios(socio_no, apellidos, telefono) VALUES(3,'García','954234567');
INSERT INTO socios(socio_no, telefono, codigo_postal) VALUES(5,'665778443');
INSERT INTO socios(socio_no, telefono, codigo_postal) VALUES(4,'665778443','29006');
En la penúltima línea de inserción, SQL emitirá un error ya que hemos indicado que en VALUES
nos falta un dato, el del código postal.
En la última línea de inserción, SQL emitirá un error ya que el código postal que intentamos
introducir no está comprendido entre 14000 y 14900 como se indica en su definición.
Ejemplo 2 (Restricciones) Crear tres tablas denominadas prueba1, prueba2 y prueba3 con los siguientes atributos:
Tabla prueba1:
codigo: alfanumérico de longitud 5. Clave primaria.
Tabla prueba2:
codigo: alfanumérico de longitud 3. Clave primaria.
cod: alfanumérico de longitud 5. Referencia al atributo codigo de la tabla prueba1 con borrado en
cascada.
Tabla prueba3:
codigo: alfanumérico de longitud 3. Clave primaria. cod: alfanumérico de longitud 5. Clave foránea con el atributo codigo de la tabla prueba1. Poner a
valor nulo cuando se borre el elemento correspondiente de la tabla prueba1.
Insertar los siguientes valores en las distintas tablas:
prueba1: valor 1;
prueba1: valor 2;
prueba1: valor 3
prueba2: valor (1,1); prueba2: valor (2,1); prueba2: valor (3,3); prueba2: valor (4,3)
prueba3: valor (1,1); prueba3: valor (2,1); prueba3: valor (3,3) prueba3: valor (4,3)
SQL
1/7
C.S. Despliegue Aplicaciones Web ‐ Semipresencial
Bases de Datos
Borrar de la tabla prueba1 todas las filas cuyo valor de atributo codigo sea mayor que 1.
Solución:
DROP TABLE prueba3;
DROP TABLE prueba2;
DROP TABLE prueba1;
CREATE TABLE prueba1(
codigo VARCHAR2(5) PRIMARY KEY
);
CREATE TABLE prueba2(
codigo VARCHAR2(3) PRIMARY KEY,
cod VARCHAR2(5) REFERENCES prueba1(codigo) ON DELETE CASCADE
);
CREATE TABLE prueba3(
codigo VARCHAR2(3) PRIMARY KEY,
cod VARCHAR2(5), CONSTRAINT FK_prueba3_prueba1 FOREIGN KEY (cod)
REFERENCES prueba1 (codigo) ON DELETE SET NULL
);
INSERT INTO prueba1 VALUES(1);
INSERT INTO prueba1 VALUES(2);
INSERT INTO prueba1 VALUES(3);
INSERT INTO prueba2 VALUES(1,1);
INSERT INTO prueba2 VALUES(2,1); INSERT INTO prueba2 VALUES(3,3);
INSERT INTO prueba2 VALUES(4,3);
INSERT INTO prueba3 VALUES(1,1);
INSERT INTO prueba3 VALUES(2,1);
INSERT INTO prueba3 VALUES(3,3);
INSERT INTO prueba3 VALUES(4,3);
/* Borrado múltiple */
DELETE FROM prueba1 WHERE codigo>1;
IES Trassierra
Ejemplo 3 (Integridad Referencial)
DROP TABLE jefes;
DROP TABLE empleados;
DROP TABLE departamento;
/*Insertaremos en esta tabla 5 TUPLAS*/
CREATE TABLE departamento(
codigo NUMBER(3) PRIMARY KEY,
nombre
VARCHAR2(20) NOT NULL
);
SQL
2/7
C.S. Despliegue Aplicaciones Web ‐ Semipresencial
Bases de Datos
IES Trassierra
/* Insertaremos en esta tabla 10 TUPLAS*/
CREATE TABLE empleados(
codigo NUMBER(5) PRIMARY KEY,
nombre VARCHAR(40) NOT NULL, ...
Regístrate para leer el documento completo.