Está en la página 1de 29

CONSULTAS A BASE DE DATOS

INSTRUCTOR

MARÍA DEL PILAR SANCHEZ

APRENDIZ

JAIME ALEXANDER CAMELO MORENO


1439219ª

CENTRO DE BIOTEGNOLOGIA AGROPECUARIA


MOSQUERA
2018
2. En Oracle construya los procedimientos almacenados para realizar los

siguientes procesos:

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

create procedure insert_profesor(documento int, nombre varchar(30),apellido


varchar(40),categoria varchar(20),salario int)

insert into profesor(prof_doc,prof_nom,prof_ape,prof_cate,prof_salar)

values(documento,nombre,apellido,categoria,salario);

call insert_profesor(1235,'pepe','rojas','7',1000000);

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

create procedure insert_curso(codigo int,nombre varchar(50),hora int,valor int)

insert into curso(curs_cod,curs_nom,curs_hora,curs_valor)

values(codigo,nombre,hora,valor);
call insert_curso(34567,'constitucion',13,780000);

SELECT curs_nom,curs_valor as valor_curso

FROM curso

where curs_valor>500000

ORDER BY curs_valor ASC;

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

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

create procedure insert_cliente(ID int, nombre varchar(30),apellido varchar(30),Direccion


varchar(100),departamento varchar(20),mes varchar(10))

insert into cliente(IdCli,NomCli,ApeCli,DirCli,DepCli,MesCumCli)

values(ID,nombre,apellido,Direccion,departamento,mes);

