SlideShare una empresa de Scribd logo
1 de 15
SOLUCION LABORATORIO LENGUAJE TRANSACCIONAL
YANETH ROMERO RAMIREZ
SERVICIO NACIONAL DE APRENDIZAJE (SENA)
(ADSI) ANÁLISIS Y DE SARROLLO DE SISTEMAS DE INFORMACIÓN
BOGOTÁ
2017
SOLUCION LABORATORIO
Construya los siguiente procedimientos Almacenados para inserción de
registros:para las tablas Profesor, Curso, Estudiante,
Estudiantexcurso.
CREATE PROCEDURE InsertProfesor(pdocProf VARCHAR(11), pNomProf VARCHAR(30),
pApeProf VARCHAR(30), pCateProf INT(11), pSalProf INT(11))
INSERT INTO profesor(doc_prof, nom_prof, ape_prof, cate_prof, sal_prof)
VALUES(pdocProf, pNomProf, pApeProf , pCateProf, pSalProf);
CREATE PROCEDURE InsertCurso(pcod_curs INT(11), pnom_curs VARCHAR(100),
phoras_cur INT(11), pvalor_cur INT(11))
INSERT INTO curso(cod_curs, nom_curs, horas_cur, valor_cur)
VALUES(pcod_curs, pnom_curs, phoras_cur, pvalor_cur);
CREATE PROCEDURE InsertEstudiante(pdoc_est INT(11), pnom_est VARCHAR(30),
pap_est VARCHAR(30), pedad_est INT(11))
INSERT INTO estudiante(doc_est, nom_est, ap_est, edad_est)
VALUES(pdoc_est , pnom_est , pap_est, pedad_est);
CREATE PROCEDURE InsertEstudiantexCurso(pcod_cur_estcur INT(11), pdoc_est_estcur
INT(30), pfec_ini_estcur DATE)
INSERT INTO estudiantexcurso(cod_cur_estcur, doc_est_estcur,
fec_ini_estcur)
VALUES(pcod_cur_estcur, pdoc_est_estcur, pfec_ini_estcur
3.En MySQL construya los procedimientos almacenados para realizar los siguientes
procesos:
• Muestre todos los campos de la tabla curso en orden ascendente según el valor.
CREATE PROCEDURE CursoOrdenado()
SELECT *
FROM curso
ORDER BY valor_cur;
• Mostrar los pedidos con los respectivos artículos(código, nombre,valor y
cantidad pedida).
CREATE PROCEDURE GetPedidosConArticulos()
SELECT p.id_ped, p.tit_art, val_ven_art_artped Valor Artículo,
can_art_artped
FROM pedido p
INNER JOIN articuloxpedido ap
ON p.id_ped = ap.id_ped_artped
INNER JOIN articulo a
ON a.id_art = ap.id_art_artped
• Visualizar los datos de las empresas fundadas entre el año 1991 y 1998.
CREATE PROCEDURE GetEmpresasEntre9198()
SELECT *
FROM compañia
WHERE comañofun BETWEEN 1991 AND 1998;
• Visualizar todos los clientes organizados por apellido.
CREATE PROCEDURE GetClientesOrganizados()
SELECT *
FROM cliente
ORDER BY ape_cli;
• Visualizar los datos de los incidentes que han tenido un(1) herido,este
reporte debe visualizar la placa del automotor, con los respectivos
datos de la póliza como son fecha de inicio, valor, estado y valor asegurado.
CREATE PROCEDURE GetIncidentesConUnHerido()
SELECT inciplaca, aseg.asefechainicio, aseg.asecosto, aseg.aseestado,
aseg.asevalorasegurado
FROM incidentes i
INNER JOIN automotores a
ON a.autoplaca = i.inciplaca
INNER JOIN aseguramientos aseg
ON aseg.aseplaca = a.autoplaca
WHERE incicantheridos = 1;
• Visualizar los incidentes del vehículo con placas " FLL420", este reporte debe
visualizar la fecha, el lugar, la cantidad de heridos del
incidente, la fecha de inicio la de expiración de la póliza y el valor
asegurado.
CREATE PROCEDURE GetIncidentesVehiculo()
SELECT i.incifecha, i.incilugar, i.incicantheridos, aseg.asefechainicio,
aseg.asefechaexpiracion, aseg.asevalorasegurado
FROM incidentes i
INNER JOIN automotores a
ON a.autoplaca = i.inciplaca
INNER JOIN aseguramientos aseg
ON aseg.aseplaca = a.autoplaca
WHERE a.autoplaca = 'FLL420' ;
4. Realice las Siguientes funciones en MySQL:
• Cuente el número de estudiantes cuya edad sea mayor a 22.
DELIMITER //
CREATE FUNCTION NumeroEstudiantes()
RETURNS INT
BEGIN
DECLARE numero INT;
--
SELECT COUNT(1) INTO numero
FROM estudiante
WHERE edad_est > 22;
--
RETURN numero;
END
//
• Muestre el nombre y la edad del estudiante más joven.
DELIMITER //
CREATE FUNCTION NombreEdadEstudianteMasJoven()
RETURNS VARCHAR(30)
BEGIN
DECLARE pnombre VARCHAR(30);
DECLARE pedad VARCHAR(30);
--
SELECT nom_est, edad_est
INTO pnombre, pedad
FROM estudiante
WHERE edad_est = (SELECT MIN(edad_est)
FROM estudiante);
--
RETURN CONCAT(pnombre, " ", pedad);
END//
• Calcule el valor promedio de los cursos cuyas horas sean mayores a 40.
DELIMITER //
CREATE FUNCTION ValorPromedioCursos()
RETURNS INT
BEGIN
DECLARE pPromedio DECIMAL(11, 4);
--
SELECT AVG(valor_cur) INTO pPromedio
FROM curso
WHERE horas_cur > 40;
--
RETURN pPromedio ;
END//
• Obtener el sueldo promedio de los profesores de la categoría 1.
DELIMITER //
CREATE FUNCTION SueldoPromedioProfesores()
RETURNS INT
BEGIN
DECLARE pPromedio DECIMAL(11, 4);
--
SELECT AVG(sal_prof) INTO pPromedio
FROM profesor
WHERE cate_prof = 1;
--
RETURN pPromedio ;
END//
--
• Muestre el nombre del profesor con menor sueldo.
DELIMITER //
CREATE FUNCTION NombreProfesorMenorSueldo()
RETURNS VARCHAR(60)
BEGIN
DECLARE pNombre VARCHAR(60);
--
SELECT CONCAT(nom_prof, ape_prof) INTO pNombre
FROM profesor
WHERE sal_prof = (SELECT MIN(sal_prof)
FROM profesor);
--
RETURN pNombre ;
END//
6. Construya los siguiente disparadores para controlar la actualización y
borrado de registros
-- profesor
-- Creamos tabla de PROFESOR
CREATE TABLE auditoria_profesor(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY,
audi_nom_prof_anterior
VARCHAR(30) NOT NULL ,
audi_ape_prof_anterior
VARCHAR(30) NOT NULL ,
audi_cate_prof_anterior INT
NOT NULL ,
audi_sal_prof_anterior INT
NOT NULL ,
audi_nom_prof_nuevo
VARCHAR(30) ,
audi_ape_prof_nuevo
VARCHAR(30) ,
audi_cate_prof_nuevo INT
,
audi_sal_prof_nuevo INT
,
,
audi_fechamodificacion
DATETIME ,
audi_usuario
VARCHAR(50) ,
audi_doc_prof
VARCHAR(11) NOT NULL ,
audi_acccion
VARCHAR(45) NOT NULL
);
-- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN
delimiter //
CREATE TRIGGER trg_profesor_update
BEFORE UPDATE ON profesor
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_profesor( audi_nom_prof_anterior ,
audi_ape_prof_anterior ,
audi_cate_prof_anterior ,
audi_sal_prof_anterior ,
audi_nom_prof_nuevo ,
audi_ape_prof_nuevo ,
audi_cate_prof_nuevo ,
audi_sal_prof_nuevo ,
audi_fechamodificacion ,
audi_usuario
,
audi_doc_prof
,
audi_acccion
)
VALUES(old.nom_prof , old.ape_prof , old.cate_prof, old.sal_prof ,
new.nom_prof , new.ape_prof , new.cate_prof ,
new.sal_prof,
now(), current_user(), new.doc_prof, 'Actualización');
END;//
-- PROBAMOS ACTUALIZANDO UN REGISTRO
UPDATE PROFESOR
SET nom_prof = 'Martha XXX',
ape_prof = 'Rojas XXX',
cate_prof = 4 ,
sal_prof = 1000000
WHERE doc_prof = '63502720';
-- CREAMOS EL TRIGGER PARA el delete
delimiter //
CREATE TRIGGER trg_profesor_delete
AFTER DELETE ON profesor
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_profesor( audi_nom_prof_anterior ,
audi_ape_prof_anterior ,
audi_cate_prof_anterior ,
audi_sal_prof_anterior ,
audi_fechamodificacion ,
audi_usuario
,
audi_doc_prof
,
audi_acccion
)
VALUES(old.nom_prof , old.ape_prof , old.cate_prof, old.sal_prof ,
now(), current_user(), old.doc_prof, 'Registro
Eliminado');
END;//
--PROBAMOS ELIMINANDO UN REGISTRO
DELETE FROM PROFESOR
WHERE doc_prof = '91216904';
--CURSO
-- Creamos tabla de CURSO
CREATE TABLE auditoria_curso(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY,
audi_nom_curs_anterior
VARCHAR(100) NOT NULL ,
audi_horas_cur_anterior INT NOT
NULL ,
audi_valor_cur_anterior INT
NOT NULL ,
audi_nom_curs_nuevo
VARCHAR(100) ,
audi_horas_cur_nuevo INT
,
audi_valor_cur_nuevo INT
,
audi_fechamodificacion DATETIME
,
audi_usuario
VARCHAR(50) ,
audi_cod_curs
VARCHAR(11) NOT NULL ,
audi_acccion
VARCHAR(45) NOT NULL
);
-- CREAMOR EL TRIGGER PARA LA ACTUALIZACIÓN
delimiter //
CREATE TRIGGER trg_curso_update
BEFORE UPDATE ON curso
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_curso(
audi_nom_curs_anterior ,
audi_horas_cur_anterior ,
audi_valor_cur_anterior ,
audi_nom_curs_nuevo ,
audi_horas_cur_nuevo ,
audi_valor_cur_nuevo ,
audi_fechamodificacion ,
audi_usuario ,
audi_cod_curs ,
audi_acccion
)
VALUES(old.nom_curs , old.horas_cur , old.valor_cur,
new.nom_curs , new.horas_cur , new.valor_cur,
now(), current_user(), new.cod_curs, 'Actualización');
END;//
-- PROBAMOS ACTUALIZANDO UN REGISTRO
UPDATE curso
SET nom_curs = 'Fundamentos de SQL XXX',
horas_cur = 40,
valor_cur = 1400000
WHERE cod_curs = '250067';
-- CREAMOR EL TRIGGER PARA el delete
delimiter //
CREATE TRIGGER trg_curso_delete
AFTER DELETE ON curso
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_curso(
audi_nom_curs_anterior ,
audi_horas_cur_anterior ,
audi_valor_cur_anterior ,
audi_fechamodificacion ,
audi_usuario ,
audi_cod_curs ,
audi_acccion
)
VALUES(old.nom_curs , old.horas_cur , old.valor_cur,
now(), current_user(), old.cod_curs, 'Registro
Eliminado');
END;//
--PROBAMOS ELIMINANDO UN REGISTRO
delete from estudiantexcurso where cod_cur_estcur = 289011;
--
DELETE FROM curso
WHERE cod_curs = '289011';
-- ESTUDIANTE
-- Creamos tabla de ESTUDIANTE
CREATE TABLE auditoria_estudiante(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY,
audi_nom_est_anterior VARCHAR(30)
NOT NULL ,
audi_ape_est_anterior VARCHAR(30)
NOT NULL ,
audi_edad_est_anterior INT
(11) NOT NULL ,
audi_nom_est_nuevo VARCHAR(30)
,
audi_ape_est_nuevo VARCHAR(30)
,
audi_edad_est_nuevo INT
,
audi_fechamodificacion DATETIME
,
audi_usuario
VARCHAR(50) ,
audi_doc_est
VARCHAR(11) NOT NULL ,
audi_accion
VARCHAR(45) NOT NULL
);
-- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN
delimiter //
CREATE TRIGGER trg_estudiante_update
BEFORE UPDATE ON estudiante
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_estudiante( audi_nom_est_anterior ,
audi_ape_est_anterior ,
audi_edad_est_anterior ,
audi_nom_est_nuevo ,
audi_ape_est_nuevo ,
audi_edad_est_nuevo ,
audi_fechamodificacion ,
audi_usuario
,
audi_doc_est
,
audi_accion
)
VALUES(old.nom_est , old.ape_est , old.edad_est,
new.nom_est , new.ape_est , new.edad_est ,
now(), current_user(), new.doc_est, 'Actualización');
END;//
-- PROBAMOS ACTUALIZANDO UN REGISTRO
UPDATE ESTUDIANTE
SET nom_est = 'Jonatan XXX',
ape_est = 'Ardila XXX',
edad_est = 17
WHERE doc_est = '1098098097';
-- CREAMOS EL TRIGGER PARA el delete
delimiter //
CREATE TRIGGER trg_estudiante_delete
AFTER DELETE ON estudiante
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_estudiante( audi_nom_est_anterior ,
audi_ape_est_anterior ,
audi_edad_est_anterior ,
audi_fechamodificacion ,
audi_usuario
,
audi_doc_est
,
audi_accion
)
VALUES(old.nom_est , old.ape_est , old.edad_est,
now(), current_user(), old.doc_est, 'Registro
Eliminado');
END;//
--PROBAMOS ELIMINANDO UN REGISTRO
DELETE FROM estudiantexcurso where doc_est_estcur = 91245678;
DELETE FROM estudiante
WHERE doc_est = '91245678';
mysql>create table Estudiante(doc_est varcharalterEstudiante(11) not
null,nom_est varchar(30)
not null,ape_est varchar(30) not null,edad_est int not null,primary key(doc_est)
);
-- automotores
--Creamos tabla de AUTOMOTORES
CREATE TABLE auditoria_automotores(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY,
audi_Automarca_anterior VARCHAR(30)
NOT NULL ,
audi_Autotipo_anterior INT
NOT NULL ,
audi_Automodelo_anterior INT (11)
NOT NULL ,
audi_Autonumpasajeros_anterior INT
,
audi_Autocilindraje_anterior INT
,
audi_Autonumchasis_anterior
VARCHAR(30) ,
audi_Automarca_nuevo
VARCHAR(30) ,
audi_Autotipo_nuevo INT
,
audi_Automodelo_nuevo INT
(11) ,
audi_Autonumpasajeros_nuevo INT
,
audi_Autocilindraje_nuevo INT
,
audi_Autonumchasis_nuevo
VARCHAR(30) ,
x DATETIME ,
audi_usuario
VARCHAR(50) ,
audi_autoplaca
VARCHAR(6) NOT NULL ,
audi_accion
VARCHAR(45) NOT NULL
);
-- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN
delimiter //
CREATE TRIGGER trg_automotores_update
BEFORE UPDATE ON automotores
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_automotores( audi_Automarca_anterior ,
audi_Autotipo_anterior ,
audi_Automodelo_anterior,
audi_Autonumpasajeros_anterior,
audi_Autocilindraje_anterior ,
audi_Autonumchasis_anterior,
audi_Automarca_nuevo ,
audi_Autotipo_nuevo ,
audi_Automodelo_nuevo ,
audi_Autonumpasajeros_nuevo
,
audi_Autocilindraje_nuevo ,
audi_Autonumchasis_nuevo ,
audi_fechamodificacion ,
audi_usuario
,
audi_autoplaca
,
audi_accion
)
VALUES(old.Automarca, old.Autotipo , old.Automodelo ,
old.Autonumpasajeros, old.Autocilindraje , old.Autonumchasis ,
new.Automarca, new.Autotipo , new.Automodelo ,
new.Autonumpasajeros , new.Autocilindraje, new.Autonumchasis ,
now(), current_user(), new.autoplaca, 'Actualización');
END;//
-- PROBAMOS ACTUALIZANDO UN REGISTRO
UPDATE Automotores
SET Automarca = 'chevrolet corsa ACTIVE',
Autotipo = 1,
Automodelo = 2003 ,
Autonumpasajeros = 8 ,
Autocilindraje = 1800 ,
Autonumchasis = 'wywzzz167kk009d45'
WHERE autoplaca = 'FLL420';
-- CREAMOR EL TRIGGER PARA el delete
delimiter //
CREATE TRIGGER trg_automotores_delete
AFTER DELETE ON automotores
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_automotores( audi_Automarca_anterior ,
audi_Autotipo_anterior ,
audi_Automodelo_anterior,
audi_Autonumpasajeros_anterior,
audi_Autocilindraje_anterior ,
audi_Autonumchasis_anterior,
audi_usuario
,
audi_autoplaca
,
audi_fechamodificacion ,
audi_accion
)
VALUES(old.Automarca,old.Autotipo , old.Automodelo ,
old.Autonumpasajeros, old.Autocilindraje , old.Autonumchasis ,
now(), current_user(), old.autoplaca, 'Registro
Eliminado');
END;//
--PROBAMOS ELIMINANDO UN REGISTRO
DELETE FROM aseguramientos where aseplaca = 'KJQ920';
DELETE FROM automotores
WHERE autoplaca = 'KJQ920';
select * from auditoria_automotores;
-- aseguramientos
-- Creamos tabla de ASEGURAMIENTOS
CREATE TABLE auditoria_Aseguramientos(id_audi INT(11) AUTO_INCREMENT PRIMARY
KEY,
audi_asefechainicio_anterior
DATE NOT NULL ,
audi_asefechaexpiracion_anterior
DATE NOT NULL ,
audi_asevaloraegurado_anterior
INT NOT NULL ,
audi_aseestado_anterior
VARCHAR(30) NOT NULL ,
audi_asecosto_anterior
INT NOT NULL ,
audi_aseplaca_anterior
VARCHAR(20) NOT NULL ,
audi_asefechainicio_nuevo
DATE ,
audi_asefechaexpiracion_nuevo
DATE ,
audi_asevaloraegurado_nuevo
INT ,
audi_aseestado_nuevo
VARCHAR(30) ,
audi_asecosto_nuevo
INT ,
audi_aseplaca_nuevo
VARCHAR(20) ,
audi_fechamodificacion
DATETIME ,
audi_usuario
VARCHAR(50) ,
audi_asecodigo
INT NOT NULL ,
audi_accion
VARCHAR(45) NOT NULL
);
-- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN
delimiter //
CREATE TRIGGER trg_aseguramientos_update
BEFORE UPDATE ON aseguramientos
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_aseguramientos( audi_asefechainicio_anterior ,
audi_asefechaexpiracion_anterior
,
audi_asevaloraegurado_anterior
,
audi_aseestado_anterior
,
audi_asecosto_anterior
,
audi_aseplaca_anterior
,
audi_asefechainicio_nuevo
,
audi_asefechaexpiracion_nuevo
,
audi_asevaloraegurado_nuevo
,
audi_aseestado_nuevo
,
audi_asecosto_nuevo
,
audi_aseplaca_nuevo
,
audi_fechamodificacion
,
audi_usuario
,
audi_asecodigo
,
audi_accion
)
VALUES(old.asefechainicio, old.asefechaexpiracion ,
old.asevalorasegurado , old.aseestado, old.asecosto, old.aseplaca,
new.asefechainicio, new.asefechaexpiracion ,
new.asevalorasegurado , new.aseestado , new.asecosto, new.aseplaca,
now(), current_user(), new.asecodigo ,
'Actualización');
END;//
-- PROBAMOS ACTUALIZANDO UN REGISTRO
UPDATE aseguramientos
SET asefechainicio = '2012-10-10',
asefechaexpiracion = '2013-10-30',
asevalorasegurado = 80000000,
aseestado = 'Vigente',
asecosto = 700000,
aseplaca ='FLL420'
WHERE asecodigo = '2';
-- CREAMOS EL TRIGGER PARA el delete
delimiter //
CREATE TRIGGER trg_aseguramientos_delete
AFTER DELETE ON aseguramientos
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_aseguramientos( audi_asefechainicio_anterior ,
audi_asefechaexpiracion_anterior
,
audi_asefechaexpiracion_anterior
,
audi_asevaloraegurado_anterior
,
audi_aseestado_anterior
,
audi_asecosto_anterior
,
audi_aseplaca_anterior
,
audi_fechamodificacion
,
audi_usuario
,
audi_asecodigo
,
audi_accion
)
VALUES(old.asefechainicio , old.asefechaexpiracion ,
old.asevalorasegurado, old.aseestado, old.asecosto, old.aseplaca,
now(), current_user(), old.asecodigo, 'Registro
Eliminado');
END;//
--PROBAMOS ELIMINANDO UN REGISTRO
DELETE FROM aseguramientos
WHERE asecodigo = '2';
-- incidentes
--Creamos tabla de INCIDENTES
CREATE TABLE auditoria_incidentes(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY,
audi_incifecha_anterior DATE NOT
NULL ,
audi_inciplaca_anterior VARCHAR(6)
NOT NULL ,
audi_incilugar_anterior VARCHAR(40)
NOT NULL ,
audi_incicantheridos_anterior INT
NOT NULL ,
audi_incicanfatalidades_anterior INT
NOT NULL ,
audi_incicanautosinvolucrados_anterior INT NOT NULL ,
audi_incifecha_nuevo DATE
,
audi_inciplaca_nuevo VARCHAR(6)
,
audi_incilugar_nuevo VARCHAR(40)
,
audi_incicantheridos_nuevo INT
,
audi_incicanfatalidades_nuevo INT
,
audi_incicanautosinvolucrados_nuevo
INT ,
audi_fechamodificacion DATETIME
,
audi_usuario
VARCHAR(50) ,
audi_incicodigo INT NOT NULL
,
audi_accion
VARCHAR(45) NOT NULL
);
-- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN
delimiter //
CREATE TRIGGER trg_incidentes_update
BEFORE UPDATE ON incidentes
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_incidentes(audi_incifecha_anterior ,
audi_inciplaca_anterior ,
audi_incilugar_anterior ,
audi_incicantheridos_anterior
,
audi_incicanfatalidades_anterior ,
audi_incicanautosinvolucrados_anterior ,
audi_incifecha_nuevo
,
audi_inciplaca_nuevo
,
audi_incilugar_nuevo
,
audi_incicantheridos_nuevo
,
audi_incicanfatalidades_nuevo
,
audi_incicanautosinvolucrados_nuevo
,
audi_fechamodificacion
,
audi_usuario
,
audi_incicodigo ,
audi_accion
)
VALUES(old.incifecha , old.inciplaca , old.incilugar,
old.incicantheridos , old.incicanfatalidades,old.incicanautosinvolucrados,
new.incifecha , new.inciplaca , new.incilugar ,
new.incicantheridos, new.incicanfatalidades,new.incicanautosinvolucrados,
now(), current_user(), new.incicodigo,
'Actualización');
END;//
-- PROBAMOS ACTUALIZANDO UN REGISTRO
UPDATE incidentes
SET incifecha = '2012-11-11',
inciplaca = 'FLL420',
incilugar = 'San Gil',
incicantheridos = 2,
incicanfatalidades = 3,
incicanautosinvolucrados = 4
WHERE incicodigo = '1';
-- CREAMOS EL TRIGGER PARA el delete
delimiter //
CREATE TRIGGER trg_auditoria_incidentes_delete
AFTER DELETE ON incidentes
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_incidentes(audi_incifecha_anterior ,
audi_inciplaca_anterior ,
audi_incilugar_anterior ,
audi_incicantheridos_anterior
,
audi_incicanfatalidades_anterior ,
audi_incicanautosinvolucrados_anterior ,
audi_fechamodificacion
,
audi_usuario
,
audi_incicodigo ,
audi_accion
)
VALUES(old.incifecha , old.inciplaca , old.incilugar,
old.incicantheridos , old.incicanfatalidades,old.incicanautosinvolucrados,
now(), current_user(), old.incicodigo, 'Registro
Eliminado');
END;//
--PROBAMOS ELIMINANDO UN REGISTRO
DELETE FROM INCIDENTES where incicodigo = 3;
--Solucion_Laboratorio_LenguajeTransaccional.txt

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

The Terror-Free Guide to Introducing Functional Scala at Work
The Terror-Free Guide to Introducing Functional Scala at WorkThe Terror-Free Guide to Introducing Functional Scala at Work
The Terror-Free Guide to Introducing Functional Scala at Work
 
Tutorial de codeblocks
Tutorial de codeblocksTutorial de codeblocks
Tutorial de codeblocks
 
Transacciones en SQL SERVER
Transacciones en SQL SERVERTransacciones en SQL SERVER
Transacciones en SQL SERVER
 
Tesis Control de Inventarios
Tesis Control de InventariosTesis Control de Inventarios
Tesis Control de Inventarios
 
Diccionario De Datos
Diccionario De DatosDiccionario De Datos
Diccionario De Datos
 
Ejercicios sql
Ejercicios sqlEjercicios sql
Ejercicios sql
 
Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
3 Introducción al lenguaje PHP
3 Introducción al lenguaje PHP3 Introducción al lenguaje PHP
3 Introducción al lenguaje PHP
 
ejercicios diseño:_entidad relación en la creación de una BD
ejercicios diseño:_entidad relación en la creación de una BDejercicios diseño:_entidad relación en la creación de una BD
ejercicios diseño:_entidad relación en la creación de una BD
 
PROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOSPROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOS
 
Formato ieee830(srs lleno)
Formato ieee830(srs lleno)Formato ieee830(srs lleno)
Formato ieee830(srs lleno)
 
04 Handling Exceptions
04 Handling Exceptions04 Handling Exceptions
04 Handling Exceptions
 
9.laravel
9.laravel9.laravel
9.laravel
 
Flujos y archivo en java
Flujos y archivo en javaFlujos y archivo en java
Flujos y archivo en java
 
Couch db
Couch dbCouch db
Couch db
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
Ejercicios resueltos de sql
Ejercicios resueltos de sqlEjercicios resueltos de sql
Ejercicios resueltos de sql
 
Sql loader good example
Sql loader good exampleSql loader good example
Sql loader good example
 

Similar a Procedimientos almacenados y funciones para solución laboratorio

Trabajo final
Trabajo finalTrabajo final
Trabajo finalgmr979
 
7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql ServerCorfapo
 
Programacin mysqlejercicios439-131027071437-phpapp01
Programacin mysqlejercicios439-131027071437-phpapp01Programacin mysqlejercicios439-131027071437-phpapp01
Programacin mysqlejercicios439-131027071437-phpapp01MaraMagdalenaBlancoR
 
Manualitosqlserver
ManualitosqlserverManualitosqlserver
ManualitosqlserverOca srl
 
Unidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sqlUnidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sqlTitiushko Jazz
 
Unidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sqlUnidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sqlTitiushko Jazz
 
Base datos mysql y visual basic
Base datos mysql y visual basicBase datos mysql y visual basic
Base datos mysql y visual basicRafael Tobar Jame
 
CreacióN De Vistas
CreacióN De VistasCreacióN De Vistas
CreacióN De Vistasblaze0002
 
Practica Seis Delphi
Practica Seis DelphiPractica Seis Delphi
Practica Seis DelphiJose Ponce
 
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM   TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM Kamisutra
 
Estructuras de control en la POO
Estructuras de control en la POOEstructuras de control en la POO
Estructuras de control en la POOAmado Arcaya
 

Similar a Procedimientos almacenados y funciones para solución laboratorio (20)

Trabajo final
Trabajo finalTrabajo final
Trabajo final
 
Ejercicios resueltos de_pl-sql
Ejercicios resueltos de_pl-sqlEjercicios resueltos de_pl-sql
Ejercicios resueltos de_pl-sql
 
7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server
 
Programacin mysqlejercicios439-131027071437-phpapp01
Programacin mysqlejercicios439-131027071437-phpapp01Programacin mysqlejercicios439-131027071437-phpapp01
Programacin mysqlejercicios439-131027071437-phpapp01
 
Manualitosqlserver
ManualitosqlserverManualitosqlserver
Manualitosqlserver
 
Replica
ReplicaReplica
Replica
 
Unidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sqlUnidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sql
 
Unidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sqlUnidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sql
 
Base datos mysql y visual basic
Base datos mysql y visual basicBase datos mysql y visual basic
Base datos mysql y visual basic
 
Taller De PráCtica 4
Taller De PráCtica 4Taller De PráCtica 4
Taller De PráCtica 4
 
Taller PráCtica 4
Taller PráCtica 4Taller PráCtica 4
Taller PráCtica 4
 
Taller De PráCtica 4
Taller De PráCtica 4Taller De PráCtica 4
Taller De PráCtica 4
 
Taller De PráCtica 4
Taller De PráCtica 4Taller De PráCtica 4
Taller De PráCtica 4
 
CreacióN De Vistas
CreacióN De VistasCreacióN De Vistas
CreacióN De Vistas
 
Tarea 3
Tarea 3Tarea 3
Tarea 3
 
Cursores
CursoresCursores
Cursores
 
Practica Seis Delphi
Practica Seis DelphiPractica Seis Delphi
Practica Seis Delphi
 
Herencia clase
Herencia claseHerencia clase
Herencia clase
 
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM   TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
 
Estructuras de control en la POO
Estructuras de control en la POOEstructuras de control en la POO
Estructuras de control en la POO
 

Último

LA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derechoLA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derechojuliosabino1
 
La importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresaLa importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresamerca6
 
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdfREPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdfIrapuatoCmovamos
 
Croquis de riesgo de trabajo gasolinera.pdf
Croquis de riesgo de trabajo gasolinera.pdfCroquis de riesgo de trabajo gasolinera.pdf
Croquis de riesgo de trabajo gasolinera.pdfhernestosoto82
 
El sistema solar el gran descubrimiento del sistema solar .pptx
El sistema solar el gran descubrimiento del sistema solar .pptxEl sistema solar el gran descubrimiento del sistema solar .pptx
El sistema solar el gran descubrimiento del sistema solar .pptxYoladsCabarcasTous
 
que son los planes de ordenamiento predial POP.pptx
que son los planes de ordenamiento predial  POP.pptxque son los planes de ordenamiento predial  POP.pptx
que son los planes de ordenamiento predial POP.pptxSergiothaine2
 
Niveles de organización biologica clase de biologia
Niveles de organización biologica clase de biologiaNiveles de organización biologica clase de biologia
Niveles de organización biologica clase de biologiatongailustraconcienc
 
ESTUDIO DE IMPACTO AMBIENTAL de explotación minera.pptx
ESTUDIO DE IMPACTO AMBIENTAL de  explotación minera.pptxESTUDIO DE IMPACTO AMBIENTAL de  explotación minera.pptx
ESTUDIO DE IMPACTO AMBIENTAL de explotación minera.pptxKatherineFabianLoza1
 
Análisis de un mapa de riesgos de una tortillería
Análisis de un mapa de riesgos de una tortillería Análisis de un mapa de riesgos de una tortillería
Análisis de un mapa de riesgos de una tortillería yocelynsanchezerasmo
 
Presentación informe 'Fondos Next Generation European Union destinados a actu...
Presentación informe 'Fondos Next Generation European Union destinados a actu...Presentación informe 'Fondos Next Generation European Union destinados a actu...
Presentación informe 'Fondos Next Generation European Union destinados a actu...Ivie
 
PREGUNTA J DE CONSULTA POPULAR 21 DE ABRIL
PREGUNTA J DE CONSULTA POPULAR 21 DE ABRILPREGUNTA J DE CONSULTA POPULAR 21 DE ABRIL
PREGUNTA J DE CONSULTA POPULAR 21 DE ABRILeluniversocom
 
Módulo mapa de riesgos de tienda de abarrotes
Módulo mapa de riesgos de tienda de abarrotesMódulo mapa de riesgos de tienda de abarrotes
Módulo mapa de riesgos de tienda de abarrotessald071205mmcnrna9
 
DIPLOMA DE CERTIFICADO EQQW_removed.pptx
DIPLOMA DE CERTIFICADO EQQW_removed.pptxDIPLOMA DE CERTIFICADO EQQW_removed.pptx
DIPLOMA DE CERTIFICADO EQQW_removed.pptxKaterin yanac tello
 
CUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdfCUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdfEDUARDO MAMANI MAMANI
 
HABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdfHABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdfGEINER22
 
Mapa de riesgos de un taller mecánico 405
Mapa de riesgos de un taller mecánico 405Mapa de riesgos de un taller mecánico 405
Mapa de riesgos de un taller mecánico 405rodrimarxim
 
tipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicacióntipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicaciónJonathanAntonioMaldo
 
PREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRIL
PREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRILPREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRIL
PREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRILeluniversocom
 
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfREPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfIrapuatoCmovamos
 
2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptx2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptxccordovato
 

Último (20)

LA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derechoLA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derecho
 
La importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresaLa importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresa
 
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdfREPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
 
Croquis de riesgo de trabajo gasolinera.pdf
Croquis de riesgo de trabajo gasolinera.pdfCroquis de riesgo de trabajo gasolinera.pdf
Croquis de riesgo de trabajo gasolinera.pdf
 
El sistema solar el gran descubrimiento del sistema solar .pptx
El sistema solar el gran descubrimiento del sistema solar .pptxEl sistema solar el gran descubrimiento del sistema solar .pptx
El sistema solar el gran descubrimiento del sistema solar .pptx
 
que son los planes de ordenamiento predial POP.pptx
que son los planes de ordenamiento predial  POP.pptxque son los planes de ordenamiento predial  POP.pptx
que son los planes de ordenamiento predial POP.pptx
 
Niveles de organización biologica clase de biologia
Niveles de organización biologica clase de biologiaNiveles de organización biologica clase de biologia
Niveles de organización biologica clase de biologia
 
ESTUDIO DE IMPACTO AMBIENTAL de explotación minera.pptx
ESTUDIO DE IMPACTO AMBIENTAL de  explotación minera.pptxESTUDIO DE IMPACTO AMBIENTAL de  explotación minera.pptx
ESTUDIO DE IMPACTO AMBIENTAL de explotación minera.pptx
 
Análisis de un mapa de riesgos de una tortillería
Análisis de un mapa de riesgos de una tortillería Análisis de un mapa de riesgos de una tortillería
Análisis de un mapa de riesgos de una tortillería
 
Presentación informe 'Fondos Next Generation European Union destinados a actu...
Presentación informe 'Fondos Next Generation European Union destinados a actu...Presentación informe 'Fondos Next Generation European Union destinados a actu...
Presentación informe 'Fondos Next Generation European Union destinados a actu...
 
PREGUNTA J DE CONSULTA POPULAR 21 DE ABRIL
PREGUNTA J DE CONSULTA POPULAR 21 DE ABRILPREGUNTA J DE CONSULTA POPULAR 21 DE ABRIL
PREGUNTA J DE CONSULTA POPULAR 21 DE ABRIL
 
Módulo mapa de riesgos de tienda de abarrotes
Módulo mapa de riesgos de tienda de abarrotesMódulo mapa de riesgos de tienda de abarrotes
Módulo mapa de riesgos de tienda de abarrotes
 
DIPLOMA DE CERTIFICADO EQQW_removed.pptx
DIPLOMA DE CERTIFICADO EQQW_removed.pptxDIPLOMA DE CERTIFICADO EQQW_removed.pptx
DIPLOMA DE CERTIFICADO EQQW_removed.pptx
 
CUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdfCUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdf
 
HABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdfHABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdf
 
Mapa de riesgos de un taller mecánico 405
Mapa de riesgos de un taller mecánico 405Mapa de riesgos de un taller mecánico 405
Mapa de riesgos de un taller mecánico 405
 
tipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicacióntipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicación
 
PREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRIL
PREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRILPREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRIL
PREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRIL
 
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfREPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
 
2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptx2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptx
 

Procedimientos almacenados y funciones para solución laboratorio

  • 1. SOLUCION LABORATORIO LENGUAJE TRANSACCIONAL YANETH ROMERO RAMIREZ SERVICIO NACIONAL DE APRENDIZAJE (SENA) (ADSI) ANÁLISIS Y DE SARROLLO DE SISTEMAS DE INFORMACIÓN BOGOTÁ 2017 SOLUCION LABORATORIO Construya los siguiente procedimientos Almacenados para inserción de registros:para las tablas Profesor, Curso, Estudiante, Estudiantexcurso. CREATE PROCEDURE InsertProfesor(pdocProf VARCHAR(11), pNomProf VARCHAR(30), pApeProf VARCHAR(30), pCateProf INT(11), pSalProf INT(11)) INSERT INTO profesor(doc_prof, nom_prof, ape_prof, cate_prof, sal_prof) VALUES(pdocProf, pNomProf, pApeProf , pCateProf, pSalProf); CREATE PROCEDURE InsertCurso(pcod_curs INT(11), pnom_curs VARCHAR(100), phoras_cur INT(11), pvalor_cur INT(11)) INSERT INTO curso(cod_curs, nom_curs, horas_cur, valor_cur) VALUES(pcod_curs, pnom_curs, phoras_cur, pvalor_cur); CREATE PROCEDURE InsertEstudiante(pdoc_est INT(11), pnom_est VARCHAR(30), pap_est VARCHAR(30), pedad_est INT(11)) INSERT INTO estudiante(doc_est, nom_est, ap_est, edad_est) VALUES(pdoc_est , pnom_est , pap_est, pedad_est); CREATE PROCEDURE InsertEstudiantexCurso(pcod_cur_estcur INT(11), pdoc_est_estcur INT(30), pfec_ini_estcur DATE) INSERT INTO estudiantexcurso(cod_cur_estcur, doc_est_estcur, fec_ini_estcur) VALUES(pcod_cur_estcur, pdoc_est_estcur, pfec_ini_estcur 3.En MySQL construya los procedimientos almacenados para realizar los siguientes
  • 2. procesos: • Muestre todos los campos de la tabla curso en orden ascendente según el valor. CREATE PROCEDURE CursoOrdenado() SELECT * FROM curso ORDER BY valor_cur; • Mostrar los pedidos con los respectivos artículos(código, nombre,valor y cantidad pedida). CREATE PROCEDURE GetPedidosConArticulos() SELECT p.id_ped, p.tit_art, val_ven_art_artped Valor Artículo, can_art_artped FROM pedido p INNER JOIN articuloxpedido ap ON p.id_ped = ap.id_ped_artped INNER JOIN articulo a ON a.id_art = ap.id_art_artped • Visualizar los datos de las empresas fundadas entre el año 1991 y 1998. CREATE PROCEDURE GetEmpresasEntre9198() SELECT * FROM compañia WHERE comañofun BETWEEN 1991 AND 1998; • Visualizar todos los clientes organizados por apellido. CREATE PROCEDURE GetClientesOrganizados() SELECT * FROM cliente ORDER BY ape_cli; • Visualizar los datos de los incidentes que han tenido un(1) herido,este reporte debe visualizar la placa del automotor, con los respectivos datos de la póliza como son fecha de inicio, valor, estado y valor asegurado. CREATE PROCEDURE GetIncidentesConUnHerido() SELECT inciplaca, aseg.asefechainicio, aseg.asecosto, aseg.aseestado, aseg.asevalorasegurado FROM incidentes i INNER JOIN automotores a ON a.autoplaca = i.inciplaca INNER JOIN aseguramientos aseg ON aseg.aseplaca = a.autoplaca WHERE incicantheridos = 1; • Visualizar los incidentes del vehículo con placas " FLL420", este reporte debe visualizar la fecha, el lugar, la cantidad de heridos del incidente, la fecha de inicio la de expiración de la póliza y el valor asegurado. CREATE PROCEDURE GetIncidentesVehiculo() SELECT i.incifecha, i.incilugar, i.incicantheridos, aseg.asefechainicio, aseg.asefechaexpiracion, aseg.asevalorasegurado FROM incidentes i
  • 3. INNER JOIN automotores a ON a.autoplaca = i.inciplaca INNER JOIN aseguramientos aseg ON aseg.aseplaca = a.autoplaca WHERE a.autoplaca = 'FLL420' ; 4. Realice las Siguientes funciones en MySQL: • Cuente el número de estudiantes cuya edad sea mayor a 22. DELIMITER // CREATE FUNCTION NumeroEstudiantes() RETURNS INT BEGIN DECLARE numero INT; -- SELECT COUNT(1) INTO numero FROM estudiante WHERE edad_est > 22; -- RETURN numero; END // • Muestre el nombre y la edad del estudiante más joven. DELIMITER // CREATE FUNCTION NombreEdadEstudianteMasJoven() RETURNS VARCHAR(30) BEGIN DECLARE pnombre VARCHAR(30); DECLARE pedad VARCHAR(30); -- SELECT nom_est, edad_est INTO pnombre, pedad FROM estudiante WHERE edad_est = (SELECT MIN(edad_est) FROM estudiante); -- RETURN CONCAT(pnombre, " ", pedad); END// • Calcule el valor promedio de los cursos cuyas horas sean mayores a 40. DELIMITER // CREATE FUNCTION ValorPromedioCursos() RETURNS INT BEGIN DECLARE pPromedio DECIMAL(11, 4); -- SELECT AVG(valor_cur) INTO pPromedio FROM curso WHERE horas_cur > 40; -- RETURN pPromedio ; END//
  • 4. • Obtener el sueldo promedio de los profesores de la categoría 1. DELIMITER // CREATE FUNCTION SueldoPromedioProfesores() RETURNS INT BEGIN DECLARE pPromedio DECIMAL(11, 4); -- SELECT AVG(sal_prof) INTO pPromedio FROM profesor WHERE cate_prof = 1; -- RETURN pPromedio ; END// -- • Muestre el nombre del profesor con menor sueldo. DELIMITER // CREATE FUNCTION NombreProfesorMenorSueldo() RETURNS VARCHAR(60) BEGIN DECLARE pNombre VARCHAR(60); -- SELECT CONCAT(nom_prof, ape_prof) INTO pNombre FROM profesor WHERE sal_prof = (SELECT MIN(sal_prof) FROM profesor); -- RETURN pNombre ; END// 6. Construya los siguiente disparadores para controlar la actualización y borrado de registros -- profesor -- Creamos tabla de PROFESOR CREATE TABLE auditoria_profesor(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY, audi_nom_prof_anterior VARCHAR(30) NOT NULL , audi_ape_prof_anterior VARCHAR(30) NOT NULL , audi_cate_prof_anterior INT NOT NULL , audi_sal_prof_anterior INT NOT NULL , audi_nom_prof_nuevo VARCHAR(30) , audi_ape_prof_nuevo VARCHAR(30) , audi_cate_prof_nuevo INT , audi_sal_prof_nuevo INT ,
  • 5. , audi_fechamodificacion DATETIME , audi_usuario VARCHAR(50) , audi_doc_prof VARCHAR(11) NOT NULL , audi_acccion VARCHAR(45) NOT NULL ); -- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN delimiter // CREATE TRIGGER trg_profesor_update BEFORE UPDATE ON profesor FOR EACH ROW BEGIN -- INSERT INTO auditoria_profesor( audi_nom_prof_anterior , audi_ape_prof_anterior , audi_cate_prof_anterior , audi_sal_prof_anterior , audi_nom_prof_nuevo , audi_ape_prof_nuevo , audi_cate_prof_nuevo , audi_sal_prof_nuevo , audi_fechamodificacion , audi_usuario , audi_doc_prof , audi_acccion ) VALUES(old.nom_prof , old.ape_prof , old.cate_prof, old.sal_prof , new.nom_prof , new.ape_prof , new.cate_prof , new.sal_prof, now(), current_user(), new.doc_prof, 'Actualización'); END;// -- PROBAMOS ACTUALIZANDO UN REGISTRO UPDATE PROFESOR SET nom_prof = 'Martha XXX', ape_prof = 'Rojas XXX', cate_prof = 4 , sal_prof = 1000000 WHERE doc_prof = '63502720'; -- CREAMOS EL TRIGGER PARA el delete delimiter // CREATE TRIGGER trg_profesor_delete AFTER DELETE ON profesor FOR EACH ROW BEGIN -- INSERT INTO auditoria_profesor( audi_nom_prof_anterior , audi_ape_prof_anterior , audi_cate_prof_anterior , audi_sal_prof_anterior , audi_fechamodificacion , audi_usuario ,
  • 6. audi_doc_prof , audi_acccion ) VALUES(old.nom_prof , old.ape_prof , old.cate_prof, old.sal_prof , now(), current_user(), old.doc_prof, 'Registro Eliminado'); END;// --PROBAMOS ELIMINANDO UN REGISTRO DELETE FROM PROFESOR WHERE doc_prof = '91216904'; --CURSO -- Creamos tabla de CURSO CREATE TABLE auditoria_curso(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY, audi_nom_curs_anterior VARCHAR(100) NOT NULL , audi_horas_cur_anterior INT NOT NULL , audi_valor_cur_anterior INT NOT NULL , audi_nom_curs_nuevo VARCHAR(100) , audi_horas_cur_nuevo INT , audi_valor_cur_nuevo INT , audi_fechamodificacion DATETIME , audi_usuario VARCHAR(50) , audi_cod_curs VARCHAR(11) NOT NULL , audi_acccion VARCHAR(45) NOT NULL ); -- CREAMOR EL TRIGGER PARA LA ACTUALIZACIÓN delimiter // CREATE TRIGGER trg_curso_update BEFORE UPDATE ON curso FOR EACH ROW BEGIN -- INSERT INTO auditoria_curso( audi_nom_curs_anterior , audi_horas_cur_anterior , audi_valor_cur_anterior , audi_nom_curs_nuevo , audi_horas_cur_nuevo , audi_valor_cur_nuevo , audi_fechamodificacion , audi_usuario , audi_cod_curs , audi_acccion
  • 7. ) VALUES(old.nom_curs , old.horas_cur , old.valor_cur, new.nom_curs , new.horas_cur , new.valor_cur, now(), current_user(), new.cod_curs, 'Actualización'); END;// -- PROBAMOS ACTUALIZANDO UN REGISTRO UPDATE curso SET nom_curs = 'Fundamentos de SQL XXX', horas_cur = 40, valor_cur = 1400000 WHERE cod_curs = '250067'; -- CREAMOR EL TRIGGER PARA el delete delimiter // CREATE TRIGGER trg_curso_delete AFTER DELETE ON curso FOR EACH ROW BEGIN -- INSERT INTO auditoria_curso( audi_nom_curs_anterior , audi_horas_cur_anterior , audi_valor_cur_anterior , audi_fechamodificacion , audi_usuario , audi_cod_curs , audi_acccion ) VALUES(old.nom_curs , old.horas_cur , old.valor_cur, now(), current_user(), old.cod_curs, 'Registro Eliminado'); END;// --PROBAMOS ELIMINANDO UN REGISTRO delete from estudiantexcurso where cod_cur_estcur = 289011; -- DELETE FROM curso WHERE cod_curs = '289011'; -- ESTUDIANTE -- Creamos tabla de ESTUDIANTE CREATE TABLE auditoria_estudiante(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY, audi_nom_est_anterior VARCHAR(30) NOT NULL , audi_ape_est_anterior VARCHAR(30) NOT NULL , audi_edad_est_anterior INT (11) NOT NULL , audi_nom_est_nuevo VARCHAR(30) , audi_ape_est_nuevo VARCHAR(30) , audi_edad_est_nuevo INT , audi_fechamodificacion DATETIME , audi_usuario VARCHAR(50) , audi_doc_est
  • 8. VARCHAR(11) NOT NULL , audi_accion VARCHAR(45) NOT NULL ); -- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN delimiter // CREATE TRIGGER trg_estudiante_update BEFORE UPDATE ON estudiante FOR EACH ROW BEGIN -- INSERT INTO auditoria_estudiante( audi_nom_est_anterior , audi_ape_est_anterior , audi_edad_est_anterior , audi_nom_est_nuevo , audi_ape_est_nuevo , audi_edad_est_nuevo , audi_fechamodificacion , audi_usuario , audi_doc_est , audi_accion ) VALUES(old.nom_est , old.ape_est , old.edad_est, new.nom_est , new.ape_est , new.edad_est , now(), current_user(), new.doc_est, 'Actualización'); END;// -- PROBAMOS ACTUALIZANDO UN REGISTRO UPDATE ESTUDIANTE SET nom_est = 'Jonatan XXX', ape_est = 'Ardila XXX', edad_est = 17 WHERE doc_est = '1098098097'; -- CREAMOS EL TRIGGER PARA el delete delimiter // CREATE TRIGGER trg_estudiante_delete AFTER DELETE ON estudiante FOR EACH ROW BEGIN -- INSERT INTO auditoria_estudiante( audi_nom_est_anterior , audi_ape_est_anterior , audi_edad_est_anterior , audi_fechamodificacion , audi_usuario , audi_doc_est , audi_accion ) VALUES(old.nom_est , old.ape_est , old.edad_est, now(), current_user(), old.doc_est, 'Registro Eliminado'); END;//
  • 9. --PROBAMOS ELIMINANDO UN REGISTRO DELETE FROM estudiantexcurso where doc_est_estcur = 91245678; DELETE FROM estudiante WHERE doc_est = '91245678'; mysql>create table Estudiante(doc_est varcharalterEstudiante(11) not null,nom_est varchar(30) not null,ape_est varchar(30) not null,edad_est int not null,primary key(doc_est) ); -- automotores --Creamos tabla de AUTOMOTORES CREATE TABLE auditoria_automotores(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY, audi_Automarca_anterior VARCHAR(30) NOT NULL , audi_Autotipo_anterior INT NOT NULL , audi_Automodelo_anterior INT (11) NOT NULL , audi_Autonumpasajeros_anterior INT , audi_Autocilindraje_anterior INT , audi_Autonumchasis_anterior VARCHAR(30) , audi_Automarca_nuevo VARCHAR(30) , audi_Autotipo_nuevo INT , audi_Automodelo_nuevo INT (11) , audi_Autonumpasajeros_nuevo INT , audi_Autocilindraje_nuevo INT , audi_Autonumchasis_nuevo VARCHAR(30) , x DATETIME , audi_usuario VARCHAR(50) , audi_autoplaca VARCHAR(6) NOT NULL , audi_accion VARCHAR(45) NOT NULL ); -- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN delimiter // CREATE TRIGGER trg_automotores_update BEFORE UPDATE ON automotores FOR EACH ROW BEGIN -- INSERT INTO auditoria_automotores( audi_Automarca_anterior , audi_Autotipo_anterior , audi_Automodelo_anterior,
  • 10. audi_Autonumpasajeros_anterior, audi_Autocilindraje_anterior , audi_Autonumchasis_anterior, audi_Automarca_nuevo , audi_Autotipo_nuevo , audi_Automodelo_nuevo , audi_Autonumpasajeros_nuevo , audi_Autocilindraje_nuevo , audi_Autonumchasis_nuevo , audi_fechamodificacion , audi_usuario , audi_autoplaca , audi_accion ) VALUES(old.Automarca, old.Autotipo , old.Automodelo , old.Autonumpasajeros, old.Autocilindraje , old.Autonumchasis , new.Automarca, new.Autotipo , new.Automodelo , new.Autonumpasajeros , new.Autocilindraje, new.Autonumchasis , now(), current_user(), new.autoplaca, 'Actualización'); END;// -- PROBAMOS ACTUALIZANDO UN REGISTRO UPDATE Automotores SET Automarca = 'chevrolet corsa ACTIVE', Autotipo = 1, Automodelo = 2003 , Autonumpasajeros = 8 , Autocilindraje = 1800 , Autonumchasis = 'wywzzz167kk009d45' WHERE autoplaca = 'FLL420'; -- CREAMOR EL TRIGGER PARA el delete delimiter // CREATE TRIGGER trg_automotores_delete AFTER DELETE ON automotores FOR EACH ROW BEGIN -- INSERT INTO auditoria_automotores( audi_Automarca_anterior , audi_Autotipo_anterior , audi_Automodelo_anterior, audi_Autonumpasajeros_anterior, audi_Autocilindraje_anterior , audi_Autonumchasis_anterior, audi_usuario , audi_autoplaca , audi_fechamodificacion , audi_accion ) VALUES(old.Automarca,old.Autotipo , old.Automodelo , old.Autonumpasajeros, old.Autocilindraje , old.Autonumchasis ,
  • 11. now(), current_user(), old.autoplaca, 'Registro Eliminado'); END;// --PROBAMOS ELIMINANDO UN REGISTRO DELETE FROM aseguramientos where aseplaca = 'KJQ920'; DELETE FROM automotores WHERE autoplaca = 'KJQ920'; select * from auditoria_automotores; -- aseguramientos -- Creamos tabla de ASEGURAMIENTOS CREATE TABLE auditoria_Aseguramientos(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY, audi_asefechainicio_anterior DATE NOT NULL , audi_asefechaexpiracion_anterior DATE NOT NULL , audi_asevaloraegurado_anterior INT NOT NULL , audi_aseestado_anterior VARCHAR(30) NOT NULL , audi_asecosto_anterior INT NOT NULL , audi_aseplaca_anterior VARCHAR(20) NOT NULL , audi_asefechainicio_nuevo DATE , audi_asefechaexpiracion_nuevo DATE , audi_asevaloraegurado_nuevo INT , audi_aseestado_nuevo VARCHAR(30) , audi_asecosto_nuevo INT , audi_aseplaca_nuevo VARCHAR(20) , audi_fechamodificacion DATETIME , audi_usuario VARCHAR(50) , audi_asecodigo INT NOT NULL , audi_accion VARCHAR(45) NOT NULL ); -- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN delimiter // CREATE TRIGGER trg_aseguramientos_update BEFORE UPDATE ON aseguramientos FOR EACH ROW
  • 12. BEGIN -- INSERT INTO auditoria_aseguramientos( audi_asefechainicio_anterior , audi_asefechaexpiracion_anterior , audi_asevaloraegurado_anterior , audi_aseestado_anterior , audi_asecosto_anterior , audi_aseplaca_anterior , audi_asefechainicio_nuevo , audi_asefechaexpiracion_nuevo , audi_asevaloraegurado_nuevo , audi_aseestado_nuevo , audi_asecosto_nuevo , audi_aseplaca_nuevo , audi_fechamodificacion , audi_usuario , audi_asecodigo , audi_accion ) VALUES(old.asefechainicio, old.asefechaexpiracion , old.asevalorasegurado , old.aseestado, old.asecosto, old.aseplaca, new.asefechainicio, new.asefechaexpiracion , new.asevalorasegurado , new.aseestado , new.asecosto, new.aseplaca, now(), current_user(), new.asecodigo , 'Actualización'); END;// -- PROBAMOS ACTUALIZANDO UN REGISTRO UPDATE aseguramientos SET asefechainicio = '2012-10-10', asefechaexpiracion = '2013-10-30', asevalorasegurado = 80000000, aseestado = 'Vigente', asecosto = 700000, aseplaca ='FLL420' WHERE asecodigo = '2'; -- CREAMOS EL TRIGGER PARA el delete delimiter // CREATE TRIGGER trg_aseguramientos_delete AFTER DELETE ON aseguramientos FOR EACH ROW BEGIN -- INSERT INTO auditoria_aseguramientos( audi_asefechainicio_anterior , audi_asefechaexpiracion_anterior ,
  • 13. audi_asefechaexpiracion_anterior , audi_asevaloraegurado_anterior , audi_aseestado_anterior , audi_asecosto_anterior , audi_aseplaca_anterior , audi_fechamodificacion , audi_usuario , audi_asecodigo , audi_accion ) VALUES(old.asefechainicio , old.asefechaexpiracion , old.asevalorasegurado, old.aseestado, old.asecosto, old.aseplaca, now(), current_user(), old.asecodigo, 'Registro Eliminado'); END;// --PROBAMOS ELIMINANDO UN REGISTRO DELETE FROM aseguramientos WHERE asecodigo = '2'; -- incidentes --Creamos tabla de INCIDENTES CREATE TABLE auditoria_incidentes(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY, audi_incifecha_anterior DATE NOT NULL , audi_inciplaca_anterior VARCHAR(6) NOT NULL , audi_incilugar_anterior VARCHAR(40) NOT NULL , audi_incicantheridos_anterior INT NOT NULL , audi_incicanfatalidades_anterior INT NOT NULL , audi_incicanautosinvolucrados_anterior INT NOT NULL , audi_incifecha_nuevo DATE , audi_inciplaca_nuevo VARCHAR(6) , audi_incilugar_nuevo VARCHAR(40) , audi_incicantheridos_nuevo INT , audi_incicanfatalidades_nuevo INT , audi_incicanautosinvolucrados_nuevo INT ,
  • 14. audi_fechamodificacion DATETIME , audi_usuario VARCHAR(50) , audi_incicodigo INT NOT NULL , audi_accion VARCHAR(45) NOT NULL ); -- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN delimiter // CREATE TRIGGER trg_incidentes_update BEFORE UPDATE ON incidentes FOR EACH ROW BEGIN -- INSERT INTO auditoria_incidentes(audi_incifecha_anterior , audi_inciplaca_anterior , audi_incilugar_anterior , audi_incicantheridos_anterior , audi_incicanfatalidades_anterior , audi_incicanautosinvolucrados_anterior , audi_incifecha_nuevo , audi_inciplaca_nuevo , audi_incilugar_nuevo , audi_incicantheridos_nuevo , audi_incicanfatalidades_nuevo , audi_incicanautosinvolucrados_nuevo , audi_fechamodificacion , audi_usuario , audi_incicodigo , audi_accion ) VALUES(old.incifecha , old.inciplaca , old.incilugar, old.incicantheridos , old.incicanfatalidades,old.incicanautosinvolucrados, new.incifecha , new.inciplaca , new.incilugar , new.incicantheridos, new.incicanfatalidades,new.incicanautosinvolucrados, now(), current_user(), new.incicodigo, 'Actualización'); END;// -- PROBAMOS ACTUALIZANDO UN REGISTRO UPDATE incidentes SET incifecha = '2012-11-11', inciplaca = 'FLL420', incilugar = 'San Gil', incicantheridos = 2, incicanfatalidades = 3, incicanautosinvolucrados = 4 WHERE incicodigo = '1';
  • 15. -- CREAMOS EL TRIGGER PARA el delete delimiter // CREATE TRIGGER trg_auditoria_incidentes_delete AFTER DELETE ON incidentes FOR EACH ROW BEGIN -- INSERT INTO auditoria_incidentes(audi_incifecha_anterior , audi_inciplaca_anterior , audi_incilugar_anterior , audi_incicantheridos_anterior , audi_incicanfatalidades_anterior , audi_incicanautosinvolucrados_anterior , audi_fechamodificacion , audi_usuario , audi_incicodigo , audi_accion ) VALUES(old.incifecha , old.inciplaca , old.incilugar, old.incicantheridos , old.incicanfatalidades,old.incicanautosinvolucrados, now(), current_user(), old.incicodigo, 'Registro Eliminado'); END;// --PROBAMOS ELIMINANDO UN REGISTRO DELETE FROM INCIDENTES where incicodigo = 3; --Solucion_Laboratorio_LenguajeTransaccional.txt