0% encontró este documento útil (0 votos)
0 vistas12 páginas

Joel Freddy Pinto Cutili

El documento contiene consultas SQL para obtener información de empleados y departamentos, así como la creación de tablas para huéspedes, habitaciones y reservas. También incluye bloques anónimos, procedimientos, funciones y triggers para manejar operaciones en la base de datos. Se presentan ejemplos de inserciones de datos y auditoría de cambios en las tablas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
0 vistas12 páginas

Joel Freddy Pinto Cutili

El documento contiene consultas SQL para obtener información de empleados y departamentos, así como la creación de tablas para huéspedes, habitaciones y reservas. También incluye bloques anónimos, procedimientos, funciones y triggers para manejar operaciones en la base de datos. Se presentan ejemplos de inserciones de datos y auditoría de cambios en las tablas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 12

NOMBRE COMPLETO: Joel Freddy Pinto Cutili CI: 12574531 RU: 200075740

-- CONSULTAS

--1

SELECT e.nombre || ' ' || e.apellido,

e.salario, d.departamento, d.ciudad

FROM empleados e

JOIN departamento d ON e.id_departamento = d.id_departamento;

--2

SELECT d.departamento, AVG(salario) AS salario_promedio, MIN(salario) as Minimo,


MAX(maximo) AS Maximo

FROM empleados e

JOIN departamento d ON e.id_departamento = d.id_departemanto

GROUP BY d.departamento

ORDER BY salario_promedio DESC;

-- SUBCONSULTAS

-- 1

SELECT nombre, apellido, salario FROM empleados

WHERE salario > (SELECT AVG(salario) FROM empleados);

--2

SELECT nombre, apellido FROM empleados


WHERE id_departamento = (SELECT id_departamento FROM empleados

nombre = 'Steven' AND apellido='King')

--TABLAS

CREATE TABLE HUESPEDES (

id_huesped NUMBER PRIMARY KEY,

nombre VARCHAR2(100) NOT NULL,

apellido VARCHAR2(100) NOT NULL,

email VARCHAR2(100) UNIQUE,

telefono VARCHAR2(20),

fecha_registro DATE DEFAULT SYSDATE

);

CREATE TABLE HABITACIONES (

id_habitacion NUMBER PRIMARY KEY,

numero VARCHAR2(10) UNIQUE NOT NULL,

tipo VARCHAR2(50) NOT NULL,

precio_diario NUMBER(10,2) NOT NULL,

capacidad NUMBER(2) NOT NULL,

disponible CHAR(1) DEFAULT 'S' CHECK (disponible IN ('S','N'))

);

CREATE TABLE RESERVAS (


id_reserva NUMBER PRIMARY KEY,

id_huesped NUMBER NOT NULL,

id_habitacion NUMBER NOT NULL,

fecha_entrada DATE NOT NULL,

fecha_salida DATE NOT NULL,

estado VARCHAR2(20) DEFAULT 'CONFIRMADA' CHECK (estado IN


('CONFIRMADA','CANCELADA','COMPLETADA') )

);

-- secuencias

CREATE SEQUENCE seq_huespedes

START WITH 1

INCREMENT BY 1

NOCYCLE

NOCACHE;

CREATE SEQUENCE seq_habitaciones

START WITH 100

INCREMENT BY 1

CACHE 10

NOCYCLE;

CREATE SEQUENCE seq_reservas

START WITH 1000

INCREMENT BY 1

CACHE 20
NOCYCLE;

-- DATOS EN TABLA HUESPEDES

BEGIN

INSERT INTO HUESPEDES (id_huesped, nombre, apellido, email, telefono)

