Vous êtes sur la page 1sur 16

AP6-AA2-EV1-USAR LENGUAJE TRANSACCIONAL SOBRE LA BASE DE DATOS

ANDREA NATALY VALDERRAMA GARCÍA


FICHA 1565041
GRUPO 8

TECNÓLOGO EN ANÁLISIS Y DESARROLLO DE SISTEMAS DE INFORMACIÓN,


ADSI, SENA
MEDELLÍN
2018

1
AP6-AA2-EV1-USAR LENGUAJE TRANSACCIONAL SOBRE LA BASE DE
DATOS

HERRAMIENTA MYSQL WORKBENCH


1. Construya los siguientes procedimientos almacenados para inserción de registros:

TABLA PROFESOR
DESC PROFESOR;
USE laboratorio_sql;
CREATE PROCEDURE INSERTARPROFESOR(IDENTIFICACION
varchar(11),NOMBRES varchar(30),APELLIDOS varchar(30),CATEGORIAS
int(11),SALARIOS int(11))
INSERT INTO profesor(doc_prof,nom_prof,ape_prof,cate_prof,sal_prof) values
(IDENTIFICACION,NOMBRES,APELLIDOS,CATEGORIAS,SALARIOS);
CALL INSERTARPROFESOR ('11304480','ANDRES','VELEZ',03,780000);

TABLA CURSO
DESC curso;
USE laboratorio_sql;
CREATE PROCEDURE INSERTARCURSO(CODIGO int(11),NOMBRE
varchar(100),HORAS int(11),VALOR int(11))
INSERT INTO curso (cod_curs,nom_curs,horas_cur,valor_cur) values
(CODIGO,NOMBRE,HORAS,VALOR);

TABLA ESTUDIANTE
DESC estudiante;
USE laboratorio_sql;
CREATE PROCEDURE INSERTARESTUDIANTE(IDENTIFICACION
varchar(11),NOMBRES varchar(30),APELLIDOS varchar(30),EDAD int(11))

2
INSERT INTO estudiante (doc_est,nom_est,ape_est,edad_est) values
(IDENTIFICACION,NOMBRES,APELLIDOS,EDAD);

TABLA ESTUDIANTEXCURSO
DESC estudiantexcurso;
USE laboratorio_sql;
CREATE PROCEDURE INSERTARESTUDIANTEXCURSO(CODIGO
int(11),IDENTIFICACION varchar(11),FECHA DATE)
INSERT INTO estudiantexcurso (cod_cur_estcur,doc_est_estcur,fech_ini_estcur) values
(CODIGO,IDENTIFICACION,FECHA);
TABLA CLIENTE
DESC cliente;
USE laboratorio_sql;
CREATE PROCEDURE INSERTARCLIENTE(IDENTIFICACION
varchar(11),NOMBRE varchar(30),APELLIDO varchar(30),DIRECCION
varchar(100),DEO varchar(20),MES varchar(10))
INSERT INTO cliente (id_cli,nom_cli,ape_cli,dir_cli,deo_cli,mes_cum_cli) values
(IDENTIFICACION,NOMBRE,APELLIDO,DIRECCION,DEO,MES);

TABLA ARTICULO
DESC articulo;
USE laboratorio_sql;
CREATE PROCEDURE INSERTARTICULO(IDENTIFICACION int(11),TITULO
varchar(100),AUTOR varchar(100),EDITORIAL varchar(300),PRECIO int(11))
INSERT INTO articulo (id_art,tit_art,aut_art,edi_art,prec_art) values
(IDENTIFICACION,TITULO,AUTOR,EDITORIAL,PRECIO);

TABLA PEDIDO
DESC pedido;

3
USE laboratorio_sql;
CREATE PROCEDURE INSERTARPEDIDO(IDENTIFICACION int(11),CLIENTE
varchar(11),FECHA DATE,VALOR int(11))
INSERT INTO pedido (id_ped,id_cli_ped,fec_ped,val_ped) values
(IDENTIFICACION,CLIENTE,FECHA,VALOR);

TABLA COMPAÑÍA
DESC compañia;
USE laboratorio_sql;
CREATE PROCEDURE INSERTARCOMPAÑIA(NIT varchar(11),NOMBRE
varchar(30),FUNDACION int(11),REPRESENTANTE varchar(100))
INSERT INTO pedido(comnit,comnombre,comañofun,comreplegal) values
(NIT,NOMBRE,FUNDACION,REPRESENTANTE);

TABLA TIPOSAUTOMOTORES
DESC tiposautomotores;
USE laboratorio_sql;
CREATE PROCEDURE INSERTARTIPOSAUTOMOTORES(TIPO int(11),NOMBRE
varchar(30))
INSERT INTO tiposautomotores(autotipo,autnombre) values (TIPO,NOMBRE);

