MySQL使用视图
2021/11/21 2:10:38
本文主要是介绍MySQL使用视图,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
为什么使用视图?
既然视图存在那就有它存在的必要。换言之,它有优点。
优点:
- 重用SQL语句
- 简化复杂的SQL操作。编写查询后,可以方便地重用它而不必知道它而不必知道它的基本查询细节。
- 使用表地组成部分而不是整个表
- 保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限
- 更改数据格式和表示。视图可返还与底层表的表示和格式不同的数据
有优点就有缺点
缺点:
- 视图不能索引,触发器,默认值或者规则。数据多时会造成影响。
- 如果用多个连接和过滤条件创建了视图或者嵌套了视图,可能会十分影响性能。
一、视图是什么?
视图是一个虚拟存在的表,和真实表一样是由行和列构成,视图的数据却不存在于数据库中,存在视图中的只是视图的定义。视图中的数据完全来自于表中,是在使用视图时获取的。视图和表的本质在于视图是基于真实表的一张虚拟的表,它的数据来源于真是表的基础上。
打个比方:真实表与视图,就如同一个物体照镜子,真实表就是就是那个物体,视图就是物体映在镜子里的图像。两者虽说在看着一样,但是镜子的图像是虚拟的,当物体改变时,镜子里映射的影像也会改变。
二、创建视图
语法 create view 视图名 as select语句
视图名:视图名必须是唯一命名,新创建的视图名不能和其他的视图名和其他的表名相同
select语句:指的是创建视图的select语句
例如:创建一个视图
select c.last_name, c.first_name, b.dept_name, c.birth_date from dept_emp a, departments b, employees c where a.dept_no = b.dept_no and a.emp_no = c.emp_no;
如果我们要查看查看视图字段情况的的话,可以 采用 describe 视图名
describe v_user;
如果要查看创建视图的SQL,可以 show create view 视图名
show create view v_user;
二、修改视图
一般将视图用于查询而不是更新用的。要更新的话
采用 alter view 视图名 as select语句 也可以先删除再创建
并不是所有的视图都可以更新的,视图定义中存在以下情况,则是不允许更新的
- 分组 使用order by 或者 having
- 聚集函数
- union或者union all的并操作
- 子查询
- distinct关键字
比如,在原视图里减少一个生日字段
alter view v_user as select c.last_name, c.first_name, b.dept_name from dept_emp a, departments b, employees c where a.dept_no = b.dept_no and a.emp_no = c.emp_no;
三、删除视图
那就是 drop view 视图名
drop view v_user;
四、查询视图
如果我们要使用视图查询
select * from v_user;
它等价于
select c.last_name, c.first_name, b.dept_name from dept_emp a, departments b, employees c where a.dept_no = b.dept_no and a.emp_no = c.emp_no;
这样看来视图的确是简化了sql 。
这篇关于MySQL使用视图的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-21MySQL集群部署资料:新手入门教程
- 2024-09-21MySQL集群资料:初学者入门指南
- 2024-09-21部署MySQL集群资料:新手入门教程
- 2024-09-20MySQL集群部署教程:新手入门指南
- 2024-09-20MySQL集群教程:初学者必备指南
- 2024-09-20部署MySQL集群项目实战:新手入门教程
- 2024-09-20如何部署MySQL集群:简单教程
- 2024-09-20MySQL集群部署:新手入门指南
- 2024-09-20部署MySQL集群学习:入门指南
- 2024-09-20部署MySQL集群入门教程