一、介绍及基本语法
- 1、介绍
- 2、语法
create [or replace] view 试图名称 as select 语句
select语句也可以从一个视图里面进行查询
二、视图检查选项
-
1、 with cascaded check option语句
检查当前视图以及依赖的视图的条件查询(不管是否有视图检查条件)
解释:向视图v1中添加数据时不需要判断,id<=20,因为没有检查选项(黄色表示没有添加)
向视图v2中添加数据时需要判断,20>= id >=10
向视图v2中添加数据时需要判断,20>= id >=10,不需要判断id<=15 -
2、local语句
检查当前视图的条件以及依赖视图是否设置视图检查选项,有就进行校验,没有就不进行校验
解释:只有v2添加了视图检查选项(local)向视图v1中添加数据时不需要判断,id<=15,因为V1没有检查选项
向视图v2中添加数据时只需要判断, id >=10
向视图v2中添加数据时只需要判断,id >=10,因为v3、v1没有检查选项,只有v2有检查选项
三、视图的更新
及视图后的select语句不能是上面的仍和一项
四、视图的作用
-
作用一:
提高了重用性,就像一个函数。查询每个学生所选修的课程(三张表联查),这个功能在很多业务中都有使用,我们可以创建一个视图。
create view stu_course_view as select s.name,s.id,c.name from student s, course c, student_course sc where s.id = sc.studentid and c.id=sc.couesrid
-
作用二:
对数据库重构,却不影响程序的运行。对数据库重构,却不影响程序的运行。假如因为某种需求,需要将user拆分为表usera和表userb,该两张表的结构如下:
测试表:usera有id,name,age字段
测试表:userb有id,name,sex字段
解决方案:创建视图。以下sql语句创建视图:create view user as select a.name,a.age,b.sex from usera as a, userb as b where a.name=b.name;
-
作用三:
提高了安全性能。可以对不同的用户,设定不同的视图。例如:某用户只能获取user表的name和age数据,不能获取phone数据。则可以这样创建视图。示例如下:
create view user_message as select u.name, u.age from user as u;