Juan Franco Base de Datos

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 18

UNIVERSIDAD LIBRE CALI

BASES DE DATOS
TALLER FINAL.
Fecha Máxima de entrega: Lunes 27 de noviembre de 2023 – 11:59 PM

Se puede trabajar individual o máximo en grupos de dos personas. Los datos de


cada trabajo deben ser distintos. Datos iguales se anulan.
Renombrar el archivo de respuesta con los nombres de los integrantes, antes de
enviar a Jorge.leon@unilibre.edu.co

Juan david franco betancur – ingeniería de sistemas

LAS RESPUESTAS DEBEN APARECER INTERCALADAS DESPUES DE CADA


PUNTO, EN ESTE FORMATO. DAR COPY PASTE PARA PEGAR LA
INFORMACIÓN DE LA BASE DE DATOS.

1. Verifique en el sistema si su usuario está creado, en caso contrario, utilice el


navegador de Oracle y proceda a crearlo, con los mínimos privilegios.

create user jfrando IDENTIFIED BY 12345;

User created.

GRANT CONNECT TO jfranco;

Grant succeeded.

2. Ingrese a SQL/Plus con su usuario.

connect jfrando/12345

Connected.

3. Despliegue el catálogo de este usuario.

4. Ingrese el siguiente modelo de datos a la Base de Datos:

Crear. Tabla de Empleados:


 Cedula, numérico de 12 posiciones. Llave primaria.
 Apellidos y Nombres, caracter variable de 32.
 Dirección, caracter variable de 30.
 Teléfono, numérico de 10.
 Código Dependencia, referencia a la tabla de dependencias, numérico de 2.
 Código Ciudad, referencia a la tabla de ciudades, numérico de 2.
 Código de Cargos, referencia a la tabla de cargos, numérico de 2.

JORGE ENRIQUE LEON ARDILA, MCS


UNIVERSIDAD LIBRE CALI

BASES DE DATOS
 Salario, numérico de 12 con 2 decimales.
 Fecha de nacimiento.
CREATE TABLE Empleados (
2 Ced NUMBER(12) PRIMARY KEY,
3 ApeNom VARCHAR2(32),
4 Dir VARCHAR2(30),
5 Tel NUMBER(10),
6 Cod_Dep NUMBER(2),
7 Cod_Ciudad NUMBER(2),
8 Cod_Cargos NUMBER(2),
9 Sal NUMBER(12, 2),
10 Fecha_Nac DATE
11 );

Table created.

Crear. Tabla de Dependencias.


 Código Departamento.
 Nombre del Departamento, caracter variable de 20.

CREATE TABLE Dependencias (


2 Codigo_Departamento NUMBER PRIMARY KEY,
3 Nombre_Departamento VARCHAR2(20)
4 );

Table created.

Crear. Tabla de Ciudades.


 Código Ciudad.
 Nombre de la Ciudad, caracter variable de 20.

CREATE TABLE Ciudades (


Codigo_Ciudad NUMBER PRIMARY KEY,
Nombre_Ciudad VARCHAR2(20)
);
Table created.

Crear. Tabla de Cargos.


 Código Cargo.
 Nombre del cargo, caracter variable de 20.

JORGE ENRIQUE LEON ARDILA, MCS


UNIVERSIDAD LIBRE CALI

BASES DE DATOS

CREATE TABLE Cargos (


2 Codigo_Cargo NUMBER PRIMARY KEY,
3 Nombre_Cargo VARCHAR2(20)
4 );

Table created.

5. Construya las respectivas restricciones de llave primaria y llaves foráneas.


Ya tenia las llaves primarias asi que solo agregare las llaves foráneas

SQL> ALTER TABLE Empleados


2 ADD CONSTRAINT fk_dependencias
3 FOREIGN KEY (Cod_Dep)
4 REFERENCES Dependencias(Codigo_Departamento);

Table altered.

SQL> ALTER TABLE Empleados


2 ADD CONSTRAINT fk_ciudades
3 FOREIGN KEY (Cod_Ciudad)
4 REFERENCES Ciudades(Codigo_Ciudad);

Table altered.

SQL> ALTER TABLE Empleados


2 ADD CONSTRAINT fk_cargos
3 FOREIGN KEY (Cod_Cargos)
4 REFERENCES Cargos(Codigo_Cargo);

Table altered.

6. Ingrese información en cada una de las tablas, verificando la integridad


