day58-mysql-视图,触发器
一. 视图
1.1创建视图 create view p_view as select name,age from person;
视图的作用是隐藏数据,例如上面语句没有查询工资,是为了隐藏它,这样就避免无关人员看到敏感数据。
注意:视图修改了数据,会导致基本表的数据也随着被修改,或者基本表修改了数据,视图的数据也随着被修改,
例如视图把名字alex修改为alex_sb,那么基本表对应的名字也被修改。 create view 视图名字 as 查询sql语句; 1.2删除: drop view 视图名字; 1.3修改: alter view 视图名字 as 查询sql语句;
alter view p_view as select name,age,sex from person;--增加sex字段 1.4注意:当视图来自多个基本表时,无法增删改数据。
create view ps_view as select person.name,dept.dname from peron,dept where person.dept_id = dept.did;
上面视图来自两个基本表,操作一下增删改试试。 二. 触发器:监视某个事件,然后触发某个操作。
触发器创建语法四要素:1.监视地点(table)
2.监视事件(insert/update/delete)
3.触发时间(after/before)
4.触发事件(insert/update/delete)
创建触发器语法
create trigger triggerName after/before insert/update/delete
on 表名 for each row #这句话是固定的
begin
#需要执行的sql语句--注意语句后面需要加上分号;
end
注意1:after/before: 只能选一个 ,after 表示 后置触发, before 表示前置触发
注意2:insert/update/delete:只能选一个 1、监视事件:插入-insert:以商品发货为例: 1.1创建两张表:商品表goods和订单表order_table,当订单表插入发货数量count时,触发商品表减少相应数量num。
create table goods(
id int not null auto_increment primary key,
name varchar(10) not null,
num int not null);
insert into goods values(1,'商品1',10),(2,'商品2',10),(3,'商品3',10);--goods插入数据 create table order_table(
oid int not null auto_increment primary key,
gid int not null,
count int not null);
1.2创建触发器:
create trigger tg2 after insert on order_table --监视order_table这个表的每一行在插入数据之后
for each ROW
BEGIN
update goods set num = num - new.count where id = new.gid;--触发goods减少数量
end; 1.3插入数据:insert into order_table values(1,1,3);--goods商品1的数量自动修改为7 2、监视事件:更新-update:以商品退货为例:
create trigger tg2 after update on order_table
for each row
begin
update goods set num = num + old.count - new.count where id = new.gid;--old.count - new.count等于减掉的数量,也就是2
end; update order_table set count = count -2 where oid = 6;--订单表order_table退回2个商品给商品表,商品表数量自动加2 3、监视事件:删除-delete:以删除订单为例:
create trigger tg3 after delete on order_table
for each row
begin
update goods set num = num + old.count where id = old.gid;
end; delete from order_table where oid = 1;--删除订单,商品数量自动添加 4、查看触发器
show triggers;
或者右击 order_table--设计表--触发器 查看
day58-mysql-视图,触发器的更多相关文章
- mysql 视图 触发器 存储过程 函数事务 索引
mysql 视图 触发器 存储过程 函数事务 索引 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当 ...
- Mysql 视图,触发器,存储过程,函数,事务
视图 视图虚拟表,是一个我们真实查询结果表,我们希望将某次查询出来的结果作为单独的一个表,就叫视图,无法对图字段内容进行增删改. --格式: CREATE VIEW 视图名字 AS 操作; --比如: ...
- python mysql 视图 触发器 事物 存储过程 用户授权 数据备份还原
###################总结########### 视图是一个虚拟表(非真实存在) 是跑在内存中的表,真实表是在硬盘上的表 使用视图我们可以把查询过程中的临时表摘出来,保存下来,用视图去 ...
- mysql 视图 触发器 事物 存储过程 函数 流程控制
1.视图 *** 视图是有一条sql语句的查询结果构成的虚拟表 其不是物理存在的 使用方式与普通表相同 视图的作用1.简化sql语句的编写 2.限制可以查看的数据 可以使用权限来完成 权限某一个库 的 ...
- mysql视图 触发器 事物 函数 存储过程
一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...
- MySQL 视图触发器事务存储过程函数
事务 致命三问 什么是事务:开启了一个包含多条SQL语句的事务,这些SQL语句要么都执行成功,要么有别想成功:例如A向B转账,二人账户并不属于一家银行,在转账过程中由于网络问题,导致A显示转账 成功 ...
- MySQL 视图 触发器 事务 存储过程 函数 流程控制 索引与慢查询优化
视图 1.什么是视图? 视图就是通过查询得到的一张虚拟表,然后保存下来,下次可直接使用 2.为什么要使用视图? 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何使用视图? create view ...
- MySQL——视图/触发器/事务/存储过程/函数/流程控制
一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...
- MySQL视图,触发器,事务,存储过程,函数
create triggr triafterinsertcmdlog after insert on cmd_log FOR EACH ROW trigger_body .#NEW : 代表新的记录 ...
- mysql 视图/触发器/函数
一.视图 作用:简写代码,与临时表的作用差不多 .创建 create view 视图名 as SQL语句 .修改 alter view 视图名 as 新SQL语句 .删除 drop view 视图名 ...
随机推荐
- 吴裕雄--天生自然 PHP开发学习:运算符
<?php $x=10; $y=6; echo ($x + $y); // 输出16 echo '<br>'; // 换行 echo ($x - $y); // 输出4 echo ' ...
- Day 9:双列集合Map及实现该接口的类的常用方法
为什么要学双列集合? 因为单列集合无法处理映射关系,会有成对出现的数据 Map接口 如果是实现了Map接口的集合类,具备的特点: 存储的数据都是以键值对的形式存在的,键不可重复,值可以重复 Map接 ...
- React16 新特性
一.使用Error Boundary处理错误组件 React16之前:组件在运行期出错,会阻塞整个应用的渲染. React16之后:引入新的错误处理机制——Error Bounda ...
- axios基础介绍
axios基础介绍 get请求要在params中定义,post要在data中定义.
- VUE.js入门学习(1)-起步
1.hello world <div id="app">{{content}}</div>var app = new Vue({ el:'#app', da ...
- python 发送邮件,并且带附件
#!/usr/bin/pythonfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultiparti ...
- Shell脚本exit用法与区别
在Shell脚本中,往往会遇到一些判断类型为某个值不符合预期值的时候就退出主脚本/当前脚本/当前函数,那么Exit与return的用法与区别是什么呢? 下面先使用Exit举个简单例子,脚本内容如下 # ...
- Python Scrapy的QQ音乐爬虫 音乐下载、爬取歌曲信息、歌词、精彩评论
QQ音乐爬虫(with scrapy)/QQ Music Spider UPDATE 2019.12.23 已实现对QQ音乐文件的下载,出于版权考虑,不对此部分代码进行公开.此项目仅作为学习交流使用, ...
- 移动端H5开发遇到的问题及解决方法
本篇文章给大家带来的内容是关于移动端H5开发遇到的问题及解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 微信分享签名错误invalid signature vue单页应用hi ...
- i春秋-web-爆破-1
题目内容:flag就在某六位变量中. 题目 include "flag.php"; $a = @$_REQUEST['hello']; if(!preg_match('/^\w*$ ...