Está en la página 1de 24

AP6-AA2-Ev1-Usar lenguaje Transaccional sobre la Base de Datos

Analisis y Desarrollo de Sistemas de Informacion (1412862)

Ejercicios:
Utilizando instrucciones SQL, realice las siguientes actividades:
Tomando como referencia, las entidades construidas en el
laboratorio12_SQL:

1. Construya los siguiente procedimientos Almacenados para inserci�n de


registros:
� En MySQL; para las tablas Profesor, Curso, Estudiante,
Estudiantexcurso.

� En MySQL; para las tablas

�Profesor

mysql> use laboratoriosql;


Database changed
mysql> describe profesor;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| Doc_Prof | varchar(11) | NO | PRI | NULL | |
| Nom_Prof | varchar(30) | NO | | NULL | |
| Ape_Prof | varchar(30) | NO | | NULL | |
| Cate_Prof | int(11) | NO | | NULL | |
| Sal_Prof | int(11) | NO | | NULL | |
+-----------+-------------+------+-----+---------+-------+
5 rows in set (0.08 sec)

mysql> select * from profesor;


+------------+-----------+----------+-----------+----------+
| Doc_Prof | Nom_Prof | Ape_Prof | Cate_Prof | Sal_Prof |
+------------+-----------+----------+-----------+----------+
| 1098765789 | Alejandra | Torres | 4 | 1100000 |
| 13826789 | Maritza | Angarita | 1 | 550000 |
| 63502720 | Martha | Rojas | 2 | 690000 |
| 91216904 | Carlos | Perez | 3 | 950000 |
+------------+-----------+----------+-----------+----------+
4 rows in set (0.00 sec)

mysql> delimiter $
mysql> create procedure insertarprofesor (in nombre varchar(150), in apellido
varchar (150), in categoria varchar (150), in salario int (10))
-> begin
-> insert into profesor (nom_prof, ape_prof, cate_prof, sal_prof) values
(nombre, apellido, categoria, salario);
-> end $
Query OK, 0 rows affected (0.28 sec)

� Curso

mysql> use laboratoriosql;


Database changed
mysql> describe curso;
+-----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| Cod_Curs | varchar(6) | NO | PRI | NULL | |
| Nom_Curs | varchar(100) | NO | | NULL | |
| Horas_Cur | int(11) | NO | | NULL | |
| Valor_Cur | int(11) | NO | | NULL | |
+-----------+--------------+------+-----+---------+-------+
4 rows in set (0.03 sec)

mysql> select * from curso;


+----------+-------------------------------+-----------+-----------+
| Cod_Curs | Nom_Curs | Horas_Cur | Valor_Cur |
+----------+-------------------------------+-----------+-----------+
| 149842 | Fundamentos De Bases De Datos | 40 | 500000 |
| 250067 | Fundamentos De Sql | 20 | 700000 |
| 289011 | Manejo De Mysql | 45 | 550000 |
| 345671 | Fundamentos De Oracle | 60 | 3000000 |
+----------+-------------------------------+-----------+-----------+
4 rows in set (0.05 sec)

mysql> delimiter $
mysql> create procedure insertarcurso (in nombre varchar(150), in horas int (10),
in valor int (10))
-> begin
-> insert into profesor (nom_curs, horas_cur, valor_cur) values (nombre, horas,
valor);
-> end $
Query OK, 0 rows affected (0.03 sec)

� Estudiante

mysql> use laboratoriosql;


Database changed
mysql> describe estudiante;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| Doc_Est | varchar(11) | NO | PRI | NULL | |
| Nom_Est | varchar(30) | NO | | NULL | |
| Ape_Est | varchar(30) | NO | | NULL | |
| Edad_Est | int(11) | NO | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.02 sec)

mysql> select * from estudiante;


+------------+--------------+----------+----------+
| Doc_Est | Nom_Est | Ape_Est | Edad_Est |
+------------+--------------+----------+----------+
| 1098098097 | Jonatan | Ardila | 17 |
| 1098765678 | Carlos | Martinez | 19 |
| 63502720 | Maria | Perez | 23 |
| 91245678 | Carlos Jos� | Lopez | 25 |
+------------+--------------+----------+----------+
4 rows in set (0.01 sec)

mysql> delimiter $
mysql> create procedure insertarestudiante (in documento int (3), in nombre
varchar(150), in apellido varchar (150), in edad int (3))
-> begin
-> insert into estudiante (doc_est, nom_est, ape_est, edad_est) values
(documento, nombre, apellido, edad);
-> end $
Query OK, 0 rows affected (0.02 sec)

� Estudiantexcurso

mysql> use laboratoriosql;


Database changed
mysql> describe Estudiantexcurso;
+----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| Cod_Cur_Estcur | varchar(6) | NO | MUL | NULL | |
| Doc_Est_Estcur | varchar(11) | NO | MUL | NULL | |
| Fec_Ini_Estcur | date | NO | | NULL | |
+----------------+-------------+------+-----+---------+-------+
3 rows in set (0.05 sec)

mysql> select * from Estudiantexcurso;


+----------------+----------------+----------------+
| Cod_Cur_Estcur | Doc_Est_Estcur | Fec_Ini_Estcur |
+----------------+----------------+----------------+
| 289011 | 1098765678 | 2011-02-01 |
| 250067 | 63502720 | 2011-03-01 |
| 289011 | 1098098097 | 2011-02-01 |
| 345671 | 63502720 | 2011-04-01 |
+----------------+----------------+----------------+
4 rows in set (0.04 sec)

mysql> delimiter $
mysql> create procedure insertarestudiantexcurso (in codcur int (11), in docest
int(11), in fecha datetime (6))
-> begin
-> insert into estudiantexcurso (cod_cur_estcur, doc_est_estcur,
fec_ini_estcur) values (codcur, docest, fecha);
-> end $
Query OK, 0 rows affected (0.05 sec)

� En ORACLE; para las tablas Cliente, Articulo, Pedido.


� En ORACLE; para las tablas Cliente

create or remplace procedure �INSERTARCLIENTE�


(IdeCliente IN CHAR,
NomCliente IN VARCHAR2,
ApeCliente IN VARCHAR2,
DirCliente IN VARCHAR2,
DepCliente IN VARCHAR2,
CumpleCliente IN VARCHAR2)
is
begin
insert into cliente (id_cli, nom_cli, ape_cli, dir_cli, dep_cli, cum_cli)
values (IdeCliente, NomCliente, ApeCliente, DirCliente, DepCliente, CumpleCliente);

end;
/

� En ORACLE; para las tablas Articulo.


create or remplace procedure �INSERTARARTICULO�
(IdeArticulo IN CHAR,
TitArticulo IN VARCHAR2,
AutArticulo IN VARCHAR2,
EdiArticuloIN VARCHAR2,
PrecArticulo IN CHAR2)

is
begin
insert into cliente (id_art, tit_art, aut_art, edi_art, pre_art)
values (IdeArticulo, TitArticulo, AutArticulo, EdiArticulo, PrecArticulo);

