SlideShare una empresa de Scribd logo
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

Ejemplo de Trigger en Mysql
Ejemplo de Trigger en MysqlEjemplo de Trigger en Mysql
Dominando las funciones de ventana (window functions) en TSQL
Dominando las funciones de ventana (window functions) en TSQLDominando las funciones de ventana (window functions) en TSQL
Dominando las funciones de ventana (window functions) en TSQL
SpanishPASSVC
 
Taller: Prueba Unitaria con JUnit en NetBeans
Taller: Prueba Unitaria con JUnit en NetBeansTaller: Prueba Unitaria con JUnit en NetBeans
Taller: Prueba Unitaria con JUnit en NetBeans
Emerson Garay
 
8.ejercicios SQL access
8.ejercicios SQL access8.ejercicios SQL access
8.ejercicios SQL access
Marcelo Herrera
 
SISTEMA DE FACTURACION (Ejemplo desarrollado)
SISTEMA DE FACTURACION (Ejemplo desarrollado)SISTEMA DE FACTURACION (Ejemplo desarrollado)
SISTEMA DE FACTURACION (Ejemplo desarrollado)
Darwin Durand
 
Ejercicio privilegios
Ejercicio privilegiosEjercicio privilegios
Ejercicio privilegios
María Luisa Velasco
 
Procedimientos almacenados en MySQL
Procedimientos almacenados en MySQLProcedimientos almacenados en MySQL
Procedimientos almacenados en MySQL
Miguel Angel Rivera Robledo
 
Estructura de una base de datos
Estructura de una base de datosEstructura de una base de datos
Estructura de una base de datos
Zcnp1234
 
Seguridad sql server
Seguridad sql serverSeguridad sql server
Seguridad sql server
Jorge Luis Becerra Urquiza
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos
josecuartas
 
Ejercicio completo colegio
Ejercicio completo colegioEjercicio completo colegio
Ejercicio completo colegio
gusanchez2668
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
Vicente Alberca
 
pl/sql Procedure
pl/sql Procedurepl/sql Procedure
pl/sql Procedure
Pooja Dixit
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
Cesar Oswaldo Osorio Agualongo
 
Codigo para crear la base de datos
Codigo para crear la base de datosCodigo para crear la base de datos
Codigo para crear la base de datos
Alvaro Cardona
 
Guía de ejercicios de normalizacion
Guía de ejercicios de normalizacionGuía de ejercicios de normalizacion
Guía de ejercicios de normalizacion
Rodrigo Alzamora Mendieta
 
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...
rasave
 
Tutorial Teorico-Practico Sql server 2000 (233 paginas)
Tutorial Teorico-Practico Sql server 2000 (233 paginas)Tutorial Teorico-Practico Sql server 2000 (233 paginas)
Tutorial Teorico-Practico Sql server 2000 (233 paginas)
Martin Murciego
 
MySQL
MySQLMySQL
Trigger Data Base
Trigger Data BaseTrigger Data Base
Trigger Data Base
Roberto Ramírez Amaya
 

La actualidad más candente (20)

Ejemplo de Trigger en Mysql
Ejemplo de Trigger en MysqlEjemplo de Trigger en Mysql
Ejemplo de Trigger en Mysql
 
Dominando las funciones de ventana (window functions) en TSQL
Dominando las funciones de ventana (window functions) en TSQLDominando las funciones de ventana (window functions) en TSQL
Dominando las funciones de ventana (window functions) en TSQL
 
Taller: Prueba Unitaria con JUnit en NetBeans
Taller: Prueba Unitaria con JUnit en NetBeansTaller: Prueba Unitaria con JUnit en NetBeans
Taller: Prueba Unitaria con JUnit en NetBeans
 
8.ejercicios SQL access
8.ejercicios SQL access8.ejercicios SQL access
8.ejercicios SQL access
 
SISTEMA DE FACTURACION (Ejemplo desarrollado)
SISTEMA DE FACTURACION (Ejemplo desarrollado)SISTEMA DE FACTURACION (Ejemplo desarrollado)
SISTEMA DE FACTURACION (Ejemplo desarrollado)
 