TABLA ASEGURAMIENTOS
DESC aseguramientos;
USE laboratorio_sql;
CREATE PROCEDURE INSERTARASEGURAMIENTOS(CODIGO int(11),INICIO
DATE,EXPIRACION DATE,VALOR int(11),ESTADO varchar(45),COSTO
int(11),PLACA varchar(20))
INSERT INTO
aseguramientos(asecodigo,Asefechainicio,asefechaexpiracion,asefechavalorasegurado,Asee
stado,Asecosto,Aseplaca) values
(CODIGO,INICIO,EXPIRACION,VALOR,ESTADO,COSTO,PLACA);

4
TABLA INCIDENTES
DESC incidentes;
USE laboratorio_sql;
CREATE PROCEDURE INSERTARINCIDENTES(CODIGO int(11),FECHA
DATE,PLACA varchar(6),LUGAR varchar(40),HERIDOS int(11),FATALIDADES
int(11),INVOLUCRADOS int(11))
INSERT INTO
incidentes(Incicodigo,incifecha,Inciplaca,incilugar,incicantheridos,incicanfatalidades,incica
nautosinvolucrados) values
(CODIGO,FECHA,PLACA,LUGAR,HERIDOS,FATALIDADES,INVOLUCRADOS);

2. PROCEDIMIENTOS ALMACENADOS CON PARÁMETROS.

• Muestre los salarios de los profesores ordenados por categoría.


USE laboratorio_sql;
CREATE PROCEDURE LISTARSALARIOS ()
SELECT cate_prof,sal_prof FROM profesor ORDER BY cate_prof;
CALL LISTARSALARIOS();

• Muestre los cursos cuyo valor sea mayor a $500.000.


USE laboratorio_sql;
CREATE PROCEDURE LISTARCURSOS()
SELECT nom_curs FROM curso WHERE valor_cur > 500000;

• Visualizar el nombre, apellido y dirección de todos aquellos clientes que hayan


realizado un pedido el día 25 /02/2012.
USE laboratorio_sql;
CREATE PROCEDURE LISTARCLIENTES()

5
SELECT nom_cli,ape_cli,dir_cli FROM cliente INNER JOIN pedido ON id_cli_ped = id_cli
WHERE fec_ped = '2012-02-25';

• Listar todos los pedidos realizados incluyendo el nombre del artículo.


USE laboratorio_sql;
CREATE PROCEDURE LISTARPEDIDOS()
SELECT tit_art FROM articuloxpedido INNER JOIN articulo ON id_art_artped = id_art ;

• Listar todos los datos de los automotores cuya póliza expira en octubre de 2013, este
reporte debe visualizar la placa, el modelo, la marca, número de pasajeros, cilindraje
nombre de automotor, el valor de la póliza y el valor asegurado.
USE laboratorio_sql;
CREATE PROCEDURE LISTARAUTOMOTORES()
SELECT
Aseplaca,
Automodelo,
Automarca,
Autonumpasajeros,
Autocilindraje,
Asefechavalorasegurado,
Asecosto
FROM
aseguramientos
INNER JOIN
automotores ON aseplaca = autoplaca
WHERE
asefechaexpiracion = '2013-10-30';

6
3. PROCEDIMIENTOS ALMACENADOS CON PARÁMETROS.
• Muestre todos los campos de la tabla curso en orden ascendente según el valor.
USE laboratorio_sql;
CREATE PROCEDURE LISTARDATOSCURSO()
SELECT * FROM curso ORDER BY valor_cur ASC;
• Mostrar los pedidos con los respectivos artículos (código, nombre, valor y cantidad
pedida).
USE laboratorio_sql;
CREATE PROCEDURE LISTARPEDIDOXART()
SELECT id_ped_artped,id_art,tit_art,prec_art,can_art_artped FROM articuloxpedido
INNER JOIN articulo ON id_art_artped=id_art;
• Visualizar los datos de las empresas fundadas entre el año 1991 y 1998.
USE laboratorio_sql;
CREATE PROCEDURE LISTARCOMPAÑIAS()
SELECT * FROM compañia
WHERE comañofun BETWEEN 1991 AND 1998;
• Visualizar todos los clientes organizados por apellido.
USE laboratorio_sql;
CREATE PROCEDURE LISTARAPELLIDOSCLIENTES()
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.
USE laboratorio_sql;
CREATE PROCEDURE LISTARINCIDENTE1()
SELECT
Inciplaca, Asefechainicio,Asecosto,Aseestado,asefechavalorasegurado

