TRABAJO DEL CURSO – BASE Y
ESTRUCTURA DE DATOS III
Nombre y apellidos: Romario Quispe Hancco
Instructor: Cesar Rosas Aragón
Semestre: 4to Semestre
Especialidad: Ingeniería de Software con IA
Fecha: 28/11/2021
CREACION DE LA BASE DE DATOS Y SUS TABLAS RESPECTIVAS
CREATE SCHEMA `buena_salud` ;
USE buena_salud;
CREATE TABLE departamento(Dept_No INT NOT NULL AUTO_INCREMENT,
Dnombre VARCHAR(30) NOT NULL,
Loc VARCHAR(30) NOT NULL,
PRIMARY KEY (Dept_No));
CREATE TABLE Empleado(Emp_No INT NOT NULL AUTO_INCREMENT,
Apellido VARCHAR(30),
Oficio VARCHAR(30),
Direccion VARCHAR(65),
Fecha_Alt DATE,
Salario INT NOT NULL,
Comision VARCHAR(3) NULL,
Edad Int,
PRIMARY KEY (Emp_No),
Dept_No INT NOT NULL,
FOREIGN KEY (Dept_No) REFERENCES departamento(Dept_No));
CREATE TABLE enfermo(
Inscripcion VARCHAR(30),
Apellido VARCHAR(45) NOT NULL,
Direccion VARCHAR(45) NOT NULL,
Fecha_Nac DATE NOT NULL,
Sexo VARCHAR(45) NOT NULL,
NSS VARCHAR(45) NOT NULL);
SCRIPTS DE LA INSERCION DE DATOS EN LAS TABLAS
INGRESO DE DATOS DE TABLA ENFERMO:
INSERT INTO enfermo (Inscripcion, Apellido, Direccion, Fecha_Nac, Sexo, NSS) VALUES
('semanal', 'Quispe Hancco', 'Villa Ecologica', '2003-04-20', 'M', 'etc'),
('quincenal', 'Rodriguez Suarez', 'Independencia', '2003-05-20', 'M', 'etc'),
('mensual', 'Suarez Vega', 'Las torres', '2002-07-20', 'F', 'etc'),
('semanal', 'Choque Flores', 'Miguel Grau', '2002-08-20', 'M', 'etc'),
('semanal', 'Gonzales Cruz', 'Los Rosales 406', '2001-07-20', 'M', 'etc'),
('quincenal', 'Carbajal mamani', 'Ventanilla', '2005-09-20', 'F', 'etc'),
('semanal', 'Rios Soto', 'Texas 305', '2008-11-20', 'F', 'etc'),
('mensual', 'Ramirez Arias', 'Santa Catalina', '2000-11-20', 'M', 'etc'),
('semanal', 'Copa Hancco', 'Villa Ecologica', '2003-02-20', 'F', 'etc'),
('mensual', 'Flores ramos', 'Miraflores', '2003-12-20', 'M', 'etc');
INSERCION DE DATOS EN LA TABLA DEPARTAMENTO
INSERT INTO departamento (Dept_No, Dnombre, Loc) VALUES
('023', 'Pacientes1', '1er piso'),
('032', 'Pacientes2', '2do piso'),
('012', 'Pacientes3', '3er piso'),
('031', 'Pacientes4', '4to piso'),
('043', 'Pacientes5', '5to piso');
INGRESO DE DATOS EN EMPLEADOS
INSERT INTO empleado(Emp_No, Apellido, Oficio, Direccion, Fecha_Alt, Salario, Comision,
Edad, Dept_No) VALUES
('1', 'Quispe', 'Fisioterapeuta', 'Yanahuara', '2017-04-23', '200', '10%', '28', '23'),
('2', 'Flores', 'Cirujano', 'Cayma', '2017-09-21', '250', '6%', '21', '23'),
('3', 'Chambi', 'Odontologo', 'San luis', '2018-04-23', '220', '10%', '28', '12'),
('4', 'Surco', 'enfermero', 'Los olivos', '2017-02-23', '210', '11%', '27', '23'),
('5', 'Hancco', 'Psicologo', 'Miraflores', '2018-01-23', '230', '12%', '26', '12'),
('6', 'Rodriguez', 'Cardiologo', 'Ramon castilla', '2017-03-23', '300', '14%', '21', '12'),
('7', 'Carbajal', 'Cirujano', 'Santa catalina', '2018-05-23', '100', '13%', '22', '23'),
('8', 'Mamani', 'Neurocirujano', 'Sabandia', '2017-06-23', '110', '6%', '24', '32'),
('9', 'Ramos', 'Ginecologa', 'Pedregal', '2017-07-23', '120', '4%', '29', '23'),
('10', 'Vargas', 'Oftalmologo', 'Cerro colorado', '2017-08-23', '260', '19%', '30', '32'),
('11', 'Gallardo', 'Obstetricia', 'Independencia', '2019-09-23', '280', '21%', '21', '32'),
('12', 'Ccora', 'Psicologo', 'Yura', '2017-10-23', '270', '22%', '38', '23'),
('13', 'Candia', 'Odontologo', 'Majes', '2017-11-23', '290', '32%', '48', '32'),
('14', 'Huaman', 'Cirujano', 'Las torres', '2018-12-23', '310', '09%', '18', '23'),
('15', 'Mita', 'Cardiologo', 'Miami', '2018-09-23', '320', '10%', '32', '32'),
('16', 'Tinta', 'Dermatologo', 'Los Angeles', '2017-08-23', '330', '11%', '43', '23'),
('17', 'Pinto', 'Neurocirujano', 'Texas', '2017-07-23', '340', '12%', '45', '12'),
('18', 'Vega', 'Fisioterapeuta', 'Andorra', '2018-06-23', '450', '50%', '28', '12'),
('19', 'Caceres', 'Fisioterapeuta', 'Madrid', '2017-02-23', '580', '30%', '28', '12');
CREACION Y EJECUCION DE LOS PROCEDIMIENTOS ALMACENADOS:
[Link] todos los empleados que se dieron de alta antes del año 2018 y
que pertenecen a un determinado departamento.
delimiter //
create procedure FECHASDEPT(in N_dept int)
begin
select * from empleado
where Fecha_Alt < '2018/01/01' and Dept_No = N_Dept;
end//
delimiter ;
call FECHASDEPT ('32');
[Link] un procedimiento almacenado que permita insertar un nuevo
departamento.
delimiter //
create procedure INSERT_DEP(in Dept_NO INT, in Dnombre varchar(30), in Loc varchar(30))
begin
INSERT INTO departamento VALUES(
Dept_No, Dnombre, Loc);
end//
delimiter ;
call INSERT_DEP('10','Administracion','Buenos aires');
[Link] un procedimiento que recupere el promedio de edad de las
persona por cada departamento.
delimiter //
create procedure PROMEDIO_DEPT(in N_Dep int)
begin
select round(avg(Edad),0) from empleado
where Dept_No = N_Dep;
end//
delimiter ;
call PROMEDIO_DEPT('32');
[Link] un procedimiento para devolver el apellido, oficio y salario, pasándole como
parámetro el número del empleado.
delimiter //
create procedure NUMEMP_DEPT(in Num_emp int)
begin
select apellido, oficio, salario from empleado
where Emp_No = Num_emp;
end//
delimiter ;
call NUMEMP_DEPT('5');
[Link] un procedimiento almacenado para dar de baja a un empleado
pasándole como parámetro su apellido.
delimiter //
create procedure DBAJA_EMPLEADO(in A_pellido varchar(30))
begin
delete from empleado where Apellido = A_pellido;
end//
delimiter ;
call DBAJA_EMPLEADO('Flores');