miércoles, 29 de mayo de 2013

Practica de Vistas en MySQL (Video Tutorial Ejemplo)




By JessyGerman :)

Practica de Triggers en MySQL (Video Tutorial Ejemplo)



By JessyGerman :)

¿Como implementar un Trigger en MySQL?

mysql> create database dbclientes;
Query OK, 1 row affected (0.00 sec)




mysql> use dbclientes;
Database changed
mysql> create table tbclientes(codigo_cli int primary key,nombre_cli varchar(250),trabajo_cli varchar(250));
Query OK, 0 rows affected (0.03 sec)


mysql> describe tbclientes;
3 rows in set (0.00 sec)


mysql> insert into tbclientes(codigo_cli,nombre_cli,trabajo_cli) values (1,'Edith Martinez Hernandez','Informatica'),(2,'Juan Carmona Hernandez','Cont
rol de la Contaminacion'),(3,'Fernanda Lopez Perez','Productividad');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0


mysql> select * from tbclientes;
3 rows in set (0.00 sec)








mysql> create table tbcopiaclientes(codigo_cop int primary key,nombre_cop varchar(50),trabajo_cop varchar(50),usuario_cop varchar(50),modificado_cop d
atetime);
Query OK, 0 rows affected (0.03 sec)



mysql> describe tbcopiaclientes;
5 rows in set (0.02 sec)

 
 






mysql> delimiter //
mysql> create trigger nuevocliente after insert on tbclientes for each row
    -> begin
    -> insert into tbcopiaclientes(codigo_cop,nombre_cop,trabajo_cop,usuario_cop,modificado_cop) values (new.codigo_cli,new.nombre_cli,new.trabajo_cli
,current_user(),now());
    -> end//
Query OK, 0 rows affected (0.02 sec)


mysql> delimiter ;
mysql> show triggers;
1 row in set (0.01 sec)



mysql> insert into tbclientes() values (4,'Carlos Manuel Zavala','Informatica');
Query OK, 1 row affected (0.03 sec)



 



mysql> select * from tbclientes;
4 rows in set (0.00 sec)
 







mysql> select * from tbcopiaclientes;
1 row in set (0.00 sec)




mysql> drop trigger nuevocliente;
Query OK, 0 rows affected (0.00 sec)




mysql> drop database dbclientes;
Query OK, 2 rows affected (0.00 sec)




Vistas en una Base de Datos

Obsevaremos una diferentes forma de ver datos en una base datos.


mysql> create database notas;
Query OK, 1 row affected (0.15 sec)





mysql> use notas;
Database changed
mysql> create table alumnos(matricula int not null primary key,nombre varchar(30),apellidos varchar(50),semestre varchar(20),modulo varchar(50),calif_1 int,calif_2 int,calif_3 int);
Query OK, 0 rows affected (0.16 sec)





mysql> insert into alumnos(matricula,nombre,apellidos,semestre,modulo,calif_1,calif_2,calif_3) values (123,'Edith','Martinez Hernandez','Cuarto','COBD',8,9,10),(456,'Manuel','Zaval
a Contreras','Cuarto','COBD',9,8,7),(678,'Irving','Gonzalez Mena','Cuarto','COBD',7,6,5);
Query OK, 3 rows affected (0.09 sec)
Records: 3  Duplicates: 0  Warnings: 0




mysql> create view vista_alumnos as select matricula,nombre,apellidos,(calif_1+calif_2+calif_3)/3 as promedio from alumnos;
Query OK, 0 rows affected (0.10 sec)



mysql> show tables;
2 rows in set (0.06 sec)








mysql> select * from vista_alumnos;
3 rows in set (0.04 sec)









mysql> insert into alumnos values(912,'Fabian','Mora Sanchez','Cuarto','COBD',10,9,8);
Query OK, 1 row affected (0.02 sec)


mysql> select * from alumnos;
4 rows in set (0.00 sec)

mysql> select * from vista_alumnos;
4 rows in set (0.00 sec)

 
mysql> create database biblioteca;
Query OK, 1 row affected (0.00 sec)




mysql> use biblioteca;
Database changed
mysql> create table autor(codigo int not null auto_increment primary key,nombre varchar(30));
Query OK, 0 rows affected (0.09 sec)
mysql> describe autor;
2 rows in set (0.03 sec)


 

mysql> create table libros(codigo int not null auto_increment primary key,titulo varchar(30),ISBN varchar(30),editorial varchar(30),num_paginas int);
Query OK, 0 rows affected (0.06 sec)
mysql> describe libros;
5 rows in set (0.01 sec)


mysql> create table usuarios(codigo_usuario int not null auto_increment primary key,nombre varchar(30),direccion varchar(50),telefono varchar(30),codigo_ejemplar int);
Query OK, 0 rows affected (0.04 sec)
mysql> describe usuarios;
5 rows in set (0.01 sec)
 



mysql> create table ejemplares(codigo_ejemplar int not null auto_increment primary key,localizacion varchar(30));
Query OK, 0 rows affected (0.05 sec)
mysql> describe ejemplares;
2 rows in set (0.01 sec)





mysql> insert into usuarios(nombre,direccion,telefono,codigo_ejemplar) values ('Miguel','Ave Signos 23','53221234',3),('Pedro','Calle Tulipanes','54321234',4),('Amanda','Ave. Const
elacion','56432345',5);
Query OK, 3 rows affected (0.03 sec)
Records: 3  Duplicates: 0  Warnings: 0




mysql> select * from usuarios;
3 rows in set (0.00 sec)







sábado, 25 de mayo de 2013

Triggers (2 Disparadores)

Podrás ver claramente el procedimiento para agregar dos disparadores (2 trigger´s). Normalmente su uso lo hacemos para Seguridad de la base de Datos.

mysql> create database pruebas_dispara;

Query OK, 1 row affected (0.05 sec)






mysql> use pruebas_dispara;
Database changed
mysql> create table clientes(id_cliente int not null auto_increment,nombre varch
ar(100),seccion varchar(20),accion varchar(10) default 'insertado',primary key(i
d_cliente),key(nombre));
Query OK, 0 rows affected (0.48 sec)







mysql> describe clientes;









4 rows in set (0.12 sec)
mysql> insert into clientes (nombre,seccion) values ('miguel','Informatica'), ('
Rosa','comida'),('maria','ropa'),('albert','informatica'),('jordi','comida');
Query OK, 5 rows affected (0.06 sec)
Records: 5  Duplicates: 0  Warnings: 0





mysql> select * from clientes;
5 rows in set (0.00 sec)











mysql> create table auditoria_clientes (id int not null auto_increment,nombre_an
terior varchar(100),seccion_anterior varchar(20),nombre_nuevo varchar(100),secci
on_nueva varchar(20),usuario varchar(49),modificado datetime,proceso varchar(10)
,id_cliente int(4),primary key(id));
Query OK, 0 rows affected (0.05 sec)








mysql> describe auditoria_clientes;












9 rows in set (0.01 sec)
mysql> delimiter //
mysql> create trigger inserta_auditoria_clientes
    -> after insert on clientes
    -> for each row
    -> begin
    -> insert into auditoria_clientes(nombre_nuevo, seccion_nueva, usuario, modi
ficado, proceso, id_cliente)
    -> values (new.nombre, new.seccion, current_user(), now(), new.accion, new.i
d_cliente);
    -> end;
    -> //

Query OK, 0 rows affected (0.06 sec)









mysql> create trigger modifica_auditoria_clientes
    -> before update on clientes
    -> for each row
    -> begin
    -> insert into auditoria_clientes(nombre_anterior, seccion_anterior, nombre_
nuevo, seccion_nueva, usuario, modificado, id_cliente)
    -> values (old.nombre, old.seccion, new.nombre, new.seccion, current_user(),
 now(),new.id_cliente);
    -> end;
    -> //

Query OK, 0 rows affected (0.17 sec)




mysql> create trigger elimina_auditoria_clientes
    -> after delete on clientes
    -> for each row
    -> begin
    -> insert into auditoria_clientes(nombre_anterior,seccion_anterior,usuario,m
odificado,id_cliente)
    -> values(old.nombre,old.seccion,current_user(),now(),old.id_cliente);
    -> end;
    -> //
Query OK, 0 rows affected (0.01 sec)






mysql> delimiter ;
mysql> show triggers;
3 rows in set (0.06 sec)













mysql> insert into clientes(nombre,seccion) values ('Edith Martinez','Informatica');

Query OK, 1 row affected (0.20 sec)




mysql> select * from clientes;
6 rows in set (0.00 sec)









mysql> select * from auditoria_clientes;
1 row in set (0.01 sec)








mysql> update clientes set nombre='Jordi Apolinar',seccion='Productividad' where id_cliente=5;
Query OK, 1 row affected (0.07 sec)
Rows matched: 1  Changed: 1  Warnings: 0







mysql> select * from clientes;
6 rows in set (0.00 sec)










mysql> select * from auditoria_clientes;
2 rows in set (0.00 sec)










mysql> delete from clientes where nombre='Edith Martinez';
Query OK, 1 row affected (0.00 sec)





mysql> select * from clientes;
5 rows in set (0.00 sec)








mysql> select * from auditoria_clientes;
3 rows in set (0.00 sec)