CI IV ABD - Lab 13 Crear BD e Insertar Datos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

Administración de Base de Datos

GESTIÓN DE BASE DE DATOS

1. LABORATORIOS RESUELTOS
IMPORTANTE

Todos los scripts que aparecen a continuación deben ejecutarse en SQLDeveloper o


SQL*Plus.

1.1. Prácticas

Dado el siguiente modelo relacional:

1.1.1. Práctica 1: Creación de BD e inserción de Datos.

1. Obtener el posible diagrama E/R a partir del modelo relacional anterior.


2. Escribir las sentencias SQL correspondientes para crear las tablas en
ORACLE, teniendo en cuenta las siguientes restricciones:

CENTROS
Campo Nulo Tipo de datos Observaciones
NUMCE NOT NULL NUMBER(4) Número de centro
NOMCE VARCHAR2(25) Nombre de centro
DIRCE VARCHAR2(25) Dirección del centro

DEPARTAMENTOS
Campo Nulo Tipo de datos Observaciones
NUMDE NOT NUMBER(3) Número de departamento
NULL
NUMCE NUMBER(4) Número de centro
Administración de Base de Datos

DEPARTAMENTOS
Campo Nulo Tipo de datos Observaciones
DIREC NUMBER(3) Director
TIDIR CHAR(1) Tipo de director (en Propiedad, en
Funciones)
PRESU NUMBER(3,1) Presupuesto en miles de €
DEPDE NUMBER(3) Departamento del que depende
NOMDE VARCHAR2(20) Nombre de departamento
EMPLEADOS
Campo Nulo Tipo de datos Observaciones
NUMEM NOT NULL NUMBER(3) Número de empleado
EXTEL NUMBER(3) Extensión telefónica
FECNA DATE Fecha de nacimiento
FECIN DATE Fecha de incorporación
SALAR NUMBER(5) Salario
COMIS NUMBER(3) Comisión
NUMHI NUMBER(1) Número de hijos
NOMEM VARCHAR2(10) Nombre de empleado
NUMDE NUMBER(3) Número de departamento
CREATE TABLE CENTROS(

Numce NUMBER(4) NOT NULL,

Nomce VARCHAR2(25) NOT NULL UNIQUE,

Dirce VARCHAR2(25),

CONSTRAINT PK_CENTROS PRIMARY KEY(numce)

);

-- Fijaos que no creo la restricción de clave foránea para la relación


reflexiva,

-- para así evitar que sea necesario un orden concreto de inserción de


datos

CREATE TABLE DEPARTAMENTOS(

numde NUMBER(3) NOT NULL,

numce NUMBER(4),

direc NUMBER(3),

tidir CHAR(1),

presu NUMBER(3,1),

depde NUMBER(3),
Administración de Base de Datos

NOMDE VARCHAR2(20),

CONSTRAINT PK_DEPARTAMENTOS PRIMARY KEY(numde),

CONSTRAINT FK1_DEPARTAMENTOS FOREIGN KEY(numce)

REFERENCES CENTROS(numce)

ON DELETE CASCADE

);

-- NO PUEDO DEFINIR LA FORÁNEA REFLEXIVA PORQUE

-- NO PUEDO HACER REFERENCIA A UNA TABLA QUE

-- NO EXISTE. LA CREO AHORA CON UN ALTER TABLE

/*Ahora introduzco la clave foránea*/

ALTER TABLE DEPARTAMENTOS

ADD CONSTRAINT FK2_DEPARTAMENTOS

FOREIGN KEY(depde)

REFERENCES DEPARTAMENTOS(numde);

CREATE TABLE EMPLEADOS(

Numem NUMBER(3) NOT NULL,

Extel NUMBER(3),

Fecna DATE,

Fecin DATE,

Salar NUMBER(5),

Comis NUMBER(3),

Numhi NUMBER(1),

NOMEM VARCHAR2(10),

Numde NUMBER(3),

CONSTRAINT PK_EMPLEADOS PRIMARY KEY(numem),

CONSTRAINT FK1_EMPLEADOS FOREIGN KEY(numde)

REFERENCES DEPARTAMENTOS(numde)

ON DELETE CASCADE

);
Administración de Base de Datos

