MySQL视图_刘锋的博客

视图

就是一个虚拟的表,有行有列

虚拟表是5.1之后出现的新特性,是通过普通表动态生成的数据,具有临时性的特点。

创建视图

语法

create view 视图名

as

查询语句;

查询邮箱中包含a字符的员工名、部门名和工种信息

# 创建视图
CREATE VIEW v1
AS
SELECT last_name,department_name,j.*
FROM employees e
JOIN jobs j
ON e.`job_id` = j.`job_id`
JOIN departments d
ON e.`department_id` = d.`department_id`;

# 根据视图来查询
SELECT * FROM v1 WHERE last_name LIKE '%a%';

查询各个部门的平均工资级别

# 创建视图
CREATE VIEW v2
AS 
SELECT AVG(salary) ag,department_id
FROM employees
GROUP BY department_id
# 根据视图连接别的表,实现数据的查询
SELECT v2.*,j.grade_level
FROM v2
JOIN job_grades j
ON v2.`ag` BETWEEN j.`lowest_sal` AND j.`highest_sal`;

查询平均工资最低的部门的信息

# 在视图的基础上创建新的视图
CREATE VIEW v3
AS
SELECT v2.department_id
FROM v2 
WHERE v2.`ag`= (
	SELECT MIN(v2.`ag`)
	FROM v2
)

#根据新建的视图查询
SELECT d.* 
FROM v3 
JOIN  departments d
ON v3.`department_id` = d.`department_id`

视图的好处:

1、重用sql语句

2、简化复杂的sql操作,不必知道它的查询细节

3、保护数据,提高安全性

视图修改

方式一:

create or replace view 视图名

as

查询语句

CREATE OR REPLACE VIEW v3 
AS 

方式二:

alter view 视图名

as

查询语句

ALTER VIEW v3
AS 

视图的删除

语法

drop view 视图名,视图名,…

DROP VIEW v1,v2,v3;

查看视图

DESC v1;
SHOW CREATE VIEW v1;

视图的更新

不是修改视图的逻辑

1、可以实现插入数据,一般不在视图里面增删改

一下情况不能更新:

①具备包含分组,distinct,group py,having,union或者union all

②常量视图

③select中包含子查询

④join

⑤from一个不能更新的视图

⑥where子句的子查询引用了from子句中的表

对比视图和表

创建的关键字不同

视图不实际为数据开启占用空间,只是保存了sql逻辑,表占用实际的空间

表和视图都能进行增删改,但是视图一般不增删改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值