end;
/

� En ORACLE; para las tablas Pedido.

create or remplace procedure �INSERTARPEDIDO�


(IdePedido IN CHAR
IdeCliPedido IN CHAR,
FechaPedido IN DATE,
ValPedido IN VARCHAR2)

is
begin
insert into pedido (id_ped, id_cliped, fec_ped, val_ped)
values (IdePedido, IdeCliPedido, FechaPedido, ValPedido);

end;
/

� En el Motor de su preferencia (ORACLE O MySQL), para las tablas, Compa��a,


TiposAutomotores, Automotores, Aseguramientos,
Incidentes.

� Compa��a

mysql> use laboratoriosql;


Database changed
mysql> describe compania;
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| Comnit | varchar(11) | NO | PRI | NULL | |
| Comnombre | varchar(30) | NO | | NULL | |
| Comanofun | int(11) | NO | | NULL | |
| Comreplegal | varchar(100) | NO | | NULL | |
+-------------+--------------+------+-----+---------+-------+
4 rows in set (0.02 sec)

mysql> select * from compania;


+------------+--------------------+-----------+-----------------------+
| Comnit | Comnombre | Comanofun | Comreplegal |
+------------+--------------------+-----------+-----------------------+
| 8008908902 | Seguros Atlantida | 1998 | Carlos L�pez |
| 8999999991 | Aseguradora Rojas | 1991 | Luis Fernando Rojas |
| 8999999995 | Seguros Del Estado | 2001 | Maria Margarita Perez |
+------------+--------------------+-----------+-----------------------+
3 rows in set (0.03 sec)

mysql> delimiter $
mysql> create procedure insertarcompa�ia (in nit int(15), in nombre varchar (150),
in a�ofundacion datetime (6), in representante varchar (45))
-> begin
-> insert into compa�iacompa�ia (comnit, comnombre, coma�ofun, comrelplegal)
-> values (nit, nombre, a�ofundacion, representante);
-> end $
Query OK, 0 rows affected (0.03 sec)

� TiposAutomotores

mysql> use laboratoriosql;


Database changed
mysql> describe Tiposautomotores;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| Auttipo | int(11) | NO | PRI | NULL | auto_increment |
| Autnombre | varchar(30) | NO | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> select * from Tiposautomotores;


+---------+-------------+
| Auttipo | Autnombre |
+---------+-------------+
| 1 | Automoviles |
| 2 | Camperos |
| 3 | Camiones |
+---------+-------------+
3 rows in set (0.00 sec)

mysql> delimiter $
mysql> create procedure insertartiposautomotores (in tipo int(10), in apellido
varchar (150))
-> begin
-> insert into tiposautomotores (auttipo, autnombre) values (tipo, apellido);
-> end $
Query OK, 0 rows affected (0.01 sec)

� Automotores

mysql> use laboratoriosql;


Database changed
mysql> describe Automotores;
+------------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------+------+-----+---------+-------+
| Autoplaca | varchar(6) | NO | PRI | NULL | |
| Automarca | varchar(30) | NO | | NULL | |
| Autotipo | int(11) | NO | MUL | NULL | |
| Automodelo | int(11) | NO | | NULL | |
| Autonumpasajeros | int(11) | NO | | NULL | |
| Autocilindraje | int(11) | NO | | NULL | |
| Autonumchasis | varchar(20) | YES | | NULL | |
+------------------+-------------+------+-----+---------+-------+
7 rows in set (0.01 sec)
mysql> select * from Automotores;
+-----------+-----------------+----------+------------+------------------
+----------------+-------------------+
| Autoplaca | Automarca | Autotipo | Automodelo | Autonumpasajeros |
Autocilindraje | Autonumchasis |
+-----------+-----------------+----------+------------+------------------
+----------------+-------------------+
| Dkz820 | Renault Stepway | 1 | 2008 | 5 |
1600 | Wywzzz157kk009d45 |
| Fll420 | Chevrolet Corsa | 1 | 2003 | 5 |
1400 | Wywzzz167kk009d25 |
| Kjq920 | Kia Sportage | 2 | 2009 | 7 |
2000 | Wywzzz157kk009d25 |
+-----------+-----------------+----------+------------+------------------
+----------------+-------------------+
3 rows in set (0.02 sec)

mysql> delimiter $
mysql> create procedure insertarautomotores (in placa varchar(6), in marca varchar
(150), in tipo varchar (100), in modelo varchar (100), in NoPasajeros int (3), in
cilindraje int(6), in chasis varchar(100))
-> begin
-> insert into tiposautomotores (autoplaca, automarca, autotipo, automodelo,
autonumpasajeros, autocilindraje, autonumchasis) values (placa, marca, tipo,
modelo, NoPasajeros, cilindraje, chasis );
-> end $
Query OK, 0 rows affected (0.03 sec)

� Aseguramientos

mysql> use laboratoriosql;


Database changed
mysql> describe Aseguramientos;
+--------------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+-------------+------+-----+---------+----------------+
| Asecodigo | int(11) | NO | PRI | NULL | auto_increment |
| Asefechainicio | date | NO | | NULL | |
| Asefechaexpiracion | date | NO | | NULL | |
| Asevalorasegurado | int(11) | NO | | NULL | |
| Aseestado | varchar(10) | NO | | NULL | |
| Asecosto | int(11) | NO | | NULL | |
| Aseplaca | varchar(6) | NO | MUL | NULL | |
+--------------------+-------------+------+-----+---------+----------------+
7 rows in set (0.02 sec)

mysql> select * from Aseguramientos;


+-----------+----------------+--------------------+-------------------+-----------
+----------+----------+
| Asecodigo | Asefechainicio | Asefechaexpiracion | Asevalorasegurado | Aseestado |
Asecosto | Aseplaca |
+-----------+----------------+--------------------+-------------------+-----------
+----------+----------+
| 1 | 2012-09-30 | 2013-09-30 | 30000000 | Vigente |
500000 | Fll420 |
| 2 | 2012-09-27 | 2013-09-27 | 35000000 | Vigente |
600000 | Dkz820 |
| 3 | 2011-09-28 | 2012-09-28 | 50000000 | Vencido |
800000 | Kjq920 |
+-----------+----------------+--------------------+-------------------+-----------
+----------+----------+
3 rows in set (0.00 sec)

mysql> delimiter $
mysql> create procedure insertaraseguramientos (in codigo int(11), in fechainicio
datetime (6), in fechafin datetime (6), in valorasegurado int (30), in estadoseguro
varchar (45), in costo int(6), in placa varchar(6))
-> begin
-> insert into tiposautomotores (asecodigo, asefechainicio, asefechaexpiracion,
asevalorasegurado, aseestado, asecosto, aseplaca) values (codigo, fechainicio,
fechafin, valorasegurado, estadoseguro, costo, placa );
-> end $
Query OK, 0 rows affected (0.01 sec)

