MySQL基础之视图(八)

视图

视图: 虚拟表,和普通表一样使用。mysql5.1版本出现的新特性,是通过表动态生成的数据,只保存了sql逻辑,不保存结果。
应用场景:
1.多个地方用到同样的查询结果
2.该查询结果使用的sql语句比较复杂

一、创建视图
语法:
create view 视图名
as
查询语句;

#1.查询邮箱中包含a字符的员工名、部门名和工种信息
create view myv1
as
select last_name,department_name,job_title
from employees e
join departments d on e.department_id=d.department_id
join jobs j on j.job_id=e.job_id;

select * from myv1 where last_name like '%a%';
#2.查询各部门的平均工资级别
create view myv2
as 
select avg(salary) ag,department_id
from employees 
GROUP BY department_id;

select myv2.ag,g.grade_level 
from myv2
join job_grades g
on myv2.ag BETWEEN g.lowest_sal and highest_sal;
#3.查询平均工资最低的部门信息
select * from myv2 ORDER BY ag LIMIT 1;
#4.查询平均工资最低的部门名和工资
create view myv3
as
select * from myv2 ORDER BY ag LIMIT 1;

select d.*,m.ag 
from myv3 m
join departments d
on m.department_id=d.department_id;

视图的好处:
1.重用sql语句
2.简化复杂的sql操作,不必知道它的查询细节
3.保护数据,提高安全性

二、修改视图
方式一:
create or replace view 视图名
as
查询语句;
方式二:
alter view 视图名
as
查询语言;

三、删除视图
语法:drop view 视图名,视图名,. . .;

四、查看视图
desc 视图名;
show create view 视图名;

五、更新视图
create or replace view 视图名
as
查询语句

具备以下特点的视图不允许更新:
1.包含以下关键字的sql语句:分组函数、distinct、group by 、 having、union
2.常量视图
3.select中包含子查询
4.join
5.from一个不能更新的视图
6.where子句的子查询引用了from子句中的表

视图与表区别:
1、视图:create view,占用较小物理空间只保存了sql逻辑,增删改查,只是一般不能增删改;
2、表:create table,保存实际的数据,增删改查。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值