MySQL触发器、存储过程、自定义函数、视图 经常使用SQL

1.创建一个userinfo表新增记录时的触发器 将新增日志加入到userinfolog
2.创建一个向userinfo表新增记录的存储过程
3.根据userinfo表的出生日期字段 咱们将创建一个简单算得年龄的自定义函数
4.建立一个userinfo的视图 调用年龄函数

create table userinfo(
userid int,
username varchar(10),
userbirthday date
);
create table userinfolog(
logtime datetime,
loginfo varchar(100)
);mysql

delimiter //sql

-- 建立触发器:数据库

create trigger ToUserinfoLog before insert on userinfo for each row insert into userinfolog values(now(),concat(new.userid,'-',new.username));//app

-- 建立存储过程函数

create procedure insert_userinfo(user_id int,username varchar(10),userbirthday date) begin insert into userinfo values(user_id,username,userbirthday); end//spa

call insert_userinfo(1,'weizi',current_date);// call insert_userinfo(2,'mini','1998-03-12'); // call insert_userinfo(3,'echo','1981-01-25'); // call insert_userinfo(4,'apple','1990-11-25'); // call insert_userinfo(4,'vivi','1962-01-27'); // 日志

-- 建立自定义函数code

create function GetUserAge(birthday date) returns integer begin return year(now()) - year(birthday); end//orm

-- 建立视图事件

create view ViewUserInfo as select *,GetUserAge(userbirthday) as age from userinfo;//


触发器语法
CREATE TRIGGER <触发器名称>   <--触发器命名
   { BEFORE | AFTER }   <--触发器有执行的时间设置:能够设置为事件发生前或后
   { INSERT | UPDATE | DELETE }   <--设定触发的事件:它们能够在执行insert、update或delete的过程当中触发
   ON <表名称>    <-- 触发器是属于某一个表的
   FOR EACH ROW   <--触发间隔,每隔一行执行一次动做
  <触发器SQL语句>   <--这里的语句能够是任何合法的语句,包括复合语句,可是这里的语句受的限制和函数的同样

查询数据库中的存储过程和函数
select `name` from mysql.proc where db = 'your_db_name' and `type` = 'PROCEDURE';
show procedure status; 

select `name` from mysql.proc where db = 'your_db_name' and `type` = 'FUNCTION';
show function status;

查看存储过程或函数的建立代码
show create procedure pro_name;
show create function fun_name;
相似的,能够用show create database db_name;、show create table tab_name;、show create view view_name;查看数据库,表,视图等建立代码。

查看视图和表
SELECT * from information_schema.VIEWS;
SELECT * from information_schema.TABLES;
select * from information_schema.tables where table_schema='yourDatabaseName' and table_type='view';
show table status where comment='view'; 
在mysql中,view和table是同样的,使用show tables就能够看到新建的视图了。

查看触发器
语法:SHOW TRIGGERS [FROM db_name] [LIKE expr]
实例:SHOW TRIGGERS\G
建立代码 show create trigger trigger_name;

调用存储过程和函数
call pro_name();
select fun_name();

删除存储过程、函数、触发器
drop procedure pro_name;
drop function fun_name;
drop trigger t_trigger;
相关文章
相关标签/搜索