MySQL之——触发器和视图

触发器

  • 关键词:trigger
  • 适用于:在表的 插入(insert),更新(update),删除(delete) 操作发生时自动执行的MySQL语句

创建触发器时需给出的信息

  • 触发器名
  • 在操作前还是操作后触发(after / before)
  • 被什么操作触发(insert / update / delete)
  • 关联的表

使用出发操作的数据

  • insert :可通过new访问被插入的行,形式为(new.字段),before insert 可以更新new中的值(允许更改被插入的值)
  • delete:可以通过old访问被删除的行,old中的值是只读的
  • update:old访问更新前的值,new访问更新后的值

触发器创建格式如下:

#创建触发器
create trigger 触发器名 before(after) update(insert/delete) on 表名
for each row
begin
    触发逻辑
end;

#删除触发器
drop trigger 触发器名;

触发器练习 

下面我们来做一个练习来熟悉一下触发器:

 需求:给部门表 dept 添加员工数量字段 emp_nub ,使得员工表 emp 在添加员工时对应部门员工数量加1.

我们来逐步分析:

alter table dept add dept_nub int default 0;#在部门表中添加字段

update dept
set dept_nub = (select count(*) from emp where emp.deptno = dept.deptno)
#将已有数据填入到新字段中

#触发器(自动执行)
create trigger mytrigger after insert on emp#创建触发器  在添加一个新员工之后执行
for each row
begin
update dept
set dept_nub = dept_nub + 1                   #指令:新字段 部门人数加1
where deptno = new.deptno;                    #条件:部门编号等于更新的部门编号
end;

insert into emp(empno,deptno) values(666,20); #添加新员工

视图

  • 关键字:view
  • 概念:有查询结果形成的一个虚拟的表。视图不能索引,也不能有关联的触发器

作用:

  • 重用SQL语句
  • 简化查询语句,隐藏复杂的SQL(封装)
#创建视图
create view 视图名 as 查询语句;
#修改视图
alter view 视图名 as 查询语句;
#使用视图查询
select 查询内容 from 视图名;
#删除视图
drop view [if exists] 视图名;
#查看创建视图语句
show create view 视图名;

视图练习

需求:查询员工名,员工的部门名称,员工领导名称,和薪水等级

create view myview as                #创建视图
select e1.ename,dname,e2.ename as MGR_name,GRADE from
emp e1 left join emp e2 on e1.MGR = e2.empno    #内链接
join dept on e1.deptno = dept.deptno            #外连接
join salgrade on e1.sal between salgrade.losal and salgrade.hisal    #外连接
order by GRADE;

select * from myview;    #用视图查询

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coke_3.2.2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值