Ejercicio privilegios
Ejercicio privilegiosEjercicio privilegios
Ejercicio privilegios
 
Procedimientos almacenados en MySQL
Procedimientos almacenados en MySQLProcedimientos almacenados en MySQL
Procedimientos almacenados en MySQL
 
Estructura de una base de datos
Estructura de una base de datosEstructura de una base de datos
Estructura de una base de datos
 
Seguridad sql server
Seguridad sql serverSeguridad sql server
Seguridad sql server
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos
 
Ejercicio completo colegio
Ejercicio completo colegioEjercicio completo colegio
Ejercicio completo colegio
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
pl/sql Procedure
pl/sql Procedurepl/sql Procedure
pl/sql Procedure
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
 
Codigo para crear la base de datos
Codigo para crear la base de datosCodigo para crear la base de datos
Codigo para crear la base de datos
 
Guía de ejercicios de normalizacion
Guía de ejercicios de normalizacionGuía de ejercicios de normalizacion
Guía de ejercicios de normalizacion
 
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...
 
Tutorial Teorico-Practico Sql server 2000 (233 paginas)
Tutorial Teorico-Practico Sql server 2000 (233 paginas)Tutorial Teorico-Practico Sql server 2000 (233 paginas)
Tutorial Teorico-Practico Sql server 2000 (233 paginas)
 
MySQL
MySQLMySQL
MySQL
 
Trigger Data Base
Trigger Data BaseTrigger Data Base
Trigger Data Base
 

Similar a Solucion laboratorio lenguaje_transaccional

Trabajo final
Trabajo finalTrabajo final
Trabajo final
gmr979
 
Ejercicios resueltos de_pl-sql
Ejercicios resueltos de_pl-sqlEjercicios resueltos de_pl-sql
Ejercicios resueltos de_pl-sql
MaraMagdalenaBlancoR
 
7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server
Corfapo
 
Programacin mysqlejercicios439-131027071437-phpapp01
Programacin mysqlejercicios439-131027071437-phpapp01Programacin mysqlejercicios439-131027071437-phpapp01
Programacin mysqlejercicios439-131027071437-phpapp01
MaraMagdalenaBlancoR
 
Manualitosqlserver
ManualitosqlserverManualitosqlserver
Manualitosqlserver
Oca srl
 
Replica
ReplicaReplica
Replica
FERNANDO
 
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
Titiushko 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 sql
Titiushko Jazz
 
Base datos mysql y visual basic
Base datos mysql y visual basicBase datos mysql y visual basic
Base datos mysql y visual basic
Rafael Tobar Jame
 
Taller De PráCtica 4
Taller De PráCtica 4Taller De PráCtica 4
Taller De PráCtica 4
FernandoRamirez
 
Taller De PráCtica 4
Taller De PráCtica 4Taller De PráCtica 4
Taller De PráCtica 4
FernandoRamirez
 
Taller De PráCtica 4
Taller De PráCtica 4Taller De PráCtica 4
Taller De PráCtica 4
FernandoRamirez
 
Taller PráCtica 4
Taller PráCtica 4Taller PráCtica 4
Taller PráCtica 4
FernandoRamirez
 
CreacióN De Vistas
CreacióN De VistasCreacióN De Vistas
CreacióN De Vistas
blaze0002
 
Tarea 3
Tarea 3Tarea 3
Tarea 3
Diego Nauto
 
Cursores
CursoresCursores
Cursores
Richard Castro
 
Practica Seis Delphi
Practica Seis DelphiPractica Seis Delphi
Practica Seis Delphi
Jose Ponce
 
Herencia clase
Herencia claseHerencia clase
Herencia clase
Jose Antonio
 
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 POO
Amado Arcaya
 

