Sei sulla pagina 1di 4

LECCION ORACLE

PARA CADA TEMA, PEGUE LAS SENTENCIAS Y LOS RESULTADOS EN PANTALLA, EN LOS CASOS
PERTINENTES INCLUYA LAS PREGUNTAS Y
RESPUESTAS SOLICITADAS

1.- CREAR LAS SIGUIENTES TABLAS

CREATE TABLE EMPLEADO (


NOMBRE VARCHAR(15) NOT NULL,
INC CHAR,
APELLIDO VARCHAR(15) NOT NULL,
NSS CHAR(9) NOT NULL,
FECHA_NCTO DATE,
DIRECCION VARCHAR(30),
SALARIO DECIMAL(10,2),
NSS_SUPERV CHAR(9),
ND INT);

CREATE TABLE DEPARTAMENTO(


NOMBRED VARCHAR(15) NOT NULL,
NUMEROD INT NOT NULL,
NSS_JEFE CHAR(9) NOT NULL,
FECHA_INICIO_JEFE DATE);

CREATE TABLE LOCALIZACIONES_DEPT(


NUMEROD INT NOT NULL,
LOCALIZACIOND VARCHAR(15) NOT NULL);

CREATE TABLE PROYECTO(


NOMBREP VARCHAR(15) NOT NULL,
NUMEROP INT NOT NULL,
LOCALIZACIONP VARCHAR(15),
NUMD INT NOT NULL);

CREATE TABLE TRABAJA_EN(


NSSE CHAR(9) NOT NULL,
NP INT NOT NULL,
HORAS DECIMAL(3,1) NOT NULL);

CREATE TABLE DEPENDIENTE(


NSSE CHAR(9) NOT NULL,
NOMBRE_DEPENDIENTE VARCHAR(15) NOT NULL,
SEXO CHAR,
FECHA_NCTO DATE,
PARENTESCO VARCHAR(8));

2.-VERIFICAR SI ESTAN EN LAS TABLAS ESTAN RECONOCIDAS POR EL MOTOR ORACLE

SELECT TABLE_NAME FROM USER_TABLES;

SELECT * FROM TABS

cual es la diferencia que se aprecia en la ejecucion de las dos sentencias


anteriores?

3.- ejecute la inserccion de los datos


INSERT INTO DEPARTAMENTO VALUES('Investigacin',5,'333445555','22-MAY-88');
INSERT INTO DEPARTAMENTO VALUES('Administracin',4,'987654321','01-JAN-95');
INSERT INTO DEPARTAMENTO VALUES('Direccin',1,'888775555','19-JUN-81');

INSERT INTO LOCALIZACIONES_DEPT VALUES(1,'Houston');


INSERT INTO LOCALIZACIONES_DEPT VALUES(4,'Stafford');
INSERT INTO LOCALIZACIONES_DEPT VALUES(5,'Bellaire');
INSERT INTO LOCALIZACIONES_DEPT VALUES(5,'Sugarland');
INSERT INTO LOCALIZACIONES_DEPT VALUES(5,'Houston');

INSERT INTO PROYECTO VALUES('ProductoX',1,'Bellaire',5);


INSERT INTO PROYECTO VALUES('ProductoY',2,'Sugarland',5);
INSERT INTO PROYECTO VALUES('ProductoZ',3,'Houston',5);
INSERT INTO PROYECTO VALUES('Automatizacin',10,'Stafford',4);
INSERT INTO PROYECTO VALUES ('Reorganizacin',20,'Houston',1);
INSERT INTO PROYECTO VALUES('Nuevos valores',30,'Stafford',4);

INSERT INTO TRABAJA_EN VALUES('123456789',1,32.5);


INSERT INTO TRABAJA_EN VALUES('123456789',2,7.5);
INSERT INTO TRABAJA_EN VALUES('666884444',3,40.0);
INSERT INTO TRABAJA_EN VALUES('453453453',1,20.0);
INSERT INTO TRABAJA_EN VALUES('453453453',2,20.0);
INSERT INTO TRABAJA_EN VALUES('333445555',2,10.0);
INSERT INTO TRABAJA_EN VALUES('333445555',3,10.0);
INSERT INTO TRABAJA_EN VALUES('333445555',10,10.0);
INSERT INTO TRABAJA_EN VALUES('333445555',20,10.0);
INSERT INTO TRABAJA_EN VALUES('999887777',30,30.0);
INSERT INTO TRABAJA_EN VALUES('999887777',10,10.0);
INSERT INTO TRABAJA_EN VALUES('987987987',10,35.0);
INSERT INTO TRABAJA_EN VALUES('987987987',30,5.0);
INSERT INTO TRABAJA_EN VALUES('987654321',30,20.0);
INSERT INTO TRABAJA_EN VALUES('987654321',20,15.0);
INSERT INTO TRABAJA_EN VALUES('888775555',20,null);

INSERT INTO DEPENDIENTE VALUES('333445555','Alice','M','05-APR-86','HIJA');


INSERT INTO DEPENDIENTE VALUES('333445555','Theodore','H','25-OCT-83','HIJO');
INSERT INTO DEPENDIENTE VALUES('333445555','Joy','M','03-MAY-58','ESPOSA');
INSERT INTO DEPENDIENTE VALUES('987654321','Abner','H','28-FEB-42','ESPOSO');
INSERT INTO DEPENDIENTE VALUES('123456789','Michael','H','04-JAN-88','HIJO');
INSERT INTO DEPENDIENTE VALUES('123456789','Alice','M','30-DEC-88','HIJA');
INSERT INTO DEPENDIENTE VALUES('123456789','Elizabeth','M','05-MAY-67','ESPOSA');