� Incidentes

mysql> use laboratoriosql;


Database changed
mysql> describe Incidentes;
+--------------------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------------+-------------+------+-----+---------+----------------+
| Incicodigo | int(11) | NO | PRI | NULL | auto_increment |
| Incifecha | date | NO | | NULL | |
| Inciplaca | varchar(6) | NO | MUL | NULL | |
| Incilugar | varchar(40) | NO | | NULL | |
| Incicantheridos | int(11) | NO | | NULL | |
| Incicanfatalidades | int(11) | NO | | NULL | |
| Incicanautosinvolucrados | int(11) | NO | | NULL | |
+--------------------------+-------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)

mysql> select * from Incidentes;


+------------+------------+-----------+-------------+-----------------
+--------------------+--------------------------+
| Incicodigo | Incifecha | Inciplaca | Incilugar | Incicantheridos |
Incicanfatalidades | Incicanautosinvolucrados |
+------------+------------+-----------+-------------+-----------------
+--------------------+--------------------------+
| 1 | 2012-09-30 | Dkz820 | Bucaramanga | 0 |
0 | 2 |
| 2 | 2012-09-27 | Fll420 | Giron | 1 |
0 | 1 |
| 3 | 2011-09-28 | Fll420 | Bucaramanga | 1 |
0 | 2 |
+------------+------------+-----------+-------------+-----------------
+--------------------+--------------------------+
3 rows in set (0.00 sec)

mysql> delimiter $
mysql> create procedure insertarincidentes (in codigo int(11), in fecha date,
inplaca varchar(6), in lugar varchar(40), in cantheridos int(11), in canfatalidades
int(11), in canautosinvolucrados int(11))
-> begin
-> insert into incidentes (Incicodigo, Incifecha, Inciplaca, Incilugar,
Incicantheridos, Incicanfatalidades, Incicanautosinvolucrados) values (codigo,
fecha, placa, lugar, cantheridos, canfatalidades, canautosinvolucrados);
-> end $
Query OK, 0 rows affected (0.04 sec)

2. En Oracle construya los procedimientos almacenados para realizar los siguientes


procesos:

� Muestre los salarios de los profesores ordenados por categor�a.

create or replace PROCEDURE salarioprofesor(uno out SYS_REFCURSOR)


as
BEGIN
OPEN uno FOR
SELECT sal_prof
FROM profesor ORDER BY cate_prof;
END salarioprofesor;

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

Create or replace PROCEDURE valorcurso(uno out SYS_REFCURSOR)


as
BEGIN
OPEN uno FOR
SELECT nom_curs
FROM curso WHERE valor_cur>='500000';
END valorcurso;

� Visualizar el nombre, apellido y direcci�n de todos aquellos clientes


que hayan realizado un pedido el d�a 25 /02/2012.

Create or replace PROCEDURE pedidos02252012(uno out SYS_REFCURSOR)


as
BEGIN
OPEN uno FOR
SELECT cliente.nom_cli, cliente.ape_cli, cliente.dir_cli
FROM cliente, pedido WHERE pedido.fec_ped='02/25/2012';
END pedidos02252012;

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

Create or replace PROCEDURE todospedidos(uno out SYS_REFCURSOR)


as
BEGIN
OPEN uno FOR
SELECT pedido.id_ped, pedido.id_cli_ped, pedido.fec_ped, pedido.val_ped,
articulo.tit_art
FROM pedido, articulo;
END todospedidos;

� Listar los todos 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.

Create or replace PROCEDURE polizaoctubre(uno out SYS_REFCURSOR)


as
BEGIN
OPEN uno FOR
SELECT automotores.autoplaca, automotores.automodelo, automotores.automarca,
automotores.autonumpasajeros, automotores.autocilindraje, automotores.autotipo,
aseguramientos.asecosto, aseguramientos.asevalorasegurado
FROM automotores, aseguramientos
WHERE aseguramientos.asefechaexpiracion>'09/30/2013' AND
aseguramientos.asefechaexpiracion<'11/01/2013';
END polizaoctubre;

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.

mysql> CREATE PROCEDURE `cursoascendente`() NOT DETERMINISTIC CONTAINS SQL SQL


SECURITY DEFINER Select * from curso ORDER BY valor_cur ASC;
Query OK, 0 rows affected (0.23 sec)

mysql> call cursoascendente();


+----------+-------------------------------+-----------+-----------+
| Cod_Curs | Nom_Curs | Horas_Cur | Valor_Cur |
+----------+-------------------------------+-----------+-----------+
| 149842 | Fundamentos De Bases De Datos | 40 | 500000 |
| 289011 | Manejo De Mysql | 45 | 550000 |
| 250067 | Fundamentos De Sql | 20 | 700000 |
| 345671 | Fundamentos De Oracle | 60 | 3000000 |
+----------+-------------------------------+-----------+-----------+
4 rows in set (0.90 sec)

Query OK, 0 rows affected (0.96 sec)

� Mostrar los pedidos con los respectivos art�culos(c�digo, nombre, valor y


cantidad pedida).

mysql> Create procedure pedidosyarticulos() Select pedido.id_ped,pedido.id_cli_ped,


pedido.fec_ped, pedido.val_ped,articulo.id_art, articulo.tit_art,
articulo.prec_art,articuloxpedido.can_art_artped from pedido,
articulo,articuloxpedido;
Query OK, 0 rows affected (0.09 sec)

mysql> call pedidosyarticulos();


