网站建设优化网站排名,wordpress4.9下载,网页安全防护怎么关闭,雄安专业网站建设公司视图是一种虚拟临时表#xff0c;并不真正存储数据#xff0c;它的作用就是方便用户查看实际表的内容或者部分内容
1.视图的使用语法
#xff08;1#xff09;创建
create view 视图名称 as select语句;
#视图形成的虚拟表就来自于select语句所查询的实际表#xff0c;…视图是一种虚拟临时表并不真正存储数据它的作用就是方便用户查看实际表的内容或者部分内容
1.视图的使用语法
1创建
create view 视图名称 as select语句;
#视图形成的虚拟表就来自于select语句所查询的实际表这个实际表称为视图的基表 2查询
#查询视图创建语句
show create view 视图名称;#查看视图数据:
select * from 视图名
#由于视图的数据就来自实际表所以可以直接把视图当做普通表来查询3修改
方式一:
replace view 视图名 as select语句;方式二:
alter view 视图名 as select语句;4删除
drop view 视图名; 2.视图的检查选项
视图虽然是虚拟表不存储数据但依然可以对它进行增删改只是增删改的对象是视图的基表。
要了解视图的检查选项的作用可以先观察下面的实例 这条语句创建的视图是基表加上where条件创建的那么当对这个视图进行增删改但却违反where条件时增删改会执行成功吗 用上图中的2条语句插入数据第二条违反了where条件结果全部都执行成功了。
会出现这种情况就是因为创建视图的语句中缺少了检查选项。
视图的检查选项有2种cascaded、loacl
2.1 cascaded默认
在创建视图的语句后添加with check option也就是检查选项后
create view 视图名称 as select语句 with check option;
视图的增删改就会检查创建时所设置的条件如果违反条件则增删改就会执行失败。
with check option是with cascaded check option的简写如果写成with loacl check option则代表loacl检查
cascaded检查个特别的注意事项
由于视图可以根据其他视图创建所以就存在是否继承其他视图的约束条件的问题
1视图2有检查选项←视图1无检查选项←基表 像上图这样stu_v_2视图根据stu_v_1创建同时又在stu_v_2创建语句后加了cascaded检查选项那么stu_v_2的增删改就会同时判断stu_v_2、stu_v_1两个视图的约束条件。也就是说上图只有15Tom添加成功了其他2条都失败了
2试图3无检查选项←视图2有检查选项←视图1无检查选项←基表 继续前面的案例。若如上图这样创建stu_v_3那么stu_v_3的增删改会看stu_v_2及stu_v_1的约束条件而不看stu_v_3自身的约束条件因为stu_v_3创建语句本身没加检查选项也就是上图中的前2条语句添加数据成功第3条语句添加数据失败。
2.2 local
1视图2有检查选项←视图1无检查选项←基表 对于上图的v2视图在进行增删改时只看自己的约束条件而不看v1的约束条件。
如果v1的创建语句后也有with loacl check option那么就会同时看v2、v1的约束条件了。这也是两种检查选项的主要区别
2试图3无检查选项←视图2有检查选项←视图1无检查选项←基表 对于上图的v3视图在进行增删改时只看v2的约束条件而不看v3、v1的约束条件 3.视图增删改的条件
对视图进行增删改的前提是视图中的行要与基表中的行一对一。
若视图包含以下任何一项就违反了这一前提
1聚合函数或窗口函数如sum、min、max、count等
2distinct去重
3group by分组
4having
5union或union all联合查询