3. Inserta los siguientes datos en la tabla DEPARTAMENTOS.

EMPLEADOS
NUMDE NUMCE DIREC TIDIR PRESU DEPDE NOMDE
100 10 260 P 72 NULL DIRECCIÓN GENERAL
110 20 180 P 90 100 DIRECC.COMERCIAL
111 20 180 F 66 110 SECTOR INDUSTRIAL
112 20 270 P 54 110 SECTOR SERVICIOS
120 10 150 F 18 100 ORGANIZACIÓN
121 10 150 P 12 120 PERSONAL
122 10 350 P 36 120 PROCESO DE DATOS
130 10 310 P 12 100 FINANZAS

4. ¿Qué ocurre al insertar el primer registro? ¿Por qué? Plantea la solución.

--TENGO QUE INTRODUCIR PRIMERO LOS DATOS DE CENTROS

--EN EL EJERCICIO NOS HEMOS DADO CUENTA QUE SI INTENTAMOS

--HACER PRIMERO LA INSERCIÓN DE LOS DATOS DE DEPARTAMENTOS

--NO PODEMOS, PORQUE NO SE PUEDE INTRODUCIR UNA FORÁNEA

--ANTES DE INTRODUCIR LA PRINCIPAL CORRESPONDIENTE

5. Inserta los siguientes datos en la tabla CENTROS

CENTROS
NUMCE NOMCE DIRCE
10 SEDE CENTRAL C/ ATOCHA, 820, MADRID
20 RELACIÓN CON CLIENTES C/ ATOCHA, 405, MADRID
INSERT INTO CENTROS VALUES(10,'SEDE CENTRAL','C/ATOCHA,820,MADRID');

INSERT INTO CENTROS VALUES(20, 'RELACION CON CLIENTES',


'C/ATOCHA,405,MADRID');

--YA PUEDO INSERTAR LOS DATOS DE DEPARTAMENTOS

INSERT INTO DEPARTAMENTOS

VALUES(100, 10,260,'P',72,NULL, 'DIRECCIÓN GENERAL');

INSERT INTO DEPARTAMENTOS

VALUES(110, 20,180,'P',90,100, 'DIRECC.COMERCIAL');

INSERT INTO DEPARTAMENTOS

VALUES(111, 20,180,'F',66,110, 'SECTOR INDUSTRIAL');


Administración de Base de Datos

INSERT INTO DEPARTAMENTOS

VALUES(112, 20,270,'P',54,110, 'SECTOR SERVICIOS');

INSERT INTO DEPARTAMENTOS

VALUES(120, 10,150,'F',18,100, 'ORGANIZACIÓN');

INSERT INTO DEPARTAMENTOS

VALUES(121, 10,150,'P',12,120, 'PERSONAL');

INSERT INTO DEPARTAMENTOS

VALUES(122, 10,350,'P',36,120, 'PROCESO DE DATOS');

INSERT INTO DEPARTAMENTOS

VALUES(130, 10,310,'P',12,100, 'FINANZAS');

6. Inserta los siguientes datos en la tabla EMPLEADOS.