+--------+------------+------------+---------+--------
+-----------------------------------------+----------+----------------+
| id_ped | id_cli_ped | fec_ped | val_ped | id_art | tit_art
| prec_art | can_art_artped |
+--------+------------+------------+---------+--------
+-----------------------------------------+----------+----------------+
| 1 | 63502718 | 2012-02-25 | 120000 | 1 | Redes Cisco
| 60000 | 5 |
| 2 | 77191956 | 2012-04-30 | 55000 | 1 | Redes Cisco
| 60000 | 5 |
| 3 | 63502718 | 2011-12-10 | 260000 | 1 | Redes Cisco
| 60000 | 5 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 1 | Redes Cisco
| 60000 | 5 |
| 1 | 63502718 | 2012-02-25 | 120000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 5 |
| 2 | 77191956 | 2012-04-30 | 55000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 5 |
| 3 | 63502718 | 2011-12-10 | 260000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 5 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 5 |
| 1 | 63502718 | 2012-02-25 | 120000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 5 |
| 2 | 77191956 | 2012-04-30 | 55000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 5 |
| 3 | 63502718 | 2011-12-10 | 260000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 5 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 5 |
| 1 | 63502718 | 2012-02-25 | 120000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 5 |
| 2 | 77191956 | 2012-04-30 | 55000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 5 |
| 3 | 63502718 | 2011-12-10 | 260000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 5 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 5 |
| 1 | 63502718 | 2012-02-25 | 120000 | 1 | Redes Cisco
| 60000 | 12 |
| 2 | 77191956 | 2012-04-30 | 55000 | 1 | Redes Cisco
| 60000 | 12 |
| 3 | 63502718 | 2011-12-10 | 260000 | 1 | Redes Cisco
| 60000 | 12 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 1 | Redes Cisco
| 60000 | 12 |
| 1 | 63502718 | 2012-02-25 | 120000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 12 |
| 2 | 77191956 | 2012-04-30 | 55000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 12 |
| 3 | 63502718 | 2011-12-10 | 260000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 12 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 12 |
| 1 | 63502718 | 2012-02-25 | 120000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 12 |
| 2 | 77191956 | 2012-04-30 | 55000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 12 |
| 3 | 63502718 | 2011-12-10 | 260000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 12 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 12 |
| 1 | 63502718 | 2012-02-25 | 120000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 12 |
| 2 | 77191956 | 2012-04-30 | 55000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 12 |
| 3 | 63502718 | 2011-12-10 | 260000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 12 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 12 |
| 1 | 63502718 | 2012-02-25 | 120000 | 1 | Redes Cisco
| 60000 | 5 |
| 2 | 77191956 | 2012-04-30 | 55000 | 1 | Redes Cisco
| 60000 | 5 |
| 3 | 63502718 | 2011-12-10 | 260000 | 1 | Redes Cisco
| 60000 | 5 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 1 | Redes Cisco
| 60000 | 5 |
| 1 | 63502718 | 2012-02-25 | 120000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 5 |
| 2 | 77191956 | 2012-04-30 | 55000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 5 |
| 3 | 63502718 | 2011-12-10 | 260000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 5 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 5 |
| 1 | 63502718 | 2012-02-25 | 120000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 5 |
| 2 | 77191956 | 2012-04-30 | 55000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 5 |
| 3 | 63502718 | 2011-12-10 | 260000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 5 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 5 |
| 1 | 63502718 | 2012-02-25 | 120000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 5 |
| 2 | 77191956 | 2012-04-30 | 55000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 5 |
| 3 | 63502718 | 2011-12-10 | 260000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 5 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 5 |
| 1 | 63502718 | 2012-02-25 | 120000 | 1 | Redes Cisco
| 60000 | 10 |
| 2 | 77191956 | 2012-04-30 | 55000 | 1 | Redes Cisco
| 60000 | 10 |
| 3 | 63502718 | 2011-12-10 | 260000 | 1 | Redes Cisco
| 60000 | 10 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 1 | Redes Cisco
| 60000 | 10 |
| 1 | 63502718 | 2012-02-25 | 120000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 10 |
| 2 | 77191956 | 2012-04-30 | 55000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 10 |
| 3 | 63502718 | 2011-12-10 | 260000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 10 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 10 |
| 1 | 63502718 | 2012-02-25 | 120000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 10 |
| 2 | 77191956 | 2012-04-30 | 55000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 10 |
| 3 | 63502718 | 2011-12-10 | 260000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 10 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 10 |
| 1 | 63502718 | 2012-02-25 | 120000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 10 |
| 2 | 77191956 | 2012-04-30 | 55000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 10 |
| 3 | 63502718 | 2011-12-10 | 260000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 10 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 10 |
| 1 | 63502718 | 2012-02-25 | 120000 | 1 | Redes Cisco
| 60000 | 12 |
| 2 | 77191956 | 2012-04-30 | 55000 | 1 | Redes Cisco
| 60000 | 12 |
| 3 | 63502718 | 2011-12-10 | 260000 | 1 | Redes Cisco
| 60000 | 12 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 1 | Redes Cisco
| 60000 | 12 |
| 1 | 63502718 | 2012-02-25 | 120000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 12 |
| 2 | 77191956 | 2012-04-30 | 55000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 12 |
| 3 | 63502718 | 2011-12-10 | 260000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 12 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 12 |
| 1 | 63502718 | 2012-02-25 | 120000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 12 |
| 2 | 77191956 | 2012-04-30 | 55000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 12 |
| 3 | 63502718 | 2011-12-10 | 260000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 12 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 12 |
| 1 | 63502718 | 2012-02-25 | 120000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 12 |
| 2 | 77191956 | 2012-04-30 | 55000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 12 |
| 3 | 63502718 | 2011-12-10 | 260000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 12 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 12 |
| 1 | 63502718 | 2012-02-25 | 120000 | 1 | Redes Cisco
| 60000 | 20 |
| 2 | 77191956 | 2012-04-30 | 55000 | 1 | Redes Cisco
| 60000 | 20 |
| 3 | 63502718 | 2011-12-10 | 260000 | 1 | Redes Cisco
| 60000 | 20 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 1 | Redes Cisco
| 60000 | 20 |
| 1 | 63502718 | 2012-02-25 | 120000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 20 |
| 2 | 77191956 | 2012-04-30 | 55000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 20 |
| 3 | 63502718 | 2011-12-10 | 260000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 20 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 2 | Facebook Y Twitter Para
Adultos | 52000 | 20 |
| 1 | 63502718 | 2012-02-25 | 120000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 20 |
| 2 | 77191956 | 2012-04-30 | 55000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 20 |
| 3 | 63502718 | 2011-12-10 | 260000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 20 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 3 | Creaci�n De Una Portal Con
Php Y Mysql | 40000 | 20 |
| 1 | 63502718 | 2012-02-25 | 120000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 20 |
| 2 | 77191956 | 2012-04-30 | 55000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 20 |
| 3 | 63502718 | 2011-12-10 | 260000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 20 |
| 4 | 1098765789 | 2012-02-25 | 1800000 | 4 | Administraci�n De Sistemas
Operativos | 55000 | 20 |
+--------+------------+------------+---------+--------
+-----------------------------------------+----------+----------------+
96 rows in set (0.28 sec)

Query OK, 0 rows affected (1.29 sec)

� Visualizar los datos de las empresas fundadas entre el a�o 1991 y


1998.

mysql> create procedure visualizacionempresas()


-> select * from compania
-> where comanofun <= 1998 and comanofun >= 1991;
Query OK, 0 rows affected (0.12 sec)

mysql> call visualizacionempresas;


+------------+-------------------+-----------+---------------------+
| Comnit | Comnombre | Comanofun | Comreplegal |
+------------+-------------------+-----------+---------------------+
| 8008908902 | Seguros Atlantida | 1998 | Carlos L�pez |
| 8999999991 | Aseguradora Rojas | 1991 | Luis Fernando Rojas |
+------------+-------------------+-----------+---------------------+
2 rows in set (0.17 sec)

Query OK, 0 rows affected (0.20 sec)

� Visualizar todos los clientes organizados por apellido.

mysql> create procedure organizacionclientes()


-> select * from cliente
-> order by ape_cli;
Query OK, 0 rows affected (0.06 sec)

mysql> call organizacionclientes;


