MySQL中视图和触发器学习

创建视图的语法:


其中,algorithm是可选参数,表示视图选择的算法,它有三个选项:undefined,merge,temptable。Undefined表示让MySQL自动选择所要使用的算法;merge表示将使用视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分;temptable表示将视图的结果存入临时表,然后用临时表执行语句。

Cascaded是可选参数,表示更新视图时要满足所有视图和表的相关条件,该参数是默认选项;local表示更新视图时,满足该视图本身定义的条件即可。

 

在单表上创建视图,例如,为use1表创建一个视图:

create view use1_view as select * fromuse1;

运行结束后查看该视图:describe use1_view;


我们可以看到,该视图已经成功创建。

在多表上创建视图,例如,为test3和gradeinfo表创建一个视图:

Create algorithm=merge view

test3_view(id,name,score)

as select test3.id,name,score

from test3,gradeinfo wheretest3.id=gradeinfo.id

with local check option;

运行后该视图结果如下:


已经成功选取两张表中部分数据组成视图。

 

一,修改视图的语法:


二,删除视图的语法:


例如,删除视图test3_view:drop view if exists test3_view;

运行之后该视图就会显示不存在:


创建触发器

一,创建只有一个执行语句的触发器的语法:


例如,创建一个t_time表,每次向test3中执行insert语句时,触发向t_time表中插入当前时间的触发器:

create trigger test3_time before insert

   -> on test3 for each row

-> insertinto t_time value(now());

验证是否成功创建触发器:

insert into test3 values(1,'linda','123');

运行之后,查看t_time表中是否插入了当前系统时间:


插入成功,说明触发器已经开始起作用了。

二,创建有多个执行语句的触发器的语法:


例如,对test3表执行delete语句时,对t_time表插入两条时间信息:

delimiter &&
create trigger test_trigger after delete
on test3 for each row
begin
insert into t_time values('2017-01-10');
insert into t_time values('2017-01-20');
end
&&
Delimiter ;

注意:MySQL默认;为结束符号,但是触发器中用到了;且不为结束符号,所以在创建触发器时可以用delimiter &&,将MySQL的结束符号变为&&,当触发器创建成功之后,用delimiter;来还原;为结束符。

 

验证是否成功创建触发器:

delete from test3 where id=1;

运行之后查看t_time表中是否插入了2017-01-10和2017-01-20:

插入成功,说明多个执行语句的触发器开始起作用了。

三,查看触发器

在MySQL中,所有的触发器都被information_schema数据库下的triggers表中,查看triggers表,可以看到数据库下所有触发器的信息。

查询所有触发器语句:select * from information_schema.triggers;

查询单个触发器,例如查询刚刚创建的test_trigger触发器:

select * from information_schema.triggerswhere trigger_name='test_trigger';

四,删除触发器:

例如删除刚刚创建的test_trigger:drop trigger test_trigger;

语句执行之后,再查看该触发器,显示empty;


视图,触发器就先掌握这些喽,下一次我们学一点基本的SQL查询语句。


  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值