MySQL基础-18 视图

视图

含义:虚拟表,和普通表一样使用
mysql 5.0.1 版本出现的新特性,是通过表动态生成的数据,只保存了sql逻辑,不保存查询结果

应用场景:

  • 多个地方用到同样的查询结果
  • 该查询结果使用的sql语句较复杂

好处:

  • 重用sql语句
  • 简化复杂的sql操作,不知道它查询的细节
  • 保护数据,提高安全性

1 创建视图

语法:
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%';
  1. 查询各部门的平均工资级别
CREATE VIEW myv2
AS 
SELECT AVG(salary) ag,department_id
FROM `employees`
GROUP BY department_id;

SELECT * FROM myv2;

SELECT myv2.`ag`,g.grade_level
FROM myv2
JOIN job_grade g
ON myv2.`ag` BETWEEN g.lowest_sal AND g.highest.sal ;
  1. 查询平均工资最低的部门信息
SELECT * FROM myv2 ORDER BY ag LIMIT 1;
  1. 查询平均工资最低部门名和工资
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;

2 视图的修改

方式一:
create or replace view 视图名
as
查询语句;

方式二:
alter view 视图名
as
查询语句;

3 删除视图

语法
drop view 视图名,视图名…;

4 查看视图

方式一:desc 视图名;
方式二:show create view 视图名;

5 视图的更新

在视图中插入:insert,update,delete
注意:如果在视图中增删改了一条数据,原始表中也新增了一条。
所以视图一般添加只读权限。
视图的可更新性和视图中查询的定义有关系,以下类型的视图是不能更新的:

  • 包含以下关键字的sql语句:分组函数、distinct、group by、having、union或union all
  • 常量视图
  • select 中包含子查询
  • join
  • from一个不能更新的视图
  • where子句的子查询引用了from子句中的表

6 视图和表的对比

创建语法的关键字是否实际占用物理空间使用
视图create view没有,只是保存了sql逻辑增删改查,一般情况下只读
create table占用增删改查
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值