VALUES (seq_huespedes.NEXTVAL, 'Juan', 'Perez', '[email protected]','555-


1111');

INSERT INTO HUESPEDES (id_huesped, nombre, apellido, email, telefono)

VALUES (seq_huespedes.NEXTVAL, 'Maria', 'Gomez',


'[email protected]','555-2222');

INSERT INTO HUESPEDES (id_huesped, nombre, apellido, email, telefono)

VALUES (seq_huespedes.NEXTVAL, 'Carlos', 'Lopez', '[email protected]','555-


3333');

INSERT INTO HUESPEDES (id_huesped, nombre, apellido, email, telefono)

VALUES (seq_huespedes.NEXTVAL, 'Ana', 'Martinez',


'[email protected]','555-4444');

INSERT INTO HUESPEDES (id_huesped, nombre, apellido, email, telefono)

VALUES (seq_huespedes.NEXTVAL, 'Pedro', 'Sanchez',


'[email protected]','555-1111');

END;

SELECT * FROM HUESPEDES;

-- DATOS TABLA HABITACIONES

BEGIN

INSERT INTO HABITACIONES(id_habitacion, numero, tipo, precio_diario, capacidad)

END;

-- DATOS TABLA RESERVADAS


-- BLOQUES ANONIMO

-- 1

DECLARE

numero NUMBER :=85;

categoria VARCHAR2(20);

BEGIN

IF numero < 50 THEN

categoria := 'BAJO';

ELSIF numero <=100 THEN

categoria := 'MEDIA';

ELSE

categoria := 'ALTO';

END IF;

DBMS_OUTPUT.PUT_LINE('CLASIFICACION ' || categoria);

END;

-- 2

DECLARE

numero NUMBER := 3;

factorial NUMBER := 1;

BEGIN

FOR i IN 1..numero LOOP

factorial := factorial * i;

END LOOP;
DBMS_OUTPUT.PUT_LINE ('FACTORIAL DE ' || numero || ' ES ' || factorial);

END;

--3

DECLARE

a NUMBER := 15;

b NUMBER := 25;

resultado NUMBER;

BEGIN

resultado := a+b;

DBMS_OUTPUT.PUT_LINE('LA SUMA DE ' || a || ' ' ||'Y ' || b || 'ES '||resultado);

END;

-- 4

DECLARE

total_compra NUMBER := 450;

descuento NUMBER := 0;

total_final NUMBER;

BEGIN

IF total_compra > 500 THEN

descuento := 0.20;

ELSIF total_compra BETWEEN 300 AND 500 THEN

descuento := 0.15;

ELSIF total_compra BETWEEN 100 AND 300 THEN


descuento := 0.10;

ELSE

descuento :=0;

END IF;

DBMS_OUTPUT.PUT_LINE('Compra Total '||total_compra );

DBMS_OUTPUT.PUT_LINE('Descuento aplicado '|| (descuento *100) || '%');

DBMS_OUTPUT.PUT_LINE('Total pago '||total_final);

END;

-- PROCEDIMIENTOS

--1

CREATE OR REPLACE PROCEDURE listar_empleados(p_id_departamento IN


NUMBER)

IS

BEGIN

FOR r IN (

SELECT nombre, puesto , salario FROM empleados

WHERE id_departamento = p_id_departamento;

) LOOP

DBMS_OUTPUT.PUT_LINE(r.nombre || r.puesto ||r.salario )


END LOOP;

END;

-- 2

CREATE OR REPLACE PROCEDURE nombre_completo(p_id_empleado IN


NUMBER)IS

v_nombre empleados.nombre%TYPE;

v_apellido empleados.apellido%TYPE;

BEGIN

SELECT nombre, apellido INTO v_nombre, v_apellido

FROM empleados

WHERE id_empleado= p_id_empleado;

DBMS_OUTPUT.PUT_LINE('NOMBRE COMPLETO EMPLEADO '||v_nombre || ' '||


v_apellido);

END;

--3

CREATE PROCEDURE OR REPLACE titulo_salario(job_id IN NUMBER)IS

v_titulo VARCHAR2(20);

v_salario_maximo NUMBER;

BEGIN

SELECT titulo, salario_maximo INTO v_titulo, v_salario_maximo

FROM puestos

WHERE id_puesto = job_id;


DBMS_OUTPUT.PUT_LINE('TITULO: '||v_titulo|| ' SALARIO MAXIMO: '
||v_salario_maximo);

END

-- 4

CREATE OR REPLACE PROCEDURE paises_pertenecientes (p_id_region IN NUMBER)

IS

BEGIN

FOR r IN (

SELECT nombre_pais FROM paises WHERE id_region = p_id_region;

)LOOP

DBMS_OUTPUT.PUT_LINE ('PAIS PERTENECE: '|| r.nombre_pais);

END LOOP;

END;

-- FUNCIONES

CREATE OR REPLACE FUNCTION departamento_nombre ( department_id NUMBER


)RETURN VARCHAR2 IS

v_nombre VARCHAR2(100);

BEGIN

SELECT nombre_departamento INTO v_nombre


FROM departamentos WHERE id_departamento = department_id

RETURN v_nombre

END

CREATE OR REPLACE FUNCTION (employee_id NUMBER) RETURN VARCHAR2

IS

v_nombre VARCHAR2(100);

v_apellido VARCHAR2 (100);

BEGIN

SELECT first_name, last_name INTO v_nombre, v_apellido

FROM empleados WHERE id_empleado = employee_id;

RETURN v_nombre || v_apellido;

END;

-- TRIGGERS

--1

CREATE OR REPLACE TRIGGER AUDITA_CURSA

BEFORE INSERT OR UPDATE OR DELETE ON JFPC_CURSA

FOR EACH ROW

DECLARE

v_operacion VARCHAR2(20);

BEGIN

IF INSERTING THEN

v_operacion := 'INSERT';

ELSIF UPDATING THEN


v_operacion := 'UPDATE';

ELSE

v_operacion := 'DELETE'

END IF;

INSERT INTO JFPC_LOG(id_log, tabla, usuario, fecha_transaccion, operacion)

VALUES(seq_log.NEXTVAL, 'JFPC_CURSA', USER, SYSDATE, v_operacion)

END

--2

CREATE OR REPLACE TRIGGER AUDITA_MATERIA

BEFORE INSERT OR UPDATE OR DELETE ON JFPC_MATERIA

FOR EACH ROW

DECLARE

v_operacion VARCHAR2(20);

BEGIN

IF INSERTING THEN

v_operacion := 'INSERT';

ELSIF UPDATING THEN

v_operacion := 'UPDATE';

ELSE

v_operacion := 'DELETE'

END IF;

INSERT INTO JFPC_LOG(id_log, tabla, usuario, fecha_transaccion, operacion)

VALUES(seq_log.NEXTVAL, 'JFPC_MATERIA', USER, SYSDATE, v_operacion)


END

--3

CREATE OR REPLACE TRIGGER AUDITA_ESTUDIANTE

BEFORE INSERT OR UPDATE OR DELETE ON JFPC_ESTUDIANTES

FOR EACH ROW

DECLARE

v_operacion VARCHAR2(20);

BEGIN

IF INSERTING THEN

v_operacion := 'INSERT';

ELSIF UPDATING THEN

v_operacion := 'UPDATE';

ELSE

v_operacion := 'DELETE'

END IF;

INSERT INTO JFPC_LOG(id_log, tabla, usuario, fecha_transaccion, operacion)

VALUES(seq_log.NEXTVAL, 'JFPC_ESTUDIANTES', USER, SYSDATE, v_operacion)

END

También podría gustarte