call insert_cliente(1077148940,'Brayan','Lopez','calle,21-8B-
78','cundinamarca','diciembre');

SELECT NomCli as nombre,ApeCli as apellido,DirCli as direccion,FecPed as fecha from cliente

inner join pedido

on IdCli=IdCliPed and FecPed='2012-02-25';


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

create procedure insert_articulo(ID int, titulo varchar(100),autor varchar(100),editorial


varchar(300),precio int)

insert into articulo(IdArt,TitArt,AutArt,EdiArt,PreArt)

values(ID,titulo,autor,editorial,precio);

call insert_articulo(1209,'la venganza','lucas','la venecia',24000000);

select titart as titulo,CantArtArtped,ValVenArtArtped from articuloxpedido

inner join articulo on IdArt = IdArtArtPed;

• 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

select AutoPlaca as placa,AseFecExpiracion as fecha_expiracion,AutoMarca as marca from


automotores

inner join aseguramientos

on AutoPlaca = AsePlaca and AseFecExpiracion = '2013-09-30';

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 insert_curso(codigo int,nombre varchar(50),hora int,valor int)

insert into curso(curs_cod,curs_nom,curs_hora,curs_valor)

values(codigo,nombre,hora,valor);

call insert_curso(34567,'constitucion',13,780000);

select * from curso order by curs_valor ASC;


• Mostrar los pedidos con los respectivos artículos(código, nombre,

valor y cantidad pedida).

create procedure insert_curso(codigo int,nombre varchar(50),hora int,valor


int)

insert into curso(curs_cod,curs_nom,curs_hora,curs_valor)

values(codigo,nombre,hora,valor);

call insert_curso(34567,'constitucion',13,780000);

select IdPed, IdArt, TitArt,CantArtArtped as cantidad,ValVenArtArtped as valor from articulo

inner join pedido

inner join articuloxpedido

on IdPed =IdPedArtped and IdArtArtped = IdArt;

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

1998.

create procedure fundacion()

select ComNombre,ComAñoFun from Compañia

where ComAñoFun between 1991 and 1998;


• Visualizar todos los clientes organizados por apellido.

create procedure insert_cliente(ID int, nombre varchar(30),apellido varchar(30),Direccion


varchar(100),departamento varchar(20),mes varchar(10))

insert into cliente(IdCli,NomCli,ApeCli,DirCli,DepCli,MesCumCli)

values(ID,nombre,apellido,Direccion,departamento,mes);

call insert_cliente(1077148979,'jimy','carranza','calle,21-8B-
78','valle','novienbre');

select *from cliente order by ApeCli desc;

• 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 inci_ase()

select InciFecha,InciLugar,InciCanHeridos,AseFecInicio,AseFecExpiracion,AseValorAsegurado

from incidentes inner join Aseguramientos on (AsePlaca= InciPlaca)

where InciPlaca='FLL420';

call inci_ase();

• 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 fundacion()

select ComNombre,ComAñoFun from Compañia

where ComAñoFun between 1991 and 1998;

call fundacion();
4. Realice las Siguientes funciones en MySQL:

• Cuente el número de estudiantes cuya edad sea mayor a 22.

DELIMITER //

CREATE FUNCTION contar22()

RETURNS INTEGER

BEGIN

DECLARE cantidad int;

select count(*) into cantidad from estudiante where est_edad > 22;

RETURN cantidad;

END//

DELIMITER ;

Llamamos la función y visualizamos el resultado:

mysql> select contar22();

• Muestre el nombre y la edad del estudiante más joven.

DELIMITER //

CREATE FUNCTION masJoven ()RETURNS int

BEGIN

DECLARE masJoven int;

SELECT est_edad into masJoven from estudiante order by est_edad asc limit 1;

RETURN masJoven;
END//

DELIMITER ;

<-- llamamos la funcion

select est_nom, est_edad from estudiante where est_edad = masJoven();

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

40.

USE `academia`;

DROP function IF EXISTS menorSueldo;

******

DELIMITER //

CREATE FUNCTION promediocursos() RETURNS INT

BEGIN

declare valor_promedio int;

select avg(curs_valor) into valor_promedio from curso where curs_hora > 40;

RETURN valor_promedio;
END//

• Obtener el sueldo promedio de los profesores de la categoría 1.

DELIMITER //

CREATE FUNCTION promediosueldo ()RETURNS INTEGER

BEGIN

DECLARE promsueldo int;

SELECT AVG(prof_salar) INTO promsueldo FROM profesor WHERE prof_cate = 1;

RETURN promsueldo;

END//

DELIMITER ;{

call

select promediosueldo();
• Muestre el nombre del profesor con menor sueldo.

DELIMITER //

CREATE FUNCTION menorSueldo () RETURNS VARCHAR(30)

BEGIN

DECLARE menors VARCHAR(30);

SELECT prof_nom INTO menors FROM profesor where prof_salar =(select min(prof_salar)
from profesor);

RETURN menors;

END//

DELIMITER ;

5. Realice las Siguientes funciones en ORACLE:

• Visualizar el nombre del cliente, la fecha y el valor del pedido más

costoso. DELIMITER //

CREATE FUNCTION VALORSUELDO () RETURNS VARCHAR(30)

BEGIN

DECLARE menors VARCHAR(30);

SELECT FecPed INTO menors FROM pedido WHERE ValPed= (SELECT MAX(ValPed) from
pedido);

RETURN menors;

END//
SELECT VALORSUELDO();

• Mostrar cuantos artículos se tienen de cada editorial.

DELIMITER //

CREATE FUNCTION PEDIDOS () RETURNS VARCHAR(30)

BEGIN

DECLARE cantidad VARCHAR(30);

select count(EdiArt) INTO cantidad from articulo;

RETURN cantidad;

END//

SELECT PEDIDOS();

• Visualizar todos los datos de la póliza más costosa.

DELIMITER //

CREATE FUNCTION Datos () RETURNS VARCHAR(30)

BEGIN

DECLARE costo VARCHAR(30);


SELECT AseCosto INTO costo FROM Aseguramientos WHERE AseCosto= (SELECT
MAX(AseCosto) from Aseguramientos);

RETURN costo;

END//

SELECT Datos();

• 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 autos () RETURNS VARCHAR(30)

BEGIN

DECLARE involucrados VARCHAR(30);

select InciCanAutInvolucrados INTO involucrados from incidentes,Aseguramientos

where InciPlaca =AsePlaca and InciCanAutInvolucrados=(select


min(InciCanAutInvolucrados)from incidentes);

RETURN involucrados;

END//

SELECT autos();
• 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 MAXI() RETURNS int DETERMINISTIC

BEGIN

DECLARE MAXIMO int;

SELECT AseCosto INTO MAXIMO FROM Aseguramientos WHERE AseCosto=(select


MAX(AseCosto) FROM Aseguramientos);

RETURN MAXIMO;

END//

SELECT MAXI()//

6)triggers

CREATE table actualizacion_profesor(

act_doc int auto_increment,

old_prof_nom varchar (30),

old_prof_ape varchar (40),

old_prof_cate varchar(20),

old_prof_salar int,

new_prof_nom varchar (30),

new_prof_ape varchar (40),

new_prof_cate varchar(20),
new_prof_salar int,

act_fechamodificacion date,

act_usuario varchar(45),

act_prof_doc int,

act_accion varchar(45),

primary key(act_doc)

);

CREATE TRIGGER T_actualizacion_profesor BEFORE UPDATE on profesor

FOR EACH ROW

INSERT INTO actualizacion_profesor

(new_prof_nom,new_prof_ape,new_prof_cate,

new_prof_salar,old_prof_nom,old_prof_ape,

old_prof_cate,old_prof_salar,act_fechamodificacion,

act_usuario,act_prof_doc,act_accion)

values(old.prof_nom,old.prof_ape,old.prof_cate,old.prof_salar,

new.prof_nom,new.prof_ape,new.prof_cate,new.prof_salar,

now(),current_user(),new.prof_doc,'Actualizacion');

UPDATE profesor set prof_nom='Jaime',prof_ape='Carranza',


prof_cate='1', prof_salar='800000' where prof_doc='63502720';

CREATE TRIGGER T_delete_profesor AFTER DELETE on profesor

FOR EACH ROW

INSERT INTO actualizacion_profesor

(new_prof_nom,new_prof_ape,new_prof_cate,

new_prof_salar,old_prof_nom,old_prof_ape,

old_prof_cate,old_prof_salar,act_fechamodificacion,

act_usuario,act_prof_doc,act_accion)

values("","",0,0,old.prof_nom,old.prof_ape,old.prof_cate,old.prof_salar,

now(),current_user(),old.prof_doc,'Registro eliminado');

DELETE from profesor where prof_ape='Carranza';


Papeleria

SET FOREIGN_KEY_CHECKS = 0;

CREATE table modificar_cliente(

consecutivo int auto_increment,

IdCli int,

old_NomCli varchar (30),

old_ApeCli varchar(30),

old_DirCli varchar(100),

old_DepCli varchar (20),

old_MesCumCli varchar(10),

new_NomCli varchar(30),

new_ApeCli varchar(30),

new_DirCli varchar(100),

new_DepCli varchar (20),

new_MesCumCli varchar(10),

act_fechamodificacion date,

act_usuario varchar(45),

act_curs_cod int,

act_accion varchar(45),

constraint pk_modificar_cliente primary key(consecutivo)

);

constraint modificar_cliente Foreign key (IdCli) references cliente(IdCli) on delete cascade on


UPDATE cascade

CREATE TRIGGER modi_cliente BEFORE UPDATE on cliente

FOR EACH ROW

INSERT INTO modificar_cliente


(new_NomCli,new_ApeCli,new_DirCli,new_DepCli,new_MesCumCli,old_NomCli,old_ApeCli,

old_DirCli,old_DepCli,old_MesCumCli,act_fechamodificacion,act_usuario,act_curs_cod,act_acc

values(old.NomCli,old.ApeCli,old.DirCli,old.DepCli,old.MesCumCli,
new.NomCli,new.ApeCli,new.DirCli,new.DepCli,new.MesCumCli,

now(),current_user(),new.IdCli,'Actualizado');

UPDATE cliente set ApeCli='gonzales',DirCli='cundinamarca',

DepCli='calle 21 8A-43' where ApeCli='Arenas';

CREATE TRIGGER delete_cliente AFTER DELETE on cliente

FOR EACH ROW

INSERT INTO modificar_cliente

(new_NomCli,new_ApeCli,new_DirCli,new_DepCli,new_MesCumCli,old_NomCli,old_ApeCli,

old_DirCli,old_DepCli,old_MesCumCli,act_fechamodificacion,act_usuario,act_curs_cod,act_acc
ion)

values("",'','','','',old.NomCli,old.ApeCli,old.DirCli,old.DepCli,old.MesCumCli,

now(),current_user(),old.IdCli,'Registro eliminado');

DELETE from cliente where ApeCli='gonzales';


CREATE table modificar_articulo(

consecuti int auto_increment,

old_TitArt varchar(100),

old_AutArt varchar(100),

old_EdiArt varchar(300),

old_PreArt int,

new_TitArt varchar(100),

new_AutArt varchar(100),

new_EdiArt varchar(300),

new_PreArt int,

act_fechamodificacion date,

act_usuario varchar(45),

act_curs_cod int,

act_accion varchar(45),

primary key(consecuti)
);

CREATE TRIGGER modi_arti BEFORE UPDATE on articulo

FOR EACH ROW

INSERT INTO modificar_articulo


(new_TitArt,new_AutArt,new_EdiArt,new_PreArt,old_TitArt,old_AutArt,

old_EdiArt,old_PreArt,act_fechamodificacion,act_usuario,act_curs_cod,act_accion)

values(old.TitArt,old.AutArt,old.EdiArt,old.PreArt,

new.TitArt,new.AutArt,new.EdiArt,new.PreArt,

now(),current_user(),new.IdArt,'Actualizado');

UPDATE articulo set TitArt='lulos verdes',EdiArt='la costa',

PreArt=4000000 where TitArt='Resdes Cisco';


CREATE TRIGGER delete_articulo AFTER DELETE on articulo

FOR EACH ROW

INSERT INTO modificar_articulo

(new_TitArt,new_AutArt,new_EdiArt,new_PreArt,old_TitArt,old_AutArt,

old_EdiArt,old_PreArt,act_fechamodificacion,act_usuario,act_curs_cod,act_accion)

values("","","",0,old.TitArt,old.AutArt,old.EdiArt,old.PreArt,

now(),current_user(),old.IdArt,'Registro eliminado');

DELETE from articulo where TitArt='lulos verdes';

CREATE table modificar_pedido(

camb_doc int auto_increment,

old_IdCliPed int,

old_FecPed date,

old_ValPed int,

new_IdCliPed int,

new_FecPed date,

new_ValPed int,

act_IdPed int,

primary key(camb_doc)
);

CREATE TRIGGER cambi_pedido BEFORE UPDATE on pedido

FOR EACH ROW

INSERT INTO modificar_pedido

(new_IdCliPed,new_FecPed,new_ValPed,

old_IdCliPed,old_FecPed,old_ValPed,act_IdPed)

values(old.IdCliPed,old.FecPed,old.ValPed,new.IdCliPed,new.FecPed,new.ValPed,new.IdPed);

UPDATE pedido set FecPed='2020-04-03',ValPed=500000 where ValPed=55000;

Aseguradora

SET FOREIGN_KEY_CHECKS=0;

CREATE table mincidentes(

consecutivo int auto_increment,

old_InciFecha date,

old_InciPlaca varchar(6),

old_InciLugar varchar(40),

old_InciCanHeridos int,

old_InciCanFatalidades int,
old_InciCanAutInvolucrados int,

new_InciFecha date,

new_InciPlaca varchar(6),

new_InciLugar varchar(40),

new_InciCanHeridos int,

new_InciCanFatalidades int,

new_InciCanAutInvolucrados int,

act_fechamodificacion date,

act_usuario varchar(45),

act_curs_cod varchar(50),

act_accion varchar(45),

primary key(consecutivo)

);

CREATE TRIGGER modi_inc BEFORE UPDATE on incidentes

FOR EACH ROW

INSERT INTO mincidentes


(new_InciFecha,new_InciPlaca,new_InciLugar,new_InciCanHeridos,new_InciCanFatalidades,ne
w_InciCanAutInvolucrados,old_InciFecha,old_InciPlaca,

old_InciLugar,old_InciCanHeridos,old_InciCanFatalidades,old_InciCanAutInvolucrados,act_fech
amodificacion,act_usuario,act_curs_cod,act_accion)

values(old.InciFecha,old.InciPlaca,old.InciLugar,old.InciCanHeridos,old.InciCanFatalidades,old.I
nciCanAutInvolucrados,

new.InciFecha,new.InciPlaca,new.InciLugar,new.InciCanHeridos,new.InciCanFatalidades,new.I
nciCanAutInvolucrados,

now(),current_user(),new.InciCodigo,'Actualizado');

UPDATE incidentes set InciFecha='2028-09-


09',InciPlaca='camelo',InciLugar='villapinzon',InciCanHeridos=7,InciCanFatalidades=56,InciCan
AutInvolucrados=34

where InciLugar='Bucaramanga';
CREATE TRIGGER delete_inc AFTER DELETE on incidentes

FOR EACH ROW

INSERT INTO
mincidentes(new_InciFecha,new_InciPlaca,new_InciLugar,new_InciCanHeridos,new_InciCanFa
talidades,new_InciCanAutInvolucrados,old_InciFecha,old_InciPlaca,

old_InciLugar,old_InciCanHeridos,old_InciCanFatalidades,old_InciCanAutInvolucrados,act_fech
amodificacion,act_usuario,act_curs_cod,act_accion)

values(0,'','',0,0,0,old.InciFecha,old.InciPlaca,old.InciLugar,old.InciCanHeridos,old.InciCanFatali
dades,old.InciCanAutInvolucrados,

now(),current_user(),old.InciCodigo,'Registro eliminado');

DELETE from incidentes where InciLugar='villapinzon';.


SET FOREIGN_KEY_CHECKS=0;

CREATE table modificar_automotores(

camb_auto int auto_increment,

old_AutoMarca varchar(30),

old_AutoTipo int,

old_AutoModelo int,

old_AutoNumPasajeros int,

old_AutoCilindraje int,

old_AutoNumChasis varchar(20),

new_AutoMarca varchar(30),

new_AutoTipo int,

new_AutoModelo int,

new_AutoNumPasajeros int,

new_AutoCilindraje int,

new_AutoNumChasis varchar(20),

act_fechamodificacion date,

act_usuario varchar(45),

act_curs_cod varchar(50),

act_accion varchar(45),

primary key(camb_auto)

);
CREATE TRIGGER modi_automo BEFORE UPDATE on automotores

FOR EACH ROW

INSERT INTO modificar_automotores


(new_AutoMarca,new_AutoTipo,new_AutoModelo,new_AutoNumPasajeros,new_AutoCilindr
aje,new_AutoNumChasis,

old_AutoMarca,old_AutoTipo,old_AutoModelo,old_AutoNumPasajeros,old_AutoCilindraje,old
_AutoNumChasis,act_fechamodificacion,act_usuario,act_curs_cod,act_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,'Actualizado');

UPDATE automotores set


AutoMarca='ferrari',AutoTipo=7,AutoModelo=56,AutoNumPasajeros=569,
AutoCilindraje=2000,

AutoNumChasis='bmw record' where AutoTipo=2;

CREATE TRIGGER delete_aut AFTER DELETE on automotores

FOR EACH ROW


INSERT INTO
modificar_automotores(new_AutoMarca,new_AutoTipo,new_AutoModelo,new_AutoNumPas
ajeros,new_AutoCilindraje,new_AutoNumChasis,

old_AutoMarca,old_AutoTipo,old_AutoModelo,old_AutoNumPasajeros,old_AutoCilindraje,old
_AutoNumChasis,act_fechamodificacion,act_usuario,act_curs_cod,act_accion)

values('',0,0,0,0,'',old.AutoMarca,old.AutoTipo,old.AutoModelo,old.AutoNumPasajeros,old.Aut
oCilindraje,old.AutoNumChasis,

now(),current_user(),old.AutoPlaca,'Registro eliminado');

DELETE from automotores where AutoMarca='ferrari';

También podría gustarte