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

来源:互联网 发布:nginx linux内核优化 编辑:程序博客网 时间:2024/05/20 11:34
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)
);

delimiter //

-- 创建触发器:

create trigger ToUserinfoLogbefore insert on userinfofor each rowinsert into userinfolog values(now(),concat(new.userid,'-',new.username));//

-- 创建存储过程

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

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'); //

-- 创建自定义函数

create function GetUserAge(birthday date)returns integerbeginreturn year(now()) - year(birthday);end//

-- 创建视图

create view ViewUserInfoasselect *,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;
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 尼日利亚落地签过期了怎么办 期货亏光了所有怎么办 期货钱亏完了该怎么办 做黄金亏损500万怎么办 炒黄金被骗35万怎么办 淘宝发货填错单号怎么办 发货单号填错了怎么办 发快递忘了单号怎么办 国际物流查不到物流怎么办 纸币上印邪教该怎么办 钥匙掉到电梯缝里怎么办 汽车电子钥匙铜线折一根怎么办 防盗门的锁不好开怎么办 同学帮刷饭卡说不用还钱了怎么办 em231电源指示灯不亮怎么办 运行广联达卡住怎么办 马桶被粪便(大便)堵了怎么办 子宫壁厚12mm怎么办 管子太多每次洗澡都是冷水怎么办 热水冷水装反了怎么办 大树被高锰酸钾灌溉了怎么办会死吗 防盗门门被锁了怎么办 门被里面反锁了怎么办 门里面被锁了怎么办 被锁在门里怎么办 门锁住了没钥匙怎么办 车被别人锁住了怎么办 汽车轱辘被锁了怎么办 小车轮胎被锁了怎么办 国防光缆无明显标识被挖断怎么办 临工210挖掘机柴油进气怎么办 汽车抛光蜡干了怎么办 洗碗铁丝球吃了怎么办 牙套铁丝吃肚子怎么办 小铁丝吃到肚子怎么办 绿色抛光膏干了怎么办 不锈钢被盐酸弄黑了怎么办 不锈钢被草酸洗了怎么办 不锈钢洗菜盆被草酸腐蚀了怎么办 汽油发电机加了柴油怎么办 装载机发动机加入齿轮油怎么办