Similar a Solucion laboratorio lenguaje_transaccional (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 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
 
Taller PráCtica 4
Taller PráCtica 4Taller PráCtica 4
Taller 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

William James funcionalismo datos relevantes.pdf
William James funcionalismo datos relevantes.pdfWilliam James funcionalismo datos relevantes.pdf
William James funcionalismo datos relevantes.pdf
IvanNievesEspinoza
 
resumen de manual de organizacion y funciones de TI
resumen de manual de organizacion y funciones de TIresumen de manual de organizacion y funciones de TI
resumen de manual de organizacion y funciones de TI
riveroarlett5b
 
AVANCE TECNOLOGICO AREAS DE IMPACTO DEL AVANCE TECNOLOGICO
AVANCE TECNOLOGICO AREAS DE IMPACTO DEL AVANCE TECNOLOGICOAVANCE TECNOLOGICO AREAS DE IMPACTO DEL AVANCE TECNOLOGICO
AVANCE TECNOLOGICO AREAS DE IMPACTO DEL AVANCE TECNOLOGICO
ronaldomarca1999
 
INTELIGENCIA ARTIFICIAL monografia02.pdf
INTELIGENCIA ARTIFICIAL monografia02.pdfINTELIGENCIA ARTIFICIAL monografia02.pdf
INTELIGENCIA ARTIFICIAL monografia02.pdf
YulEz1
 
vivienda segura concreto, construcción y métodos
vivienda segura concreto, construcción y métodosvivienda segura concreto, construcción y métodos
vivienda segura concreto, construcción y métodos
DilmerCarranza
 
UGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptx
UGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptxUGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptx
UGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptx
Mayra798665
 
Presentación simple corporativa degradado en violeta blanco.pptx
Presentación simple corporativa degradado en violeta blanco.pptxPresentación simple corporativa degradado en violeta blanco.pptx
Presentación simple corporativa degradado en violeta blanco.pptx
eleandroth
 
MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"
MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"
MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"
darkskills2011
 
ANA0003227-lagunas.pdfñlñlñlñlñññlñlllll
ANA0003227-lagunas.pdfñlñlñlñlñññlñlllllANA0003227-lagunas.pdfñlñlñlñlñññlñlllll
ANA0003227-lagunas.pdfñlñlñlñlñññlñlllll
eliassalascolonia43
 
Informe fina mini bibliotecacomunitaria .docx
Informe fina mini bibliotecacomunitaria .docxInforme fina mini bibliotecacomunitaria .docx
Informe fina mini bibliotecacomunitaria .docx
mirimerlos5
 
PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020
PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020
PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020
hugowagner811
 
Plan de Compensación Dxn Internacional peru pdf
Plan de Compensación Dxn Internacional peru pdfPlan de Compensación Dxn Internacional peru pdf
Plan de Compensación Dxn Internacional peru pdf
agustincarranza11
 
REPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdf
REPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdfREPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdf
REPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdf
IrapuatoCmovamos
 
Reporte_de_Accidentes_y_Criterio_de_clasificacion_1 (1).pptx
Reporte_de_Accidentes_y_Criterio_de_clasificacion_1 (1).pptxReporte_de_Accidentes_y_Criterio_de_clasificacion_1 (1).pptx
Reporte_de_Accidentes_y_Criterio_de_clasificacion_1 (1).pptx
ZuppaSRL
 
MI CECTOR POSTE BLANCO - Paián .pdf
MI  CECTOR  POSTE  BLANCO - Paián   .pdfMI  CECTOR  POSTE  BLANCO - Paián   .pdf
MI CECTOR POSTE BLANCO - Paián .pdf
GustavoTello19
 
Informe 13 _ _Software OnLine_ Ofimática, edición y descargas entre otros_.docx
Informe 13 _ _Software OnLine_ Ofimática, edición y descargas entre otros_.docxInforme 13 _ _Software OnLine_ Ofimática, edición y descargas entre otros_.docx
Informe 13 _ _Software OnLine_ Ofimática, edición y descargas entre otros_.docx
francescasansonikoga
 
Libro - Teoria Historia de la Arquitectura
Libro - Teoria Historia de la ArquitecturaLibro - Teoria Historia de la Arquitectura
Libro - Teoria Historia de la Arquitectura
baceg35604
 

Último (17)

William James funcionalismo datos relevantes.pdf
William James funcionalismo datos relevantes.pdfWilliam James funcionalismo datos relevantes.pdf
William James funcionalismo datos relevantes.pdf
 
resumen de manual de organizacion y funciones de TI
resumen de manual de organizacion y funciones de TIresumen de manual de organizacion y funciones de TI
resumen de manual de organizacion y funciones de TI
 
AVANCE TECNOLOGICO AREAS DE IMPACTO DEL AVANCE TECNOLOGICO
AVANCE TECNOLOGICO AREAS DE IMPACTO DEL AVANCE TECNOLOGICOAVANCE TECNOLOGICO AREAS DE IMPACTO DEL AVANCE TECNOLOGICO
AVANCE TECNOLOGICO AREAS DE IMPACTO DEL AVANCE TECNOLOGICO
 
INTELIGENCIA ARTIFICIAL monografia02.pdf
INTELIGENCIA ARTIFICIAL monografia02.pdfINTELIGENCIA ARTIFICIAL monografia02.pdf
INTELIGENCIA ARTIFICIAL monografia02.pdf
 
vivienda segura concreto, construcción y métodos
vivienda segura concreto, construcción y métodosvivienda segura concreto, construcción y métodos
vivienda segura concreto, construcción y métodos
 
UGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptx
UGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptxUGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptx
UGEL SAN MIGUEL SACALE TARJETA ROJA A LA VIOLENCIA.pptx
 
Presentación simple corporativa degradado en violeta blanco.pptx
Presentación simple corporativa degradado en violeta blanco.pptxPresentación simple corporativa degradado en violeta blanco.pptx
Presentación simple corporativa degradado en violeta blanco.pptx
 
MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"
MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"
MONOGRAFIA DEL BUSCADOR YAHOO! APSTI1"A"
 
ANA0003227-lagunas.pdfñlñlñlñlñññlñlllll
ANA0003227-lagunas.pdfñlñlñlñlñññlñlllllANA0003227-lagunas.pdfñlñlñlñlñññlñlllll
ANA0003227-lagunas.pdfñlñlñlñlñññlñlllll
 
Informe fina mini bibliotecacomunitaria .docx
Informe fina mini bibliotecacomunitaria .docxInforme fina mini bibliotecacomunitaria .docx
Informe fina mini bibliotecacomunitaria .docx
 
PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020
PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020
PROCESAMIENTO DIGITAL DE IMAGENES PDS 2020
 
Plan de Compensación Dxn Internacional peru pdf
Plan de Compensación Dxn Internacional peru pdfPlan de Compensación Dxn Internacional peru pdf
Plan de Compensación Dxn Internacional peru pdf
 
REPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdf
REPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdfREPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdf
REPORTE-HEMEROGRÁFICO-MAYO 2024-IRAPUATO.pdf
 
Reporte_de_Accidentes_y_Criterio_de_clasificacion_1 (1).pptx
Reporte_de_Accidentes_y_Criterio_de_clasificacion_1 (1).pptxReporte_de_Accidentes_y_Criterio_de_clasificacion_1 (1).pptx
Reporte_de_Accidentes_y_Criterio_de_clasificacion_1 (1).pptx
 
MI CECTOR POSTE BLANCO - Paián .pdf
MI  CECTOR  POSTE  BLANCO - Paián   .pdfMI  CECTOR  POSTE  BLANCO - Paián   .pdf
MI CECTOR POSTE BLANCO - Paián .pdf
 
Informe 13 _ _Software OnLine_ Ofimática, edición y descargas entre otros_.docx
Informe 13 _ _Software OnLine_ Ofimática, edición y descargas entre otros_.docxInforme 13 _ _Software OnLine_ Ofimática, edición y descargas entre otros_.docx
Informe 13 _ _Software OnLine_ Ofimática, edición y descargas entre otros_.docx
 
Libro - Teoria Historia de la Arquitectura
Libro - Teoria Historia de la ArquitecturaLibro - Teoria Historia de la Arquitectura
Libro - Teoria Historia de la Arquitectura
 

Solucion laboratorio lenguaje_transaccional

  • 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