EMPLEADOS
NUMEM EXTEL FECNA FECIN SALAR COMIS NUMHI NOMEM NUMDE
110 350 10/11/1970 15/02/1985 1800 NULL 3 CESAR 121
120 840 09/06/1968 01/10/1988 1900 110 1 MARIO 112
130 810 09/09/1965 01/02/1981 1500 110 2 LUCIANO 112
150 340 10/08/1972 15/01/1997 2600 NULL 0 JULIO 121
160 740 09/07/1980 11/11/2005 1800 110 2 AUREO 111
180 508 18/10/1974 18/03/1996 2800 50 2 MARCOS 110
190 350 12/05/1972 11/02/1992 1750 NULL 4 JULIANA 121
210 200 28/09/1970 22/01/1999 1910 NULL 2 PILAR 100
240 760 26/02/1967 24/02/1989 1700 100 3 LAVINIA 111
250 250 27/10/1976 01/03/1997 2700 NULL 0 ADRIANA 100
260 220 03/12/1973 12/07/2001 720 NULL 6 ANTONIO 100
270 800 21/05/1975 10/09/2003 1910 80 3 OCTAVIO 112
280 410 10/01/1978 08/10/2010 1500 NULL 5 DOROTEA 130
285 620 25/10/1979 15/02/2011 1910 NULL 0 OTILIA 122
290 910 30/11/1967 14/02/1988 1790 NULL 3 GLORIA 120
310 480 21/11/1976 15/01/2001 1950 NULL 0 AUGUSTO 130
320 620 25/12/1977 05/02/2003 2400 NULL 2 CORNELIO 122
330 850 19/08/1958 01/03/1980 1700 90 0 AMELIA 112
350 610 13/04/1979 10/09/1999 2700 NULL 1 AURELIO 122
360 750 29/10/1978 10/10/1998 1800 100 2 DORINDA 111
370 360 22/06/1977 20/01/2000 1860 NULL 1 FABIOLA 121
380 880 30/03/1978 01/01/1999 1100 NULL 0 MICAELA 112
390 500 19/02/1976 08/10/2010 1290 NULL 1 CARMEN 110
400 780 18/08/1979 01/11/2011 1150 NULL 0 LUCRECIA 111
410 660 14/07/1968 13/10/1989 1010 NULL 0 AZUCENA 122
420 450 22/10/1966 19/11/1988 2400 NULL 0 CLAUDIA 130
430 650 26/10/1967 19/11/1988 1260 NULL 1 VALERIANA 122
440 760 26/09/1966 28/02/1986 1260 100 0 LIVIA 111
450 880 21/10/1966 28/02/1986 1260 100 0 SABINA 112
480 760 04/04/1965 28/02/1986 1260 100 1 DIANA 111
490 880 06/06/1964 01/01/1988 1090 100 0 HORACIO 112
Administración de Base de Datos

EMPLEADOS
NUMEM EXTEL FECNA FECIN SALAR COMIS NUMHI NOMEM NUMDE
500 750 08/10/1965 01/01/1987 1200 100 0 HONORIA 111
510 550 04/05/1966 01/11/1986 1200 NULL 1 ROMULO 110
550 780 10/01/1970 21/01/1998 600 120 0 SANCHO 111

-- YA INSERTAMOS EMPLEADOS

INSERT INTO EMPLEADOS


VALUES(110,350,'10/11/1970','15/02/1985',1800,NULL,3,'CESAR',121);

INSERT INTO EMPLEADOS


VALUES(120,840,'09/06/1968','01/10/1988',1900,110,1,'MARIO',112);

INSERT INTO EMPLEADOS


VALUES(130,810,'09/09/1965','01/02/1981',1500,110,2,'LUCIANO',112);

INSERT INTO EMPLEADOS


VALUES(150,340,'10/08/1972','15/01/1997',2600,NULL,0,'JULIO',121);

INSERT INTO EMPLEADOS


VALUES(160,740,'09/07/1980','11/11/2005',1800,110,2,'AUREO',111);

INSERT INTO EMPLEADOS


VALUES(180,508,'18/10/1974','18/03/1996',2800,50,2,'MARCOS',110);

INSERT INTO EMPLEADOS


VALUES(190,350,'12/05/1972','11/02/1992',1750,NULL,4,'JULIANA',121);

INSERT INTO EMPLEADOS


VALUES(210,200,'28/09/1970','22/01/1999',1910,NULL,2,'PILAR',100);

INSERT INTO EMPLEADOS


VALUES(240,760,'26/02/1967','24/02/1989',1700,100,3,'LAVINIA',111);

INSERT INTO EMPLEADOS


VALUES(250,250,'27/10/1976','01/03/1997',2700,NULL,0,'ADRIANA',100);