+------------+-------------+---------+-------------------------------+-----------
+-------------+
| Id_Cli | Nom_Cli | Ape_Cli | Dir_Cli | Dep_Cli |
Mes_Cum_Cli |
+------------+-------------+---------+-------------------------------+-----------
+-------------+
| 77191956 | Juan Carlos | Arenas | Digonal 23 No. 12-34 Apto 101 | Valle |
Marzo |
| 13890234 | Roger | Ariza | Cra 30 No. 13-45 | Antioquia |
Junio |
| 63502718 | Maritza | Rojas | Calle 34 No. 14-45 | Santander |
Abril |
| 1098765789 | Catalina | Zapata | Av El Libertador 30-14 | Cauca |
Marzo |
+------------+-------------+---------+-------------------------------+-----------
+-------------+
4 rows in set (0.17 sec)

Query OK, 0 rows affected (0.18 sec)

� 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.
mysql> create procedure incidentes()
-> select * from incidentes, aseguramientos
-> where incicantheridos = 1;
Query OK, 0 rows affected (0.05 sec)

mysql> call incidentes;


+------------+------------+-----------+-------------+-----------------
+--------------------+--------------------------+-----------+----------------
+--------------------+-------------------+-----------+----------+----------+
| Incicodigo | Incifecha | Inciplaca | Incilugar | Incicantheridos |
Incicanfatalidades | Incicanautosinvolucrados | Asecodigo | Asefechainicio |
Asefechaexpiracion | Asevalorasegurado | Aseestado | Asecosto | Aseplaca |
+------------+------------+-----------+-------------+-----------------
+--------------------+--------------------------+-----------+----------------
+--------------------+-------------------+-----------+----------+----------+
| 2 | 2012-09-27 | Fll420 | Giron | 1 |
0 | 1 | 1 | 2012-09-30 | 2013-09-30 |
30000000 | Vigente | 500000 | Fll420 |
| 3 | 2011-09-28 | Fll420 | Bucaramanga | 1 |
0 | 2 | 1 | 2012-09-30 | 2013-09-30 |
30000000 | Vigente | 500000 | Fll420 |
| 2 | 2012-09-27 | Fll420 | Giron | 1 |
0 | 1 | 2 | 2012-09-27 | 2013-09-27 |
35000000 | Vigente | 600000 | Dkz820 |
| 3 | 2011-09-28 | Fll420 | Bucaramanga | 1 |
0 | 2 | 2 | 2012-09-27 | 2013-09-27 |
35000000 | Vigente | 600000 | Dkz820 |
| 2 | 2012-09-27 | Fll420 | Giron | 1 |
0 | 1 | 3 | 2011-09-28 | 2012-09-28 |
50000000 | Vencido | 800000 | Kjq920 |
| 3 | 2011-09-28 | Fll420 | Bucaramanga | 1 |
0 | 2 | 3 | 2011-09-28 | 2012-09-28 |
50000000 | Vencido | 800000 | Kjq920 |
+------------+------------+-----------+-------------+-----------------
+--------------------+--------------------------+-----------+----------------
+--------------------+-------------------+-----------+----------+----------+
6 rows in set (0.00 sec)

Query OK, 0 rows affected (0.08 sec)

� 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.

mysql> create procedure incidentef11420()


-> select incifecha, inciplaca, incilugar, incicantheridos,
asefechainicio,asefechaexpiracion, asevalorasegurado
-> from incidentes, aseguramientos
-> where inciplaca = 'FLL420'
-> ;
Query OK, 0 rows affected (0.09 sec)

mysql> call incidentef11420();


+------------+-----------+-------------+-----------------+----------------
+--------------------+-------------------+
| incifecha | inciplaca | incilugar | incicantheridos | asefechainicio |
asefechaexpiracion | asevalorasegurado |
+------------+-----------+-------------+-----------------+----------------
+--------------------+-------------------+
| 2012-09-27 | Fll420 | Giron | 1 | 2012-09-30 | 2013-
09-30 | 30000000 |
| 2011-09-28 | Fll420 | Bucaramanga | 1 | 2012-09-30 | 2013-
09-30 | 30000000 |
| 2012-09-27 | Fll420 | Giron | 1 | 2012-09-27 | 2013-
09-27 | 35000000 |
| 2011-09-28 | Fll420 | Bucaramanga | 1 | 2012-09-27 | 2013-
09-27 | 35000000 |
| 2012-09-27 | Fll420 | Giron | 1 | 2011-09-28 | 2012-
09-28 | 50000000 |
| 2011-09-28 | Fll420 | Bucaramanga | 1 | 2011-09-28 | 2012-
09-28 | 50000000 |
+------------+-----------+-------------+-----------------+----------------
+--------------------+-------------------+
6 rows in set (0.00 sec)

Query OK, 0 rows affected (0.05 sec)

4. Realice las Siguientes funciones en MySQL:

� Cuente el n�mero de estudiantes cuya edad sea mayor a 22

mysql> select * from estudiante;


+------------+--------------+----------+----------+
| Doc_Est | Nom_Est | Ape_Est | Edad_Est |
+------------+--------------+----------+----------+
| 1098098097 | Jonatan | Ardila | 17 |
| 1098765678 | Carlos | Martinez | 19 |
| 63502720 | Maria | Perez | 23 |
| 91245678 | Carlos Jos� | Lopez | 25 |
+------------+--------------+----------+----------+
4 rows in set (0.00 sec)

mysql> select count(edad_est)


-> from estudiante
-> where edad_est > 22;
+-----------------+
| count(edad_est) |
+-----------------+
| 2 |
+-----------------+
1 row in set (0.06 sec)

� Muestre el nombre y la edad del estudiante m�s joven

mysql> select * from estudiante;


+------------+--------------+----------+----------+
| Doc_Est | Nom_Est | Ape_Est | Edad_Est |
+------------+--------------+----------+----------+
| 1098098097 | Jonatan | Ardila | 17 |
| 1098765678 | Carlos | Martinez | 19 |
| 63502720 | Maria | Perez | 23 |
| 91245678 | Carlos Jos� | Lopez | 25 |
+------------+--------------+----------+----------+
4 rows in set (0.00 sec)

mysql> select min(nom_est), (edad_est)


-> from estudiante;
+--------------+----------+
| min(nom_est) | edad_est |
+--------------+----------+
| Carlos | 17 |
+--------------+----------+
1 row in set (0.05 sec)

� Calcule el valor promedio de los cursos cuyas horas sean mayores a 40

mysql> select * from curso;


+----------+-------------------------------+-----------+-----------+
| Cod_Curs | Nom_Curs | Horas_Cur | Valor_Cur |
+----------+-------------------------------+-----------+-----------+
| 149842 | Fundamentos De Bases De Datos | 40 | 500000 |
| 250067 | Fundamentos De Sql | 20 | 700000 |
| 289011 | Manejo De Mysql | 45 | 550000 |
| 345671 | Fundamentos De Oracle | 60 | 3000000 |
+----------+-------------------------------+-----------+-----------+
4 rows in set (0.00 sec)