referencial dada. Mínimo 20 trabajadores que correspondan al menos a cinco
dependencias, cinco cargos y tres ciudades. Mostrar la copia de los datos
ingresados (no deben coincidir con los de otro compañero, porque sería copia=0).
SQL> INSERT INTO Ciudades (Codigo_Ciudad, Nombre_Ciudad) VALUES (1,
'Bogotá');

1 row created.

JORGE ENRIQUE LEON ARDILA, MCS


UNIVERSIDAD LIBRE CALI

BASES DE DATOS
SQL> INSERT INTO Ciudades (Codigo_Ciudad, Nombre_Ciudad) VALUES (2,
'Medellín');

1 row created.

SQL> INSERT INTO Ciudades (Codigo_Ciudad, Nombre_Ciudad) VALUES (3,


'Cali');

1 row created.

SQL> INSERT INTO Ciudades (Codigo_Ciudad, Nombre_Ciudad) VALUES (4,


'Barranquilla');

1 row created.

SQL> INSERT INTO Ciudades (Codigo_Ciudad, Nombre_Ciudad) VALUES (5,


'Cartagena');

1 row created.

SQL> INSERT INTO Ciudades (Codigo_Ciudad, Nombre_Ciudad) VALUES (6,


'Manizales');

1 row created.

SQL> INSERT INTO Dependencias (Codigo_Departamento,


Nombre_Departamento) VALUES (1, 'Producción');

1 row created.

SQL> INSERT INTO Dependencias (Codigo_Departamento,


Nombre_Departamento) VALUES (2, 'Ventas');

1 row created.

SQL> INSERT INTO Dependencias (Codigo_Departamento,


Nombre_Departamento) VALUES (3, 'Recursos Humanos');

1 row created.

SQL> INSERT INTO Dependencias (Codigo_Departamento,


Nombre_Departamento) VALUES (4, 'Tecnología');

1 row created.

JORGE ENRIQUE LEON ARDILA, MCS


UNIVERSIDAD LIBRE CALI

BASES DE DATOS
SQL> INSERT INTO Dependencias (Codigo_Departamento,
Nombre_Departamento) VALUES (5, 'Finanzas');

1 row created.

SQL> INSERT INTO Dependencias (Codigo_Departamento,


Nombre_Departamento) VALUES (6, 'Logística');

1 row created.

SQL> INSERT INTO Cargos (Codigo_Cargo, Nombre_Cargo) VALUES (1,


'Analista de Datos');

1 row created.

SQL> INSERT INTO Cargos (Codigo_Cargo, Nombre_Cargo) VALUES (2,


'Gerente de Ventas');

1 row created.
SQL> INSERT INTO Cargos (Codigo_Cargo, Nombre_Cargo) VALUES (5,
'Contador');

1 row created.