INSERT INTO EMPLEADOS


VALUES(260,220,'03/12/1973','12/07/2001',720,NULL,6,'ANTONIO',100);

INSERT INTO EMPLEADOS


VALUES(270,800,'21/05/1975','10/09/2003',1910,80,3,'OCTAVIO',112);

INSERT INTO EMPLEADOS


VALUES(280,410,'10/01/1978','08/10/2010',1500,NULL,5,'DOROTEA',130);

INSERT INTO EMPLEADOS


VALUES(285,620,'25/10/1979','15/02/2011',1910,NULL,0,'OTILIA',122);

INSERT INTO EMPLEADOS


VALUES(290,910,'30/11/1967','14/02/1988',1790,NULL,3,'GLORIA',120);

INSERT INTO EMPLEADOS


VALUES(310,480,'21/11/1976','15/01/2001',1950,NULL,0,'AUGUSTO',130);

INSERT INTO EMPLEADOS


VALUES(320,620,'25/12/1977','05/02/2003',2400,NULL,2,'CORNELIO',122);
Administración de Base de Datos

INSERT INTO EMPLEADOS


VALUES(330,850,'19/08/1958','01/03/1980',1700,90,0,'AMELIA',112);

INSERT INTO EMPLEADOS


VALUES(350,610,'13/04/1979','10/09/1999',2700,NULL,1,'AURELIO',122);

INSERT INTO EMPLEADOS


VALUES(360,750,'29/10/1978','10/10/1998',1800,100,2,'DORINDA',111);

INSERT INTO EMPLEADOS


VALUES(370,360,'22/06/1977','20/01/2000',1860,NULL,1,'FABIOLA',121);

INSERT INTO EMPLEADOS


VALUES(380,880,'30/03/1978','01/01/1999',1100,NULL,0,'MICAELA',112);

INSERT INTO EMPLEADOS


VALUES(390,500,'19/02/1976','08/10/2010',1290,NULL,1,'CARMEN',110);

INSERT INTO EMPLEADOS


VALUES(400,780,'18/08/1979','01/11/2011',1150,NULL,0,'LUCRECIA',111);

INSERT INTO EMPLEADOS


VALUES(410,660,'14/07/1968','13/10/1989',1010,NULL,0,'AZUCENA',122);

INSERT INTO EMPLEADOS


VALUES(420,450,'22/10/1966','19/11/1988',2400,NULL,0,'CLAUDIA',130);

INSERT INTO EMPLEADOS


VALUES(430,650,'26/10/1967','19/11/1988',1260,NULL,1,'VALERIANA',122);

INSERT INTO EMPLEADOS


VALUES(440,760,'26/09/1966','28/02/1986',1260,100,0,'LIVIA',111);

INSERT INTO EMPLEADOS


VALUES(450,880,'21/10/1966','28/02/1986',1260,100,0,'SABINA',112);

INSERT INTO EMPLEADOS


VALUES(480,760,'04/04/1965','28/02/1986',1260,100,1,'DIANA',111);

INSERT INTO EMPLEADOS


VALUES(490,880,'06/06/1964','01/01/1988',1090,100,0,'HORACIO',112);

INSERT INTO EMPLEADOS


VALUES(500,750,'08/10/1965','01/01/1987',1200,100,0,'HONORIA',111);

INSERT INTO EMPLEADOS


VALUES(510,550,'04/05/1966','01/11/1986',1200,NULL,1,'ROMULO',110);

INSERT INTO EMPLEADOS


VALUES(550,780,'10/01/1970','21/01/1998',600,120,0,'SANCHO',111);
Administración de Base de Datos

Nota: En lugar de la inserción de datos, puedes ahorrar tiempo descargando el


script EMPLEADOS.SQL que está disponible en la plataforma Moodle. Este script
contiene todas las tablas. Si utilizas el script deberás borrar las tablas previas.

SOLUCIÓN

PROMPT ================================ Practica 1


================================

DROP USER EMPLEADOS CASCADE;