mysql> select AVG(valor_cur)


-> from curso
-> where horas_cur > 40;
+----------------+
| AVG(valor_cur) |
+----------------+
| 1775000.0000 |
+----------------+
1 row in set (0.03 sec)

� Obtener el sueldo promedio de los profesores de la categor�a 1

mysql> select * from profesor;


+------------+-----------+----------+-----------+----------+
| Doc_Prof | Nom_Prof | Ape_Prof | Cate_Prof | Sal_Prof |
+------------+-----------+----------+-----------+----------+
| 1098765789 | Alejandra | Torres | 4 | 1100000 |
| 13826789 | Maritza | Angarita | 1 | 550000 |
| 63502720 | Martha | Rojas | 2 | 690000 |
| 91216904 | Carlos | Perez | 3 | 950000 |
+------------+-----------+----------+-----------+----------+
4 rows in set (0.04 sec)

mysql> select AVG(sal_prof)


-> from profesor
-> where cate_prof > 1;
+---------------+
| AVG(sal_prof) |
+---------------+
| 913333.3333 |
+---------------+
1 row in set (0.00 sec)

� Muestre el nombre del profesor con menor sueldo

mysql> select * from profesor;


+------------+-----------+----------+-----------+----------+
| Doc_Prof | Nom_Prof | Ape_Prof | Cate_Prof | Sal_Prof |
+------------+-----------+----------+-----------+----------+
| 1098765789 | Alejandra | Torres | 4 | 1100000 |
| 13826789 | Maritza | Angarita | 1 | 550000 |
| 63502720 | Martha | Rojas | 2 | 690000 |
| 91216904 | Carlos | Perez | 3 | 950000 |
+------------+-----------+----------+-----------+----------+
4 rows in set (0.00 sec)

mysql> SELECT (Nom_Prof)


