Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Matricula: 2023-0680
Tema: Práctica 4
Fecha: 26/Feb./2024
Realice las siguientes actividades a partir del caso práctico asignado en la primera clase,
conectado al ambiente de Oracle que instaló y luego de estudiar el material contenido en la
carpeta Material de Oracle - Unidades 6 y 7 y de practicar con los ejemplos contenidos en la
carpeta Ejemplos - Unidades 6 y 7:
1. Realice varias consultas simples (dos por integrante de cada equipo) para proyectar y
seleccionar la información contenida en las tablas. En estas consultas use las cláusulas
SELECT y FROM.
2. Realice varias consultas complejas (dos por integrante de cada equipo) para proyectar,
seleccionar, filtrar y ordenar la información contenida en las tablas. En estas consultas
use las cláusulas SELECT, FROM, WHERE y ORDER BY.
3. Realice varias consultas (dos por cada tipo y por cada integrante de cada equipo) donde
establezcan relaciones binarias y terciarias usando NATURAL JOIN, USING, JOIN + ON, SELF-
JOIN, NON-EQUIJOIN, OUTER JOIN.
4. Realice varias consultas (dos por cada integrante de cada equipo) que incluyan Sub-
consultas.
);
--Inserción de datos
INSERT INTO Cliente (PK_Cliente, Nombre, Direccion, Telefono, Correo)
VALUES (1, 'Leonardo', 'Manoguayabo', '8098175573', 'saritamejialeo@gmail.com');
--Consultas simples
select PK_Cliente, Nombre
from Cliente;
select PK_Cliente, Telefono
from cliente
--Consultas
select *
from cliente
select *
from reserva
--cambios
UPDATE Cliente
SET Nombre = 'Ana'
WHERE PK_Cliente = 2 AND Direccion = 'Azua';
--Delete
DELETE FROM Cliente
WHERE PK_Cliente = 4 AND Direccion = 'la vega';
-- indice
CREATE INDEX idx_Cliente_Nombre ON Cliente (Nombre); CREATE INDEX
idx_Cliente_Apellido ON Cliente (Apellido);
--Secuencias sql
CREATE SEQUENCE seq_PK_Cliente START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE
999999;
--sinonimos publicos
CREATE PUBLIC SYNONYM V_Clientes FOR Cliente;
select *
from cliente
);
--Consultas complejas
select r.PK_Reserva, r.Fecha_Reserva, c.Nombre
from Reserva r
inner join Cliente c on r.FK_Cliente = c.PK_Cliente
where r.Estado = 'Confirmada'
order by r.Fecha_Reserva desc;
--no.2
select c.Nombre, count(*) AS TotalReservas
from Reserva r
inner join Cliente c ON r.FK_Cliente = c.PK_Cliente
group by c.Nombre
order by TotalReservas desc;
INSERT INTO Reserva (PK_Reserva, Fecha_Reserva, Fecha_Inicio_Alquiler,
Fecha_Fin_Alquiler, Estado, FK_Cliente)
VALUES (1, '20240228', '20240305', '20240310', 'Reservada', 1);
--indice
--secuencias sql
CREATE SEQUENCE seq_PK_Reserva START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE
999999;
--sinonimos publicos
CREATE PUBLIC SYNONYM V_Reservas FOR Reserva;
--Consultas complejas
SELECT *
FROM Reserva
NATURAL JOIN Alquiler;
--Consultas
select *
from cliente, reserva
CREATE TABLE Alquiler (
PK_Alquiler NUMBER(10) NOT NULL,
Precio_Total NUMBER(10,2) NOT NULL,
FK_Reserva NUMBER(10) NOT NULL,
FK_Pago NUMBER(10) NOT NULL,
FK_Vehiculo NUMBER(10) NOT NULL,
CONSTRAINT PK_Alquiler PRIMARY KEY (PK_Alquiler),
CONSTRAINT FK_Reserva FOREIGN KEY (FK_Reserva) REFERENCES Reserva
(PK_Reserva),
CONSTRAINT FK_Pago FOREIGN KEY (FK_Pago) REFERENCES Pago (PK_Pago),
CONSTRAINT FK_Vehiculo FOREIGN KEY (FK_Vehiculo) REFERENCES Vehiculo
(PK_Vehiculo)
);
INSERT INTO Alquiler (PK_Alquiler, Precio_Total, FK_Reserva, FK_Pago,
FK_Vehiculo)
VALUES (1, 500.00, 1, 1, 1);
--indice
CREATE INDEX idx_Alquiler_Fecha_Alquiler ON Alquiler (Fecha_Alquiler);
CREATE INDEX idx_Alquiler_Precio_Total ON Alquiler (Precio_Total);
CREATE INDEX idx_Alquiler_FK_Cliente ON Alquiler (FK_Cliente);
CREATE INDEX idx_Alquiler_FK_Vehiculo ON Alquiler (FK_Vehiculo);
--secuencias sql
CREATE SEQUENCE seq_PK_Alquiler START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE
999999;
--sinonimos public
CREATE PUBLIC SYNONYM V_Alquileres FOR Alquiler;
--indice
CREATE INDEX idx_Pago_Fecha_Pago ON Pago (Fecha_Pago); CREATE INDEX
idx_Pago_Importe ON Pago (Importe);
CREATE INDEX idx_Pago_Metodo_Pago ON Pago (Metodo_Pago);
--secuencias sql
CREATE SEQUENCE seq_PK_Pago START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE
999999;
--sinonimos publicos
CREATE SYNONYM _P_Pagos FOR Pago;
--Consultas complejas
SELECT v.Marca, v.Modelo, v.Precio
FROM Vehiculo v
WHERE v.Precio > (
SELECT AVG(Precio)
FROM Vehiculo
);
SELECT c.Nombre
FROM Cliente c
WHERE EXISTS (
SELECT *
FROM Reserva r
WHERE r.FK_Cliente = c.PK_Cliente
);
);
INSERT INTO Vehiculo (PK_Vehiculo, Año, Marca, Color, Kilometraje, Modelo,
Precio)
VALUES (1, 2023, 'Toyota', 'Azul', 10000, 'Corolla', 25000.00);
--indice
CREATE INDEX idx_Vehiculo_Marca ON Vehiculo (Marca); CREATE INDEX
idx_Vehiculo_Modelo ON Vehiculo (Modelo);
CREATE INDEX idx_Vehiculo_Matricula ON Vehiculo (Matricula);
--secuencias sql
CREATE SEQUENCE seq_PK_Vehiculo START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE
999999;
--sinonimos publicos
CREATE SYNONYM _V_Vehiculos FOR Vehiculo;
--Vista
CREATE VIEW V_Informacion_Alquiler AS SELECT
C.Nombre AS Nombre_Cliente, V.Marca AS Marca_Vehiculo,
R.Fecha_Inicio_Alquiler, A.Precio_Total
FROM Cliente C