CREATE USER EMPLEADOS IDENTIFIED BY "EMPLEADOS";

GRANT CONNECT,RESOURCE,CREATE VIEW TO EMPLEADOS;

CONNECT EMPLEADOS/EMPLEADOS

----------------

-- DISEÑO FÍSICO

----------------

-- CENTROS

CREATE TABLE CENTROS (

NUMCE NUMBER(4) PRIMARY KEY,

NOMCE VARCHAR2(30),

DIRCE VARCHAR2(30)

);

-- DEPARTAMENTOS

CREATE TABLE DEPARTAMENTOS (

NUMDE NUMBER(3) PRIMARY KEY,

NUMCE NUMBER(4) REFERENCES CENTROS(NUMCE),

DIREC NUMBER(3),

TIDIR CHAR(1),

PRESU NUMBER(3,1),

DEPDE NUMBER(3) REFERENCES DEPARTAMENTOS(NUMDE),

NOMDE VARCHAR2(30)

);
Administración de Base de Datos

-- EMPLEADOS

CREATE TABLE EMPLEADOS (

NUMEM NUMBER(3) PRIMARY KEY,

EXTEL NUMBER(3),

FECNA DATE,

FECIN DATE,

SALAR NUMBER(5),

COMIS NUMBER(3),

NUMHI NUMBER(1),

NOMEM VARCHAR2(30),

NUMDE NUMBER(3) REFERENCES DEPARTAMENTOS (NUMDE)

);

--------

-- DATOS

--------

-- CENTROS

INSERT INTO CENTROS VALUES(10,'SEDE CENTRAL','C/ ATOCHA, 820, MADRID');

