mysql视图附带例子详解(小白都能懂哦) -凯发k8官方网
1.视图的概念
2.视图的应用场景
3.视图的特点
4.创建视图的格式
5.视图的修改
6.视图的删除
7.视图的查看
8.视图的更新
9.视图和表格的对比
10.视图的优缺点
视图是一种虚拟的表,和普通表用法一样,不是在内存中单独开辟一片空间(我们正常的表都是以储存的数据值形式存在,就是会单独在内存里边开辟一块空间),并且是在使用视图的时候动态生成的,只保存了sql逻辑,不保存查询结果
重用sql语句;
1.简化复杂的sql操作。在编写查询后,可以方便的重用它而不必知道它的基本查询细节;
2.使用表的组成部分而不是整个表;
3.保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限;
4.更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据。
1.视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系。
2.视图是由基本表(实表)产生的表(虚表)。
3.视图的建立和删除不影响基本表。
4.对视图内容的更新(添加,删除和修改)直接影响基本表。
5.当视图来自多个基本表时,不允许添加和删除数据。
create view 视图名(自定义) as select查询语句
举个例子,假如有一个学生信息表student,还有一个学生文理科状况表aas如图
student:
aas:
我们现在想要查看女生的姓名性别文理科状况,然后再查看选理科的同学的姓名性别文理科状况
按照正常写法:
1.查看女生的姓名性别文理科状况:
select sname,ssex,subject from student a join aas b on a.as_id=b.id where ssex=“女”
2.查看选理科的同学的姓名性别文理科状况
select sname,ssex,subject from student a join aas b on a.as_id=b.id where b.subject=“理科”
但是我们如果利用视图的话:
我们先把学生的姓名姓名文理科状况组合成一张视图:
create view abc as select sname,ssex,subject from student a join aas b on a.as_id=b.id
1.查看女生的姓名性别文理科状况
select * from abc where ssex=“女”
2.查看选理科的同学的姓名性别文理科状况
select *from abc where subject=“理科”
abc是视图的名字
这么看起来好像视图比普通的查询少不了多少代码,但是当我们用到视图部分的语句越多的时候,那么视图的优势就越明显,而且越简便
第一种方式:
create or replace vive 视图名 as 查询语句
语义是若该视图名不存在那么重新创建一个视图,如果存在那么新的查询结果就会覆盖原始数据
那么我们按照第四点提供的两个表和一张名为abc的视图举例
我们把视图改成只有学生的姓名和文理科:
create or replace view abc as select sname,subject from student a join aas b on a.as_id=b.id
然后视图abc就变成了:
第二种方式:
alter view 视图名 as 查询语句
表示的意思是查询语句覆盖已知视图
drop view 视图1,视图2...
desc 视图名
或者
show create vive 视图名
视图的更新是对视图进行增删改,视图的增删改会对原图进行同样的更改,视图的可更新性和视图的查询有定义关系
以下的情况是不能更新:
1.包含以下关键字的sql语句:分组函数,distinct,group by,having,union或union all
2.常量视图(常量视图代表查询一个已经查找好的表格或者常量等)
3.select中包含子查询
4.join
5.from一个不能更新的视图
6.where子句的子查询引用了from子句中的表
注意这里的不能更新不代表增删改的功能都不能使用,可能只具有其中一种或者几种功能,但是统称不能更新,一般的视图的更新用的比较少
1.创建方式不同
2.表格占据物理空间视图不占据物理空间(只是没有为视图数据没开辟空间进行存储,但是为视图的逻辑语句开辟空间存储,这种说法只是针对视图和表的数据而言)
3.表能进行增删改但是视图一般是不行的
10.1视图的优点
1.查询简单化。视图能简化用户的操作
2.数据安全性。视图使用户能以多种角度看待同一数据,能够对机密数据提供安全保护
3.逻辑数据独立性。视图对重构数据库提供了一定程度的逻辑独立性
10.2视图的缺点
1.性能。数据库必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,数据库也把它变成一个复杂的结合体,需要花费一定的时间。
2.修改限制。当用户试图修改视图的某些行时,数据库必须把它转化为对基本表的某些行的修改。事实上,当从视图中插入或者删除时,情况也是这样。对于简单视图来说,这是很方便的,但是,对于比较复杂的视图,可能是不可修改的
总结
以上是凯发k8官方网为你收集整理的mysql视图附带例子详解(小白都能懂哦)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: mysql数据操作(dml)详解(小白都
- 下一篇: mysql事物(详解并发问题和隔离级别)