-> FROM profesor
-> where Sal_Prof = (SELECT MIN(Sal_Prof) from profesor;
+------------+
| Nom_Prof |
+------------+
| Maritza |
+------------+
1 rows in set (0.00 sec)

5. Realice las Siguientes funciones en ORACLE

� Visualizar el nombre del cliente, la fecha y el valor del pedido m�s costoso.

mysql> use laboratoriosql;


Database changed
mysql> select nom_cli, val_ped, fec_ped
-> from pedido, cliente
-> where id_cli_ped = id_cli and val_ped = (select max(val_ped) from pedido);
+----------+---------+------------+
| nom_cli | val_ped | fec_ped |
+----------+---------+------------+
| Catalina | 1800000 | 2012-02-25 |
+----------+---------+------------+
1 row in set (0.40 sec)

� Mostrar cuantos art�culos se tienen de cada editorial.

create or replace FUNCTION contareditoriales RETURN NUMBER IS valor NUMBER;


BEGIN
SELECT COUNT(edi_art) INTO valor FROM articulo;
RETURN valor;
END;

� Visualizar todos los datos de la p�liza m�s costosa.

create or replace FUNCTION polizacostosa RETURN NUMBER IS valor NUMBER;


BEGIN
SELECT asecodigo INTO valor FROM aseguramientos WHERE asecosto=(select
min(asecosto) from aseguramientos );
RETURN valor;
END;

� 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.

mysql> select Incicanautosinvolucrados, aseestado, asevalorasegurado


-> from incidentes, aseguramientos
-> where inciplaca = aseplaca and Incicanautosinvolucrados = (select
min(Incicanautosinvolucrados) from incidentes);
+--------------------------+-----------+-------------------+
| Incicanautosinvolucrados | aseestado | asevalorasegurado |
+--------------------------+-----------+-------------------+
| 1 | Vigente | 30000000 |
+--------------------------+-----------+-------------------+
1 row in set (0.27 sec)

� 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.

mysql> select * from automotores, aseguramientos


-> where autoplaca = aseplaca and asevalorasegurado = (select
max(asevalorasegurado) from aseguramientos);
+-----------+--------------+----------+------------+------------------
+----------------+-------------------+-----------+----------------
+--------------------+-------------------+-----------+----------+----------+
| Autoplaca | Automarca | Autotipo | Automodelo | Autonumpasajeros |
Autocilindraje | Autonumchasis | Asecodigo | Asefechainicio |
Asefechaexpiracion | Asevalorasegurado | Aseestado | Asecosto | Aseplaca |
+-----------+--------------+----------+------------+------------------
+----------------+-------------------+-----------+----------------
+--------------------+-------------------+-----------+----------+----------+
| Kjq920 | Kia Sportage | 2 | 2009 | 7 |
2000 | Wywzzz157kk009d25 | 3 | 2011-09-28 | 2012-09-28 |
50000000 | Vencido | 800000 | Kjq920 |
+-----------+--------------+----------+------------+------------------
+----------------+-------------------+-----------+----------------
+--------------------+-------------------+-----------+----------+----------+
1 row in set (0.08 sec)

6. Construya los siguiente disparadores para controlar la actualizaci�n y borrado


de registros

� En MySQL; para las tablas Profesor, Curso, Estudiante


� En MySQL; para las tablas Profesor

mysql> create table audprofesor(


-> auddoc_prof Varchar(11) Not Null,
-> audnom_prof Varchar(30),
-> audape_prof Varchar(30),
-> audcate_prof Int(11),
-> audsal_prof Int(11),
-> audmodificado datetime(6),
-> Primary Key (Auddoc_prof));
Query OK, 0 rows affected (2.86 sec)

mysql> describe audprofesor;


+---------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| auddoc_prof | varchar(11) | NO | PRI | NULL | |
| audnom_prof | varchar(30) | YES | | NULL | |
| audape_prof | varchar(30) | YES | | NULL | |
| audcate_prof | int(11) | YES | | NULL | |
| audsal_prof | int(11) | YES | | NULL | |
| audmodificado | datetime(6) | YES | | NULL | |
+---------------+-------------+------+-----+---------+-------+
6 rows in set (0.05 sec)
mysql> create trigger nuevoprof after insert on profesor
-> for each row
-> insert into audprof(auddoc_prof,audnom_prof, audape_prof, audcate_prof,
audsal_prof, audmodificado)
-> values(new.doc_prof, new.nom_prof, new.ape_prof, new.cate_prof,
new.sal_prof, now());
Query OK, 0 rows affected (0.27 sec)

� Actualizaci�n

mysql> create trigger modaudprofesor before update on profesor


-> for each row
-> insert into audprof(antdoc_prof, antnom_prof, antape_prof, antcate_prof,
antsal_prof,
-> nuedoc_prof, nuenom_prof, nueape_prof, nuecate_prof, nuesal_prof,
audmodificado)
-> values (old.doc_prof, old.nom_prof, old.ape_prof, old.cate_prof,
old.sal_prof, newnom_prof, newape_prof, newcate_prof, newsal_prof, corrent_user (),
now());
Query OK, 0 rows affected (0.17 sec)

� Borrado

mysql> create trigger eliaudprofesor after update on profesor


-> for each row
-> insert into audprof(antdoc_prof, antnom_prof, antape_prof, antcate_prof,
antsal_prof, audmodificado)
-> values (old.doc_prof, old.nom_prof, old.ape_prof, old.cate_prof,
old.sal_prof, corrent_user (), now());
Query OK, 0 rows affected (0.15 sec)

� En MySQL; para las tablas Curso


� Construya

mysql> create table audcurso(


-> audcod_curs Int(11) Not Null Auto_Increment,
-> audnom_curs Varchar(100),
-> audhoras_cur Int(11),
-> audvalor_cur Int(11),
-> audmodificado Varchar(45),
-> Primary Key (audcod_curs));
Query OK, 0 rows affected (0.23 sec)

mysql> describe audcurso;


+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| audcod_curs | int(11) | NO | PRI | NULL | auto_increment |
| audnom_curs | varchar(100) | YES | | NULL | |
| audhoras_cur | int(11) | YES | | NULL | |
| audvalor_cur | int(11) | YES | | NULL | |
| audmodificado | varchar(45) | YES | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
5 rows in set (0.12 sec)

mysql> create trigger nuevocurso after insert on curso


-> for each row
-> insert into audcurso(audcod_curs, audnom_curs, audhoras_cur, audvalor_cur,
audmodificado)
-> values(cod_curs, nom_curs, horas_cur, valor_cur, now());
Query OK, 0 rows affected (0.18 sec)

� Actualizaci�n

mysql> create trigger modaudcurso before update on curso


-> for each row
-> insert into audcurso(antcod_curs, antnom_curs, anthoras_cur, antvalor_cur,
-> nuecod_curs, nuenom_curs, nuehoras_cur, nuevalor_cur, audmodificado)
-> values (old.cod_curs, old.nom_curs, old.horas_cur, old.valor_cur,
-> new.cod_curs, new.nom_curs, new.horas_cur, new.valor_cur, corrent_user (),
Now());
Query OK, 0 rows affected (0.10 sec)

� Borrado

mysql> create trigger eliaudcurso after update on curso


-> for each row
-> insert into audcurso(antcod_curs, antnom_curs, anthoras_cur, antvalor_cur,
audmodificado)
-> values (old.cod_curs, old.nom_curs, old.horas_cur, old.valor_cur,
corrent_user (), now());
Query OK, 0 rows affected (0.14 sec)

� En MySQL; para las tablas Estudiante


� Construya

mysql> create table audestudiante(


-> auddoc_est Varchar(11) Not Null,
-> audnom_est Varchar(30) Not Null,
-> audape_est Varchar(30) Not Null,
-> audedad_est Int Not Null,
-> audmodificado datetime Not Null,
-> Primary Key (auddoc_est));
Query OK, 0 rows affected (0.23 sec)

mysql> describe audestudiante;


+---------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| auddoc_est | varchar(11) | NO | PRI | NULL | |
| audnom_est | varchar(30) | NO | | NULL | |
| audape_est | varchar(30) | NO | | NULL | |
| audedad_est | int(11) | NO | | NULL | |
| audmodificado | datetime | NO | | NULL | |
+---------------+-------------+------+-----+---------+-------+
5 rows in set (0.01 sec)

mysql> create trigger nuevoestudiante after insert on estudiante


-> for each row
-> insert into audestudiante(auddoc_est, audnom_est, audaudape_est,
audedad_est, audmodificado)
-> values (doc_est, nom_est, ape_est, edad_est, now());
Query OK, 0 rows affected (0.14 sec)

� Actualizaci�n

mysql> create trigger modaudestudiante before update on estudiante


-> for each row
-> insert into audestudiante(antdoc_est, antnom_est, antaudape_est,
antedad_est,
-> nuedoc_est, nuenom_est, nueaudape_est, nueedad_est, audmodificado)
-> values (old.doc_est, old.nom_est, old.ape_est, old.edad_est,
-> new.doc_est, new.nom_est, new.ape_est, new.edad_est, corrent_user (),
now());
Query OK, 0 rows affected (0.07 sec)

� Borrado

mysql> create trigger eliaudestudiante after update on estudiante


-> for each row
-> insert into audestudiante(antdoc_est, antnom_est, antaudape_est,
antedad_est, audmodificado)
-> values (old.doc_est, old.nom_est, old.ape_est, old.edad_est, corrent_user
(), now());
Query OK, 0 rows affected (0.39 sec)

� En ORACLE; para las tablas Cliente, Articulo, Pedido


� En Oracle; para las tablas Cliente
� Actualizaci�n

create or replace trigger "CLIENTEUPDATE"


BEFORE
update on "CLIENTE"
for each row
begin
INSERT INTO trigger_cliente (CodigoAnterior, NombreAnterior, ApellidoAnterior,
DireccionAnterior,DepartamentoAnterior, MesCumpleAnterior, CodigoNuevo,
NombreNuevo, ApellidoNuevo, DireccionNuevo, DepartamentoNuevo, MesCumpleNuevo)
VALUES (:OLD.id_cli, :OLD.nom_cli, :OLD.ape_cli, :OLD.dir_cli, :OLD.dep_cli,
:OLD.mes_cum_cli, :NEW.id_cli, :NEW.nom_cli, :NEW.ape_cli, :NEW.dir_cli,
:NEW.dep_cli, :NEW.mes_cum_cli);
end;?

� Borrado

create or replace trigger "CLIENTEDELETE"


AFTER
delete on "CLIENTE"
for each row
begin
INSERT INTO trigger_cliente (CodigoAnterior, NombreAnterior, ApellidoAnterior,
DireccionAnterior,DepartamentoAnterior, MesCumpleAnterior, CodigoNuevo,
NombreNuevo, ApellidoNuevo, DireccionNuevo, DepartamentoNuevo, MesCumpleNuevo)
VALUES (:OLD.id_cli, :OLD.nom_cli, :OLD.ape_cli, :OLD.dir_cli, :OLD.dep_cli,
:OLD.mes_cum_cli);
end;?

� En Oracle; para las tablas Articulo

� Actualizaci�n

create or replace trigger "ARTICULOUPDATE"


BEFORE
update on "ARTICULO"
for each row
begin
INSERT INTO trigger_articulo (CodigoAnterior, NombreAnterior, AutorAnterior,
EditorialAnterior, PrecioAnterior, CodigoNuevo, NombreNuevo, AutorNuevo,
EditorialNuevo, PrecioNuevo) VALUES (:OLD.id_art, :OLD.tit_art, :OLD.aut_art,
:OLD.edi_art, :OLD.prec_art, :NEW.id_art, :NEW.tit_art, :NEW.aut_art,
:NEW.edi_art, :NEW.prec_art);
end;?

� Borrado

create or replace trigger "ARTICULODELETE"


AFTER
delete on "ARTICULO"
for each row
begin
INSERT INTO trigger_articulo (CodigoAnterior, NombreAnterior, AutorAnterior,
EditorialAnterior, PrecioAnterior, CodigoNuevo, NombreNuevo, AutorNuevo,
EditorialNuevo, PrecioNuevo) VALUES (:OLD.id_art, :OLD.tit_art, :OLD.aut_art,
:OLD.edi_art, :OLD.prec_art);
end;?

� En Oracle; para las tablas Pedido

� Actualizaci�n

create or replace trigger "PEDIDOUPDATE"


BEFORE
update on "PEDIDO"
for each row
begin
INSERT INTO trigger_pedido (CodigoAnterior, DocumentoClienteAnterior,
FechaAnterior, ValorAnterior, CodigoNuevo, DocumentoClienteNuevo, FechaNuevo,
ValorNuevo) VALUES (:OLD.id_ped, :OLD.id_cli_ped, :OLD.fec_ped, :OLD.val_ped,
:NEW.id_ped, :NEW.id_cli_ped, :NEW.fec_ped, :NEW.val_ped);
end;

� Borrado

create or replace trigger "PEDIDODELETE"


AFTER
delete on "PEDIDO"
for each row
begin
INSERT INTO trigger_pedido (CodigoAnterior, DocumentoClienteAnterior,
FechaAnterior, ValorAnterior, CodigoNuevo, DocumentoClienteNuevo, FechaNuevo,
ValorNuevo) VALUES (:OLD.id_ped, :OLD.id_cli_ped, :OLD.fec_ped, :OLD.val_ped);
end;

� En el Motor de su preferencia (ORACLE O MySQL), para las tablas, Automotores,


Aseguramientos, Incidentes.

� Tabla Automotores

Actualizaci�n:

CREATE TRIGGER `automotoresupdate` BEFORE UPDATE ON `automotores` FOR EACH ROW


INSERT INTO trigger_automotores
(PlacaAnterior, MarcaAnterior, TipoAnterior,
ModeloAnterior,NumeroPasajerosAnterior, CilindrajeAnterior, NumeroChasisAnterior,
PlacaNuevo, MarcaNuevo,
TipoNuevo, ModeloNuevo, NumeroPasajerosNuevo, CilindrajeNuevo,
NumeroChasisNuevo)VALUES (OLD.autoplaca, OLD.automarca, OLD.autotipo,
OLD.automodelo, OLD.autonumpasajeros, OLD.autocilindraje, OLD.autonumchasis,
NEW.autoplaca, NEW.automarca, NEW.autotipo,NEW.automodelo, NEW.autonumpasajeros,
NEW.autocilindraje, NEW.autonumchasis)

Borrado:

CREATE TRIGGER `automotoresdelete` AFTER DELETE ON `automotores` FOR EACH ROW


INSERT INTO trigger_automotores
(PlacaAnterior, MarcaAnterior, TipoAnterior,
ModeloAnterior,NumeroPasajerosAnterior, CilindrajeAnterior, NumeroChasisAnterior,
PlacaNuevo, MarcaNuevo, TipoNuevo, ModeloNuevo, NumeroPasajerosNuevo,
CilindrajeNuevo, NumeroChasisNuevo)VALUES (OLD.autoplaca, OLD.automarca,
OLD.autotipo, OLD.automodelo, OLD.autonumpasajeros,
OLD.autocilindraje, OLD.autonumchasis)

Tabla Aseguramientos:

Actualizacion:

CREATE TRIGGER `aseguramientosupdate` BEFORE UPDATE ON `aseguramientos` FOR EACH


ROW INSERT INTO trigger_aseguramientos
(CodigoAnterior, FechaInicioAnterior,FechaExpiracionAnterior,
ValorAseguradoAnterior, EstadoAnterior, CostoAnterior, PlacaAnterior, CodigoNuevo,
FechaInicioNuevo,
FechaExpiracionNuevo, ValorAseguradoNuevo,EstadoNuevo, CostoNuevo, PlacaNuevo)
VALUES (OLD.asecodigo, OLD.asefechainicio, OLD.asefechaexpiracion,
OLD.asevalorasegurado, OLD.aseestado,
OLD.asecosto, OLD.aseplaca,NEW.asecodigo, NEW.asefechainicio,
NEW.asefechaexpiracion, NEW.asevalorasegurado, NEW.aseestado, NEW.asecosto,
NEW.aseplaca)

Borrado:

CREATE TRIGGER `aseguramientosdelete` AFTER DELETE ON `aseguramientos` FOR EACH ROW


INSERT INTO trigger_aseguramientos
(CodigoAnterior, FechaInicioAnterior,FechaExpiracionAnterior,
ValorAseguradoAnterior, EstadoAnterior, CostoAnterior, PlacaAnterior, CodigoNuevo,
FechaInicioNuevo, FechaExpiracionNuevo, ValorAseguradoNuevo,EstadoNuevo,
CostoNuevo, PlacaNuevo)
VALUES (OLD.asecodigo, OLD.asefechainicio, OLD.asefechaexpiracion,
OLD.asevalorasegurado, OLD.aseestado, OLD.asecosto, OLD.aseplaca)

Tabla Incidentes:

Actualizacion:

CREATE TRIGGER `incidentesupdate` BEFORE UPDATE ON `incidentes` FOR EACH ROW INSERT
INTO trigger_incidentes
(CodigoAnterior, FechaAnterior, PlacaAnterior,
LugarAnterior,CantidadHeridosAnterior, CantidadFatalidadesAnterior,
CantidadAutosInvolucradosAnterior, CodigoNuevo, FechaNuevo, PlacaNuevo, LugarNuevo,
CantidadHeridosNuevo,CantidadFatalidadesNuevo, CantidadAutosInvolucradosNuevo)
VALUES (OLD.incicodigo, OLD.incifecha, OLD.inciplaca, OLD.incilugar,
OLD.incicantheridos, OLD.incicanfatalidades,OLD.incicanautosinvolucrados,
NEW.incicodigo, NEW.incifecha, NEW.inciplaca, NEW.incilugar, NEW.incicantheridos,
NEW.incicanfatalidades, NEW.incicanautosinvolucrados)
Borrado:

CREATE TRIGGER `incidentesdelete` AFTER DELETE ON `incidentes` FOR EACH ROW INSERT
INTO trigger_incidentes
(CodigoAnterior, FechaAnterior, PlacaAnterior,
LugarAnterior,CantidadHeridosAnterior, CantidadFatalidadesAnterior,
CantidadAutosInvolucradosAnterior, CodigoNuevo, FechaNuevo, PlacaNuevo, LugarNuevo,
CantidadHeridosNuevo,CantidadFatalidadesNuevo, CantidadAutosInvolucradosNuevo)
VALUES (OLD.incicodigo, OLD.incifecha, OLD.inciplaca, OLD.incilugar,
OLD.incicantheridos, OLD.incicanfatalidades,OLD.incicanautosinvolucrados)

También podría gustarte