INSERT INTO CENTROS VALUES(20,'RELACIÓN CON CLIENTES','C/ ATOCHA, 405,


MADRID');

-- DEPARTAMENTOS

INSERT INTO DEPARTAMENTOS VALUES(100,10,260,'P',72,NULL,'DIRECCIÓN


GENERAL');

INSERT INTO DEPARTAMENTOS


VALUES(110,20,180,'P',90,100,'DIRECC.COMERCIAL');

INSERT INTO DEPARTAMENTOS VALUES(111,20,180,'F',66,110,'SECTOR


INDUSTRIAL');

INSERT INTO DEPARTAMENTOS VALUES(112,20,270,'P',54,110,'SECTOR


SERVICIOS');

INSERT INTO DEPARTAMENTOS VALUES(120,10,150,'F',18,100,'ORGANIZACIÓN');

INSERT INTO DEPARTAMENTOS VALUES(121,10,150,'P',12,120,'PERSONAL');

INSERT INTO DEPARTAMENTOS VALUES(122,10,350,'P',36,120,'PROCESO DE


DATOS');

INSERT INTO DEPARTAMENTOS VALUES(130,10,310,'P',12,100,'FINANZAS');

-- EMPLEADOS
Administración de Base de Datos

INSERT INTO EMPLEADOS


VALUES(110,350,'10/11/1970','15/02/1985',1800,NULL,3,'CESAR',121);

INSERT INTO EMPLEADOS


VALUES(120,840,'09/06/1968','01/10/1988',1900,110,1,'MARIO',112);

INSERT INTO EMPLEADOS


VALUES(130,810,'09/09/1965','01/02/1981',1500,110,2,'LUCIANO',112);

INSERT INTO EMPLEADOS


VALUES(150,340,'10/08/1972','15/01/1997',2600,NULL,0,'JULIO',121);

INSERT INTO EMPLEADOS


VALUES(160,740,'09/07/1980','11/11/2005',1800,110,2,'AUREO',111);

INSERT INTO EMPLEADOS


VALUES(180,508,'18/10/1974','18/03/1996',2800,50,2,'MARCOS',110);

INSERT INTO EMPLEADOS


VALUES(190,350,'12/05/1972','11/02/1992',1750,NULL,4,'JULIANA',121);

INSERT INTO EMPLEADOS


VALUES(210,200,'28/09/1970','22/01/1999',1910,NULL,2,'PILAR',100);

INSERT INTO EMPLEADOS


VALUES(240,760,'26/02/1967','24/02/1989',1700,100,3,'LAVINIA',111);

INSERT INTO EMPLEADOS


VALUES(250,250,'27/10/1976','01/03/1997',2700,NULL,0,'ADRIANA',100);

INSERT INTO EMPLEADOS


VALUES(260,220,'03/12/1973','12/07/2001',720,NULL,6,'ANTONIO',100);

INSERT INTO EMPLEADOS


VALUES(270,800,'21/05/1975','10/09/2003',1910,80,3,'OCTAVIO',112);

INSERT INTO EMPLEADOS


VALUES(280,410,'10/01/1978','08/10/2010',1500,NULL,5,'DOROTEA',130);

INSERT INTO EMPLEADOS


VALUES(285,620,'25/10/1979','15/02/2011',1910,NULL,0,'OTILIA',122);

INSERT INTO EMPLEADOS


VALUES(290,910,'30/11/1967','14/02/1988',1790,NULL,3,'GLORIA',120);

INSERT INTO EMPLEADOS


VALUES(310,480,'21/11/1976','15/01/2001',1950,NULL,0,'AUGUSTO',130);

INSERT INTO EMPLEADOS


VALUES(320,620,'25/12/1977','05/02/2003',2400,NULL,2,'CORNELIO',122);

INSERT INTO EMPLEADOS


VALUES(330,850,'19/08/1958','01/03/1980',1700,90,0,'AMELIA',112);

INSERT INTO EMPLEADOS


VALUES(350,610,'13/04/1979','10/09/1999',2700,NULL,1,'AURELIO',122);

INSERT INTO EMPLEADOS


VALUES(360,750,'29/10/1978','10/10/1998',1800,100,2,'DORINDA',111);
Administración de Base de Datos

INSERT INTO EMPLEADOS


VALUES(370,360,'22/06/1977','20/01/2000',1860,NULL,1,'FABIOLA',121);

INSERT INTO EMPLEADOS


VALUES(380,880,'30/03/1978','01/01/1999',1100,NULL,0,'MICAELA',112);

INSERT INTO EMPLEADOS


VALUES(390,500,'19/02/1976','08/10/2010',1290,NULL,1,'CARMEN',110);

INSERT INTO EMPLEADOS


VALUES(400,780,'18/08/1979','01/11/2011',1150,NULL,0,'LUCRECIA',111);

INSERT INTO EMPLEADOS


VALUES(410,660,'14/07/1968','13/10/1989',1010,NULL,0,'AZUCENA',122);

INSERT INTO EMPLEADOS


VALUES(420,450,'22/10/1966','19/11/1988',2400,NULL,0,'CLAUDIA',130);

INSERT INTO EMPLEADOS


VALUES(430,650,'26/10/1967','19/11/1988',1260,NULL,1,'VALERIANA',122);

INSERT INTO EMPLEADOS


VALUES(440,760,'26/09/1966','28/02/1986',1260,100,0,'LIVIA',111);

INSERT INTO EMPLEADOS


VALUES(450,880,'21/10/1966','28/02/1986',1260,100,0,'SABINA',112);

INSERT INTO EMPLEADOS


VALUES(480,760,'04/04/1965','28/02/1986',1260,100,1,'DIANA',111);

INSERT INTO EMPLEADOS


VALUES(490,880,'06/06/1964','01/01/1988',1090,100,0,'HORACIO',112);

INSERT INTO EMPLEADOS


VALUES(500,750,'08/10/1965','01/01/1987',1200,100,0,'HONORIA',111);

INSERT INTO EMPLEADOS


VALUES(510,550,'04/05/1966','01/11/1986',1200,NULL,1,'ROMULO',110);

INSERT INTO EMPLEADOS


VALUES(550,780,'10/01/1970','21/01/1998',600,120,0,'SANCHO',111);

COMMIT

También podría gustarte