7
FROM incidentes
INNER JOIN aseguramientos ON Inciplaca = Aseplaca
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.
USE laboratorio_sql;
CREATE PROCEDURE LISTARINCIDENTEFLL420()
SELECT
incifecha,
incilugar,
incicantheridos,
Asefechainicio,
asefechaexpiracion,
asefechavalorasegurado
FROM incidentes
INNER JOIN aseguramientos ON Inciplaca = Aseplaca
WHERE Inciplaca = 'FLL420'

4 – 5 . FUNCIONES.
• Cuente el número de estudiantes cuya edad sea mayor a 22.
delimiter //
CREATE FUNCTION CONTARESTUDIANTES() RETURNS VARCHAR(20)
DETERMINISTIC
BEGIN
DECLARE cantidades varchar(20);
select count(doc_est) INTO cantidades from estudiante where edad_est > 22;
RETURN cantidades;

8
END
//
select CONTARESTUDIANTES();
• Muestre el nombre y la edad del estudiante más joven.
delimiter //
CREATE FUNCTION LISTARESTUDIANTEJOVEN() RETURNS VARCHAR(40)
DETERMINISTIC
BEGIN
DECLARE estudiante varchar(40);
SELECT concat(nom_est,' ',MIN(edad_est)) INTO estudiante FROM estudiante;
RETURN estudiante;
END
//
select LISTARESTUDIANTEJOVEN();

• Calcule el valor promedio de los cursos cuyas horas sean mayores a 40.
delimiter //
CREATE FUNCTION LISTARVALORCURSO() RETURNS VARCHAR(40)
DETERMINISTIC
BEGIN
DECLARE cantidad varchar(40);
SELECT AVG(valor_cur) INTO cantidad FROM curso WHERE horas_cur > 40;
RETURN cantidad;
END
//
• Obtener el sueldo promedio de los profesores de la categoría 1.
delimiter //

9
CREATE FUNCTION LISTARSUELDOPROFESOR() RETURNS VARCHAR(40)
DETERMINISTIC
BEGIN
DECLARE PROMEDIO varchar(40);
SELECT AVG(sal_prof) INTO PROMEDIO FROM profesor WHERE cate_prof = 1;
RETURN PROMEDIO;
END
//
• Muestre el nombre del profesor con menor sueldo.
delimiter //
CREATE FUNCTION LISTARNOMBREPROFESOR() RETURNS VARCHAR(40)
DETERMINISTIC
BEGIN
DECLARE nombre varchar(40);
SELECT nom_prof,MIN(sal_prof) INTO nombre FROM profesor;
RETURN nombree;
END
//
• Visualizar el nombre del cliente, la fecha y el valor del pedido más costoso.
delimiter //
CREATE FUNCTION LISTARPEDIDOCOSTOSO() RETURNS VARCHAR(40)
DETERMINISTIC
BEGIN
DECLARE COSTOSO varchar(40);
SELECT nom_cli,fec_ped,max(val_ped) INTO COSTOSO FROM pedido INNER JOIN
cliente ON id_cli_ped = id_cli;
RETURN COSTOSO;

10
END
//
• Mostrar cuantos artículos se tienen de cada editorial.
delimiter //
CREATE FUNCTION LISTAREDITORIALART() RETURNS VARCHAR(40)
DETERMINISTIC
BEGIN
DECLARE EDITORIAL varchar(40);
SELECT COUNT(edi_art),edi_art INTO EDITORIAL FROM articulo GROUP BY edi_art;
RETURN EDITORIAL;
END
//
• Visualizar todos los datos de la póliza más costosa.
delimiter //
CREATE FUNCTION LISTARPOLIZACOSTOSA() RETURNS VARCHAR(40)
DETERMINISTIC
BEGIN
DECLARE POLIZA varchar(40);
SELECT MAX(asefechavalorasegurado),
asecodigo,
Asefechainicio,
Aseestado,
Asecosto,
Aseplaca
INTO POLIZA FROM aseguramientos;
RETURN POLIZA;
END

11
//
• Visualizar los incidentes con el mínimo número de autos involucrados, de este
incidente visualizar el estado de la póliza y el valor asegurado.
delimiter //
CREATE FUNCTION LISTAINCIDENTEMIN() RETURNS VARCHAR(40)
DETERMINISTIC
BEGIN
DECLARE MINIMOVEHI varchar(40);
SELECT
MIN(incicanautosinvolucrados),
Aseestado,
asefechavalorasegurado
INTO MINIMOVEHI FROM
incidentes
INNER JOIN
aseguramientos ON Inciplaca = Aseplaca;
RETURN MINIMOVEHI;
END
//
• Visualizar los datos de la póliza cuyo valor asegurado es el más costoso, este reporte
además de visualizar todos los datos de la póliza, debe presentar todos los datos del
vehículo que tiene dicha póliza.
delimiter //
CREATE FUNCTION LISTAPOLIZAUTO() RETURNS VARCHAR(40)
DETERMINISTIC
BEGIN
DECLARE POLIAUTO varchar(40);
SELECT MAX(asefechavalorasegurado), ase.*, aut.*