COMMIT

Porque le sale el error :


ORA-01400: cannot insert NULL into
("SQL_SXMTTMBFVSBATVWFQIEEDEUCF"."TRABAJA_EN"."HORAS") ORA-06512: at
"SYS.DBMS_SQL", line 1721

explicar:

corregir el script en la parte pertinente y pegue cual es la sentencia que debe


corregir y ejecutela.

INSERT INTO TRABAJA_EN VALUES('888775555',20,null);

INSERT INTO TRABAJA_EN VALUES('888775555',20,1);


4.- CREAR LAS RESTRICCIONES

ALTER TABLE EMPLEADO ADD PRIMARY KEY(NSS);

ALTER TABLE DEPARTAMENTO ADD PRIMARY KEY (NUMEROD);


ALTER TABLE DEPARTAMENTO ADD UNIQUE (NOMBRED);
ALTER TABLE DEPARTAMENTO ADD FOREIGN KEY (NSS_JEFE) REFERENCES EMPLEADO(NSS);

ALTER TABLE LOCALIZACIONES_DEPT ADD PRIMARY KEY(NUMEROD,LOCALIZACIOND) ;


ALTER TABLE LOCALIZACIONES_DEPT ADD FOREIGN KEY(NUMEROD) REFERENCES
DEPARTAMENTO(NUMEROD) ;

ALTER TABLE PROYECTO ADD PRIMARY KEY(NUMEROP);


ALTER TABLE PROYECTO ADD UNIQUE(NOMBREP);
ALTER TABLE PROYECTO ADD FOREIGN KEY(NUMD) REFERENCES DEPARTAMENTO(NUMEROD);

ALTER TABLE TRABAJA_EN ADD PRIMARY KEY(NSSE, NP);


ALTER TABLE TRABAJA_EN ADD FOREIGN KEY(NSSE) REFERENCES EMPLEADO(NSS);
ALTER TABLE TRABAJA_EN ADD FOREIGN KEY(NP) REFERENCES PROYECTO(NUMEROP);

ALTER TABLE DEPENDIENTE ADD PRIMARY KEY(NSSE, NOMBRE_DEPENDIENTE);


ALTER TABLE DEPENDIENTE ADD FOREIGN KEY(NSSE) REFERENCES EMPLEADO(NSS);

explicar que instrucciones y porque sale tres veces este mensaje


ORA-02298: cannot validate (SQL_IFCSKHXWNPPBGMHFOTUOOZADP.) - parent keys not found

ORA-02298: cannot validate (SQL_IFCSKHXWNPPBGMHFOTUOOZADP.) - parent keys not found

ORA-02298: cannot validate (SQL_IFCSKHXWNPPBGMHFOTUOOZADP.) - parent keys not found

5.- EJECUTAR LOS SIGUIENTES INSERTS :


INSERT INTO EMPLEADO VALUES('PEDRO','L','REYES','333445555','2-JUN-78','GUAYAQUIL-
CENTRO',2200,'333445555',3);
INSERT INTO EMPLEADO VALUES('MARCOS','A','TORRES','987654321','22-MAR-
82','GUAYAQUIL-SUR',3100,'987654321',1);
INSERT INTO EMPLEADO VALUES('ROBERTO','J','VARGAS','888775555','15-DEC-
81','GUAYAQUIL-NORTE',1900,'888775555',0);
INSERT INTO EMPLEADO VALUES('MARCELA','O','JARRIN','123456789','11-OCT-
95','GUAYAQUIL-ESTE',1100,'888775555',3);
INSERT INTO EMPLEADO VALUES('ALEXANDRA','G','JATIVA','999887777','26-SEP-
98','QUITO-ESTE',2400,'333445555',0);
INSERT INTO EMPLEADO VALUES('JORGE','P','PAREDES','987987987','28-JAN-93','QUITO-
OESTE',1400,'987654321',4);
INSERT INTO EMPLEADO VALUES('SARA','J','CARRION','666884444','19-APR-90','QUEVEDO-
ESTE',1300,'333445555',5);
INSERT INTO EMPLEADO VALUES('SUSANA','T','MARTINEZ','453453453','06-FEB-
97','CUENCA-ESTE',1780,'888775555',5);
COMMIT

6.- EJECUTAR NUEVAMENTE :

ALTER TABLE DEPARTAMENTO ADD FOREIGN KEY (NSS_JEFE) REFERENCES EMPLEADO(NSS);


ALTER TABLE TRABAJA_EN ADD FOREIGN KEY(NSSE) REFERENCES EMPLEADO(NSS);
ALTER TABLE DEPENDIENTE ADD FOREIGN KEY(NSSE) REFERENCES EMPLEADO(NSS);
7.-
Mostrar los nombres y apellidos de los jefes que tienen ms de un familiar
dependiente. Se considera que un empleado es jefe
si aparece su NSS como NSS_SUPERV de otro empleado al menos.

Ponga el script y el print del resultado de la consulta

8.-

Recupere los nombres y apellidos de todos los empleados que no son supervisores
cuyos ingresos sean mayores a 1700.

Ponga el script y el print del resultado de la consulta

9.-
De cada proyecto ubicado en 'Stafford', haga una lista con el nmero de proyecto,
el nmero de departamento controlador y el apellido, direccin y
fecha de nacimiento del jefe de departamento, utilizando JOIN... ON.

Potrebbero piacerti anche