MySQL中视图和触发器学习

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 创建视图的语法: 其中,algorithm是可选参数,表示视图选择的算法,它有三个选项:undefined,merge,temptable。Undefined表示让MySQL自动选择所要使用的算法;merge表示将使用视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分;temptable表示将视图的结果存入临时表,然后用临时表执行语句。 Cascaded是可

创建视图的语法:


其中,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查询语句。


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
关系型数据库 MySQL Shell
shell学习(十七) 【mysql脚本备份】
shell学习(十七) 【mysql脚本备份】
14 0
|
1月前
|
关系型数据库 MySQL 数据处理
轻松入门MySQL:数据库之触发器,自动守护你的数据宝库(17)
轻松入门MySQL:数据库之触发器,自动守护你的数据宝库(17)
|
1月前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:视图之美,简化查询、提升效率的数据库利器(14)
轻松入门MySQL:视图之美,简化查询、提升效率的数据库利器(14)
|
1月前
|
存储 关系型数据库 MySQL
MySQL中如何创建一个视图
MySQL中如何创建一个视图
20 0
|
1月前
|
存储 关系型数据库 MySQL
mysql视图
mysql视图
|
1月前
|
SQL 存储 关系型数据库
6本值得推荐的MySQL学习书籍
本文是关于MySQL学习书籍的推荐,作者在DotNetGuide技术社区和微信公众号收到读者请求后,精选了6本值得阅读的MySQL书籍,包括《SQL学习指南(第3版)》、《MySQL是怎样使用的:快速入门MySQL》、《MySQL是怎样运行的:从根儿上理解MySQL》、《深入浅出MySQL:数据库开发、优化与管理维护(第3版)》以及《高性能MySQL(第4版)》和《MySQL技术内幕InnoDB存储引擎(第2版)》。此外,还有12本免费书籍的赠送活动,涵盖《SQL学习指南》、《MySQL是怎样使用的》等,赠书活动有效期至2024年4月9日。
|
4天前
|
关系型数据库 MySQL
MySQL第四战:视图以及常见面试题(上)
MySQL第四战:视图以及常见面试题(上)
|
4天前
|
存储 关系型数据库 MySQL
学习MySQL(5.7)第二战:四大引擎、账号管理以及建库(干货满满)
学习MySQL(5.7)第二战:四大引擎、账号管理以及建库(干货满满)
|
13天前
|
SQL 监控 关系型数据库
【MySQL学习】MySQL的慢查询日志和错误日志
【MySQL学习】MySQL的慢查询日志和错误日志
|
13天前
|
存储 关系型数据库 MySQL
Mysql学习--深入探究索引和事务的重点要点与考点
Mysql学习--深入探究索引和事务的重点要点与考点