12
INTO POLIAUTO FROM aseguramientos ase
INNER JOIN automotores aut ON Aseplaca = autoplaca;
RETURN POLIAUTO;
END
//
6. TRIGGERS O DISPARADORES PARA CONTROLAR LA ACTUALIZACIÓN Y
BORRADO DE REGISTROS.
TABLA AUTOMOTORES
CREATE TABLE `Audi_automotores` (
`id_auditoria` INT NOT NULL,
`AutomarcaNuevo` VARCHAR(30) NULL,
`AutotipoNuevo` INT(11) NULL,
`AutomodeloNuevo` INT(11) NULL,
`AutonumpasajerosNuevo` INT(11) NULL,
`AutocilindrajeNuevo` INT(11) NULL,
`AutonumchasisNuevo` VARCHAR(20) NULL,
`AutomarcaAnterior` VARCHAR(30) NULL,
`AutotipoAnterior` INT(11) NULL,
`AutomodeloAnterior` INT(11) NULL,
`AutonumpasajerosAnt` INT(11) NULL,
`AutocilindrajeAnt` INT(11) NULL,
`AutonumchasisAnt` VARCHAR(20) NULL,
`Audi_usuario` VARCHAR(45) NULL,
`Audi_accion` VARCHAR(45) NULL,
`Fecha_modificacion` DATETIME NULL,
`Automarca` VARCHAR(30) NULL,
`Autotipo` INT(11) NULL,

13
`Automodelo` INT(11) NULL,
`Autonumpasajeros` INT(11) NULL,
`Autocilindraje` INT(11) NULL,
`Autonumchasis` VARCHAR(20) NULL,
`autoplaca` VARCHAR(6) NULL,
PRIMARY KEY (`id_auditoria`))
ENGINE = InnoDB;

CREATE TRIGGER auditoria_modificarAutomotores BEFORE UPDATE on automotores


for each row
INSERT INTO audi_automotores
(autoplacaNuevo,AutomarcaNuevo,AutotipoNuevo,AutomodeloNuevo,Autonumpasajeros
Nuevo,AutocilindrajeNuevo,AutonumchasisNuevo,
autoplacaAnterior,AutomarcaAnterior,AutotipoAnterior,AutomodeloAnterior,Autonumpas
ajerosAnt,AutocilindrajeAnt,AutonumchasisAnt,
Audi_usuario,Audi_accion,Fecha_modificacion)
values
(old.autoplaca,old.Automarca,old.Autotipo,old.Automodelo,old.Autonumpasajeros,old.Aut
ocilindraje,old.Autonumchasis,
new.autoplaca,new.Automarca,new.Autotipo,new.Automodelo,new.Autonumpasajeros,new
.Autocilindraje,new.Autonumchasis,
now(),current_user(),new.autoplaca,'Actualizacion');

CREATE TRIGGER auditoria_eliminarAutomotores AFTER DELETE ON automotores


for each row
insert into audi_automotores
(autoplacaNuevo,AutomarcaNuevo,AutotipoNuevo,AutomodeloNuevo,Autonumpasajeros
Nuevo,AutocilindrajeNuevo,AutonumchasisNuevo,

14
autoplacaAnterior,AutomarcaAnterior,AutotipoAnterior,AutomodeloAnterior,Autonumpas
ajerosAnt,AutocilindrajeAnt,AutonumchasisAnt,
Audi_usuario,Audi_accion,Fecha_modificacion)
values
(old.autoplaca,old.Automarca,old.Autotipo,old.Automodelo,old.Autonumpasajeros,old.Aut
ocilindraje,old.Autonumchasis,
now(),current_user(),new.autoplaca,'RegistroEliminado');

15
BIBLIOGRAFÍA

“LENGUAJE TRANSACCIONAL EN SQL”, SENA VIRTUAL OA.


https://senaintro.blackboard.com/bbcswebdav/pid-98493358-dt-content-rid-
107471623_4/institution/semillas/228106_2_VIRTUAL-
2015/contenido/oaaps/oaap6/aa2/oa_lenguajetransaccional/index.htmlV
“BASE DE DATOS MYSQL” Objeto de aprendizaje Etapa Desarrollo,Sena virtual
https://senaintro.blackboard.com/bbcswebdav/pid-98493340-dt-content-rid-
107472019_4/institution/semillas/228106_2_VIRTUAL-
2015/contenido/oaaps/oaap6/aa1/tutorial_mysql/index.html

16

Vous aimerez peut-être aussi