lunes, 12 de agosto de 2013

Consultas en MySql

Algunas consultas en MySql de una base de datos


create database Ejemplo;

use Ejemplo;

create table TodosClientes (
  IdCliente int (4),
  Nombre varchar(25),
  Apellido varchar (25),
  Direccion varchar(40),
  Edad decimal(3),
  Sucursal int (2),
  Saldo decimal (10)
);

create table ClientesAdultos (
  IdCliente int (4),
  Nombre varchar(25),
  Apellido varchar (25),
  Direccion varchar(40),
  Edad decimal(3),
  Sucursal int (2),
  Saldo decimal (10)
);

create table ClientesNiños (
  IdCliente int (4),
  Nombre varchar(25),
  Apellido varchar (25),
  Direccion varchar(40),
  Edad decimal(3),
  Sucursal int (2),
  Saldo decimal (10)
);

create table Sucursales (
    IdSucursal int (2),
    NombreSucursal varchar (15),
    DireccionSucursal varchar (25)
);

insert into TodosClientes values (100,'Pedro','Lopez','Conocido1', 22, 1, 100);
insert into TodosClientes values (101,'Pablo','Castro','Conicido2', 35, 2, 150);
insert into TodosClientes values (102,'Juan','Calderon','Conocido3', 25, 3, 200);

insert into TodosClientes values (105,'Martin','Gonzales','Conocido5', 15, 1, 100);
insert into TodosClientes values (106,'Pepe','Guzman','Conicido6', 13, 2, 250);
insert into TodosClientes values (107,'Oscar','Peña','Conocido7', 16, 3, 300);

insert into Sucursales values (1,'Madero','Blvd. Madero #501');
insert into Sucursales values (2,'Centro','Alvaro Obregon #200 sur');
insert into Sucursales values (3,'Humaya','Blvd. Enrique Cabrera #25');

select * from ClientesAdultos;

select * from ClientesNiños;

select * from TodosClientes;

select * from Sucursales;


-- Procedimiento de almacenado para insertar

CREATE procedure InsertarCliente(IN Id int (4), Nombre varchar(25), IN Apellido varchar(25), IN Direccion varchar (40), IN Edad decimal (3), IN Sucursal int (2), IN Saldo decimal (10))
-- Creamos el insert
INSERT INTO TodosClientes VALUES(IdCliente, Nombre, Apellido, Direccion, Edad, Sucursal, Saldo);
-- Llamada al procedimiento de alamcenado
call InsertarCliente (103,'Jose', 'Perez', 'Conocido4', 31);


-- Procedimiento de almacenado con condicion

delimiter //
create procedure  InsertarClienteCondicion(IN Id int (4), Nombre varchar(25), IN Apellido varchar(25), IN Direccion varchar (40), IN Edad decimal (3), IN Sucursal int (2), IN Saldo decimal (10))
begin
if Edad < 18 then
insert into ClientesNiños values(IdCliente, Nombre, Apellido, Direccion, Edad, Sucursal, Saldo);
else
insert into ClientesAdultos values(IdCliente, Nombre, Apellido, Direccion, Edad, Sucursal, Saldo);
end if;
end;
//
-- Llamada al procedimiento de alamcenado
call InsertarClienteCondicion (104,'Mario', 'Lopez', 'Conocido5', 17);


-- Trigger para insertar clientes y agruparlos

delimiter //
CREATE TRIGGER InsertarClientesTriggers AFTER INSERT ON TodosClientes
FOR EACH ROW
begin
if NEW.Edad < 18 then
INSERT INTO ClientesNiños(IdCliente, Nombre, Apellido, Direccion, Edad, Sucursal, Saldo)
VALUES (NEW.IdCliente, NEW.Nombre, NEW.Apellido, NEW.Direccion, NEW.Edad, NEW.Sucursal, NEW.Saldo);
else
INSERT INTO ClientesAdultos(IdCliente, Nombre, Apellido, Direccion, Edad, Sucursal, Saldo)
VALUES (NEW.IdCliente, NEW.Nombre, NEW.Apellido, NEW.Direccion, NEW.Edad, NEW.Sucursal, NEW.Saldo);
end if;
end;
//
delimiter ;


-- Vistas

CREATE VIEW ClientesSaldos AS
(SELECT IdCliente, Nombre, Saldo FROM TodosClientes);
-- Ver la tabla virtual que se creo en la vista
SELECT * FROM ClientesSaldos;


DELIMITER //
CREATE FUNCTION SumaClientes () RETURNS INT (10)
BEGIN
    RETURN
COUNT (*) as SumaClientes
FROM   TodosClientes

END //
DELIMITER;

delimiter $
CREATE FUNCTION age (date1 DATE, date2 DATE)
RETURNS INT
BEGIN
   DECLARE age INT;
   SET age = (YEAR(date2) - YEAR(date1)) - IF(RIGHT(date2,5) < RIGHT(date1,5),1,0);
   RETURN age;
END$
delimiter ;

No hay comentarios:

Publicar un comentario