SQL> INSERT INTO Cargos (Codigo_Cargo, Nombre_Cargo) VALUES (4, 'Ing.


de Software');

1 row created.

SQL> INSERT INTO Cargos (Codigo_Cargo, Nombre_Cargo) VALUES (3, 'Esp.


Recurss Humanos');

1 row created.

SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,


Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES
2 (111111111111, 'Xylthor Darnor', 'Calle Nebulosa, Apt 4B', 3219876543, 1, 2, 3,
55000.00, TO_DATE('1985-08-15', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,
Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES

JORGE ENRIQUE LEON ARDILA, MCS


UNIVERSIDAD LIBRE CALI

BASES DE DATOS
2 (222222222222, 'Zarnak Krilgar', 'Avenida Xenón, Casa 56', 7891234567, 2, 3, 1,
60000.00, TO_DATE('1990-02-22', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,
Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES
2 (333333333333, 'Ilythra Qunaris', 'Carrera 45, Bloque C', 4567890123, 3, 1, 5,
70000.00, TO_DATE('1987-05-10', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,
Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES
2 (444444444444, 'Nelthar Orion', 'Calle Nova, Piso 8', 2345678901, 4, 2, 2,
80000.00, TO_DATE('1982-11-18', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,
Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES
2 (555555555555, 'Zyrala Vortex', 'Avenida Quasar, Torre 12', 9876543210, 5, 3,
4, 90000.00, TO_DATE('1988-07-05', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,
Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES
2 (777777777777, 'Galadra Starshard', 'Calle Stardust, Casa 15', 2109876543, 2, 2,
2, 62000.00, TO_DATE('1992-01-12', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,
Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES
2 (888888888888, 'Kaelthas Moonfire', 'Avenida Aether, Bloque D', 8765432109,
3, 3, 1, 58000.00, TO_DATE('1989-09-28', 'YYYY-MM-DD'));

JORGE ENRIQUE LEON ARDILA, MCS


UNIVERSIDAD LIBRE CALI

BASES DE DATOS
1 row created.

SQL>
SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,
Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES
2 (999999999999, 'Sorana Shadowshade', 'Carrera Shadow, Piso 6', 4321098765,
4, 1, 4, 70000.00, TO_DATE('1986-06-15', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,
Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES
2 (101010101010, 'Vektra Doomhammer', 'Calle Doom, Apartamento 8',
1098765432, 5, 2, 5, 82000.00, TO_DATE('1983-04-03', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,
Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES
2 (121212121212, 'Zephyros Thunderstrike', 'Avenida Thunder, Torre 18',
5678901234, 1, 3, 3, 69000.00, TO_DATE('1981-10-20', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,
Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES
2 (131313131313, 'Grimforge Ironfist', 'Carrera Iron, Bloque B', 2345678901, 2, 1,
2, 60000.00, TO_DATE('1995-07-08', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,
Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES
2 (141414141414, 'Lunara Moonsong', 'Calle Moon, Casa 25', 9876543210, 3, 2, 1,
55000.00, TO_DATE('1984-12-17', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,
Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES

JORGE ENRIQUE LEON ARDILA, MCS


UNIVERSIDAD LIBRE CALI

BASES DE DATOS
2 (151515151515, 'Thraxos Flameheart', 'Avenida Flame, Piso 10', 3210987654, 4,
3, 4, 72000.00, TO_DATE('1987-02-24', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,
Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES
2 (161616161616, 'Lythandra Starwhisper', 'Carrera Star, Bloque C', 5432109876,
5, 1, 5, 78000.00, TO_DATE('1986-09-11', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,
Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES
2 (171717171717, 'Shadowbane Nightstalker', 'Calle Night, Apartamento 15',
8765432109, 1, 2, 2, 61000.00, TO_DATE('1989-04-28', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,
Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES
2 (181818181818, 'Vorthos Mindbreaker', 'Avenida Mind, Torre 14', 1098765432,
2, 3, 1, 57000.00, TO_DATE('1993-11-05', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,
Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES
2 (191919191919, 'Dreadfang Deathwhisper', 'Carrera Death, Piso 7',
2109876543, 3, 1, 4, 69000.00, TO_DATE('1982-08-22', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,
Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES
2 (202020202020, 'Nightsorrow Voidbringer', 'Calle Void, Bloque B', 4321098765,
4, 2, 3, 80000.00, TO_DATE('1985-05-15', 'YYYY-MM-DD'));

1 row created.

JORGE ENRIQUE LEON ARDILA, MCS


UNIVERSIDAD LIBRE CALI

BASES DE DATOS
SQL> INSERT INTO Empleados (Ced, ApeNom, Dir, Tel, Cod_Dep,
Cod_Ciudad, Cod_Cargos, Sal, Fecha_Nac) VALUES
2 (666666666666, 'Luminos Solstice', 'Carrera Celestial, Apt 20', 5432109876, 1, 1,
3, 75000.00, TO_DATE('1984-03-30', 'YYYY-MM-DD'));

1 row created.

7. Produzca los siguientes informes:

 Listado general de trabajadores ordenado por ciudad, depto y nombres.


 CED APENOM DIR TEL COD_DEP
COD_CIUDAD COD_CARGOS SAL FECHA_NA
 ---------- -------------------------------- ------------------------------ ---------- ---------- ----------
---------- ---------- --------
 1,1111E+11 Xylthor Darnor Calle Nebulosa, Apt 4B 3219876543
1 2 3 55000 15/08/85
 2,2222E+11 Zarnak Krilgar Avenida Xenón, Casa 56 7891234567
2 3 1 60000 22/02/90
 3,3333E+11 Ilythra Qunaris Carrera 45, Bloque C 4567890123
3 1 5 70000 10/05/87
 4,4444E+11 Nelthar Orion Calle Nova, Piso 8 2345678901 4
2 2 80000 18/11/82
 5,5556E+11 Zyrala Vortex Avenida Quasar, Torre 12 9876543210
5 3 4 90000 05/07/88
 7,7778E+11 Galadra Starshard Calle Stardust, Casa 15 2109876543
2 2 2 62000 12/01/92
 8,8889E+11 Kaelthas Moonfire Avenida Aether, Bloque D 8765432109
3 3 1 58000 28/09/89

JORGE ENRIQUE LEON ARDILA, MCS


UNIVERSIDAD LIBRE CALI

BASES DE DATOS
 1,0000E+12 Sorana Shadowshade Carrera Shadow, Piso 6
4321098765 4 1 4 70000 15/06/86
 1,0101E+11 Vektra Doomhammer Calle Doom, Apartamento 8
1098765432 5 2 5 82000 03/04/83
 1,2121E+11 Zephyros Thunderstrike Avenida Thunder, Torre 18
5678901234 1 3 3 69000 20/10/81
 1,3131E+11 Grimforge Ironfist Carrera Iron, Bloque B 2345678901
2 1 2 60000 08/07/95
 1,4141E+11 Lunara Moonsong Calle Moon, Casa 25 9876543210
3 2 1 55000 17/12/84
 1,5152E+11 Thraxos Flameheart Avenida Flame, Piso 10 3210987654
4 3 4 72000 24/02/87
 1,6162E+11 Lythandra Starwhisper Carrera Star, Bloque C 5432109876
5 1 5 78000 11/09/86
 1,7172E+11 Shadowbane Nightstalker Calle Night, Apartamento 15
8765432109 1 2 2 61000 28/04/89
 1,8182E+11 Vorthos Mindbreaker Avenida Mind, Torre 14
1098765432 2 3 1 57000 05/11/93
 1,9192E+11 Dreadfang Deathwhisper Carrera Death, Piso 7
2109876543 3 1 4 69000 22/08/82
 2,0202E+11 Nightsorrow Voidbringer Calle Void, Bloque B
4321098765 4 2 3 80000 15/05/85
 6,6667E+11 Luminos Solstice Carrera Celestial, Apt 20 5432109876
1 1 3 75000 30/03/84

 Listado de Ciudades.

CODIGO_CIUDAD NOMBRE_CIUDAD
------------- --------------------
1 Bogotá
2 Medellín
3 Cali

JORGE ENRIQUE LEON ARDILA, MCS


UNIVERSIDAD LIBRE CALI

BASES DE DATOS
4 Barranquilla
5 Cartagena
6 Manizales

 Listado de Departartamento.

CODIGO_DEPARTAMENTO NOMBRE_DEPARTAMENTO
------------------- --------------------
1 Producción
2 Ventas
3 Recursos Humanos
4 Tecnología
5 Finanzas
6 Logística

6 rows selected.

 Listado de Cargos.
 CODIGO_CARGO NOMBRE_CARGO
 ------------ --------------------
 1 Analista de Datos
 2 Gerente de Ventas
 5 Contador
 4 Ing. de Software
 3 Esp. Recurss Humanos

8. Formatee la salida de los siguientes campos: (Ver material de clase adicional).

Salario (en pesos y separador de miles) y Nombres y Apellidos, Nombre de


ciudad y Dependencia, colocando títulos respectivos a cada campo y partiendo
campos alfanuméricos al exceder 15 caracteres.

COLUMN Sal HEADING 'Salario (en pesos)' FORMAT $99,999.99

COLUMN ApeNom HEADING 'Nombres y Apellidos' FORMAT A15


WORD_WRAPPED

COLUMN Ciudad HEADING 'Nombre de Ciudad' FORMAT A15


WORD_WRAPPED

JORGE ENRIQUE LEON ARDILA, MCS


UNIVERSIDAD LIBRE CALI

BASES DE DATOS
COLUMN Dependencia HEADING 'Nombre de Dependencia' FORMAT A15
WORD_WRAPPED

9. Defina un título general, justificado a la izquierda y en dos líneas.


10.
TTITLE LEFT 'Parcial 3' SKIP 1 LEFT '------------------';

11. Produzca un informe con la siguiente información:

Nombre del Trabajador.


Cédula,
Ciudad (Descriptivo),
Dependencia(Descriptivo),
Cargo (Descriptivo),
Salario,
Antigüedad en años.

COLUMN Antiguedad FORMAT 999


SQL>

SQL> SELECT
2 E.ApeNom AS "Nombre del Trabajador",
3 E.Ced AS "Cédula",
4 C.Nombre_Ciudad AS "Ciudad (Descriptivo)",
5 D.Nombre_Departamento AS "Dependencia (Descriptivo)",
6 E.Cod_Cargos AS "Cargo (Descriptivo)",
7 E.Sal AS "Salario",
8 EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM
E.Fecha_Nac) AS "Antigüedad en años"
9 FROM
10 Empleados E, Dependencias D, Ciudades C, Cargos CR
11 WHERE
12 E.Cod_Dep = D.Codigo_Departamento AND
13 E.Cod_Ciudad = C.Codigo_Ciudad AND
14 E.Cod_Cargos = CR.Codigo_Cargo;

12. Produzca un informe indicando:

Cédula,
Nombre del Trabajador
Ciudad,
Dependencia,
Salario.
Subtotalizando salarios, por Ciudad, Dependencia.

JORGE ENRIQUE LEON ARDILA, MCS


UNIVERSIDAD LIBRE CALI

BASES DE DATOS
Producir total general de salarios.

INFORME GENERAL

SELECT
E.Ced AS "Cédula",
E.ApeNom AS "Nombre del Trabajador",
C.Nombre_Ciudad AS "Ciudad",
D.Nombre_Departamento AS "Dependencia",
E.Sal AS "Salario"
FROM
Empleados E, Dependencias D, Ciudades C
WHERE
E.Cod_Dep = D.Codigo_Departamento AND
E.Cod_Ciudad = C.Codigo_Ciudad
ORDER BY
C.Nombre_Ciudad, D.Nombre_Departamento, E.ApeNom;

Subtotalizando salarios, por Ciudad, Dependencia.

SELECT
C.Nombre_Ciudad AS "Ciudad",
D.Nombre_Departamento AS "Dependencia",
SUM(E.Sal) AS "Subtotal de Salarios"
FROM
Empleados E, Dependencias D, Ciudades C
WHERE
E.Cod_Dep = D.Codigo_Departamento AND
E.Cod_Ciudad = C.Codigo_Ciudad
GROUP BY
C.Nombre_Ciudad, D.Nombre_Departamento
ORDER BY
C.Nombre_Ciudad, D.Nombre_Departamento;

Producir total general de salarios.

SELECT
'Total General' AS "Ciudad/Dependencia",
NULL AS "Dependencia",
SUM(E.Sal) AS "Total de Salarios"
FROM

JORGE ENRIQUE LEON ARDILA, MCS


UNIVERSIDAD LIBRE CALI

BASES DE DATOS
Empleados E, Dependencias D, Ciudades C
WHERE
E.Cod_Dep = D.Codigo_Departamento AND
E.Cod_Ciudad = C.Codigo_Ciudad;

13. Adicionar al modelo de datos anterior, las tablas de préstamos, abonos,


tipopréstamo. La PK de Préstamos debe ser un campo autoincremental.

CREATE SEQUENCE Seq_TipoPrestamo START WITH 1 INCREMENT BY 1;

CREATE TABLE TipoPrestamo (


Cod_Tipo_Prestamo NUMBER PRIMARY KEY,
Nombre_Tipo_Prestamo VARCHAR2(30)
);

CREATE OR REPLACE TRIGGER trig_tipoprestamo


BEFORE INSERT ON TipoPrestamo
FOR EACH ROW
BEGIN
SELECT Seq_TipoPrestamo.NEXTVAL INTO :NEW.Cod_Tipo_Prestamo FROM
dual;
END;
/

CREATE SEQUENCE Prestamo_Seq START WITH 1 INCREMENT BY 1;


CREATE TABLE Prestamos (
Id_Prestamo NUMBER PRIMARY KEY,
Ced_Cliente NUMBER,
Monto NUMBER(12, 2),
Fecha_Prestamo DATE,
Cod_Tipo_Prestamo NUMBER,
FOREIGN KEY (Ced_Cliente) REFERENCES Empleados(Ced),
FOREIGN KEY (Cod_Tipo_Prestamo) REFERENCES
TipoPrestamo(Cod_Tipo_Prestamo)
);

CREATE OR REPLACE TRIGGER trig_prestamos

JORGE ENRIQUE LEON ARDILA, MCS


UNIVERSIDAD LIBRE CALI

BASES DE DATOS
BEFORE INSERT ON Prestamos
FOR EACH ROW
BEGIN
SELECT Seq_Prestamos.NEXTVAL INTO :NEW.Id_Prestamo FROM dual;
END;
/

CREATE SEQUENCE Seq_Abonos START WITH 1 INCREMENT BY 1;

CREATE TABLE Abonos (


Id_Abono NUMBER PRIMARY KEY,
Id_Prestamo NUMBER,
Monto_Abono NUMBER(12, 2),
Fecha_Abono DATE,
CONSTRAINT fk_abonos_prestamos FOREIGN KEY (Id_Prestamo)
REFERENCES Prestamos(Id_Prestamo)
);

CREATE OR REPLACE TRIGGER trig_abonos


BEFORE INSERT ON Abonos
FOR EACH ROW
BEGIN
SELECT Seq_Abonos.NEXTVAL INTO :NEW.Id_Abono FROM dual;
END;
/

14. Asignar varios préstamos a trabajadores, procurando que un trabajador tenga


más de un préstamo, luego, subtotalizar y totalizar préstamos asignados con
nombre de trabajador y nombre de préstamo asignado.

SQL> INSERT INTO tipoprestamonew (Nombre_Tipo_Prestamo) VALUES


('Préstamo Personal');

1 row created.

SQL> INSERT INTO tipoprestamonew (Nombre_Tipo_Prestamo) VALUES


('Préstamo de Vivienda');

1 row created.

JORGE ENRIQUE LEON ARDILA, MCS


UNIVERSIDAD LIBRE CALI

BASES DE DATOS
SQL> INSERT INTO tipoprestamonew (Nombre_Tipo_Prestamo) VALUES
('Préstamo de Vehículo');

1 row created.

SQL> INSERT INTO Prestamos (Ced_Cliente, Monto, Fecha_Prestamo,


Cod_Tipo_Prestamo)
2 VALUES (111111111111, 5000.00, TO_DATE('2023-01-01', 'YYYY-MM-DD'), 1);

1 row created.

SQL>
SQL> INSERT INTO Prestamos (Ced_Cliente, Monto, Fecha_Prestamo,
Cod_Tipo_Prestamo)
2 VALUES (222222222222, 8000.00, TO_DATE('2023-02-01', 'YYYY-MM-DD'), 2);

1 row created.

SQL>
SQL> INSERT INTO Prestamos (Ced_Cliente, Monto, Fecha_Prestamo,
Cod_Tipo_Prestamo)
2 VALUES (333333333333, 6000.00, TO_DATE('2023-03-01', 'YYYY-MM-DD'), 1);

1 row created.

SQL>
SQL> INSERT INTO Prestamos (Ced_Cliente, Monto, Fecha_Prestamo,
Cod_Tipo_Prestamo)
2 VALUES (444444444444, 7000.00, TO_DATE('2023-04-01', 'YYYY-MM-DD'), 3);

1 row created.

SQL> INSERT INTO Abonos (Id_Prestamo, Monto_Abono, Fecha_Abono)


2 VALUES (1, 1000.00, TO_DATE('2023-01-15', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Abonos (Id_Prestamo, Monto_Abono, Fecha_Abono)

JORGE ENRIQUE LEON ARDILA, MCS


UNIVERSIDAD LIBRE CALI

BASES DE DATOS
2 VALUES (2, 1200.00, TO_DATE('2023-02-15', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Abonos (Id_Prestamo, Monto_Abono, Fecha_Abono)
2 VALUES (1, 500.00, TO_DATE('2023-03-01', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Abonos (Id_Prestamo, Monto_Abono, Fecha_Abono)
2 VALUES (3, 800.00, TO_DATE('2023-03-10', 'YYYY-MM-DD'));

1 row created.

SQL>
SQL> INSERT INTO Abonos (Id_Prestamo, Monto_Abono, Fecha_Abono)
2 VALUES (4, 1000.00, TO_DATE('2023-04-05', 'YYYY-MM-DD'));

1 row created.

SELECT
2 E.ApeNom AS "Nombre del Trabajador",
3 TP.Nombre_Tipo_Prestamo AS "Nombre del Préstamo",
4 SUM(P.Monto) AS "Total Préstamos"
5 FROM
6 Empleados E,
7 Prestamos P,
8 tipoprestamonew TP
9 WHERE
10 E.Ced = P.Ced_Cliente
11 AND P.Cod_Tipo_Prestamo = TP.Cod_Tipo_Prestamo
12 AND E.Ced = 111111111111
13 GROUP BY
14 E.ApeNom, TP.Nombre_Tipo_Prestamo
15 ORDER BY
16 "Nombre del Trabajador", "Nombre del Préstamo";

Parcial 3
------------------

JORGE ENRIQUE LEON ARDILA, MCS


UNIVERSIDAD LIBRE CALI

BASES DE DATOS
Nombre del Trabajador Nombre del Préstamo Total Préstamos
-------------------------------- ------------------------------ ---------------
Xylthor Darnor Préstamo Personal 5000

Los puntos 11 y 13, valen el 40% del examen. Pero si no están, examen = 1.

JORGE ENRIQUE LEON ARDILA, MCS

También podría gustarte