mysql-视图-触发器-事务-存储过程-流程控制

一、视图

'''
数据:
create table dep(
	id int primary key auto_increment,
	name varchar(16),
	work varchar(16)
);
create table emp(
	id int primary key auto_increment,
	name varchar(16),
	salary float,
	dep_id int
);
insert into dep values(1, '市场部', '销售'), (2, '教学部', '授课'), (3, '管理部', '开车');
insert into emp(name, salary, dep_id) values('egon', 3.0, 2),('yanghuhu', 2.0, 2),('sanjiang', 10.0, 1),('owen', 88888.0, 2),('liujie', 8.0, 1),('yingjie', 1.2, 0);
'''

select * from emp left join dep on emp.dep_id = dep.id
union
select * from emp right join dep on emp.dep_id = dep.id;

# 全连接形成一张新表,现有查询是基于全连接这张新表,如何来操作
# 解决:将新表其别名full_table,将需求转换为 select 需求字段 from full_table 条件
create view temp(emp_id,emp_name,salary,dep_id,dep_id2,dep_name,work) as 
select * from emp left join dep on emp.dep_id = dep.id
union
select * from emp right join dep on emp.dep_id = dep.id;

what: 视图是由一张表或多张表的查询结果构成的一张虚拟表
why: 将复杂常用的查询结果保留下来重复使用 | 将一张大表拆分成多张小表

语法:
create [or replace] view 视图名[(查询字段别名们)] as 查询语句
create view new_emp as (select * from emp);

1.查询字段别名们要与查询语句的查询字段对应

2.create or replace: 操作视图没有则创建,有则替换
create or replace view new_emp(id,姓名,工资) as (select id,name,salary from emp where dep_id = 2);

3.视图中字段的操作:不允许alter操作字段
alter table new_emp rename new_emp1; # 报错
alter view new_emp modify id tinyint; # 报错

4.视图中记录的操作:等价于普通表,完成增删改查
update new_emp set 姓名='san' where id = 3;
delete from new_emp where id = 3;
nsert into new_emp(id, 姓名, 工资) values (10, "Bob", 10000); #操作的是实体表,虚拟表要重新创建才能拿到最新数据

5.视图的删除:
drop view 视图名:

二、触发器

'''
what:在表发生数据更新时,会自动触发的功能称之为触发器
why:当一个表在发生数据更新时,需要去完成一些操作,可以为具体数据更新的方式添加触发器

语法:
delimiter //
create trigger 触发器名 before|after insert|update|delete on 表名 for each row
begin 
    需要触发执行的sql代码们
end
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值