我是靠谱客的博主 正直书本,最近开发中收集的这篇文章主要介绍mysql之视图,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

介绍

是一种虚拟存在的表,视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。
通俗的说,视图只保存查询的sql逻辑,不保存查询结果。所以在创建视图的时候,主要的工作落在这条SQL查询语句上。

创建视图

create or replace view stu_v_1 as select id, name from student where id <= 10;

查询视图

查看创建视图语句:show create view 视图名称;
查看视图数据:select * from 视图名称 where 条件;

修改视图

1.create or replace view stu_v_1 as select id, name from student where id <= 10;
2.alter view 视图名称[(列名列表)] as select id, name from student where id <= 10;;

删除

drop view [if exists] 视图名称;

插入数据

因为视图并不保存数据,所以数据是存储到真实的表中。
insert into stu_v_1 values(字段值);
为了避免出现添加数据到数据库,但视图查询不到的问题,通过在where条件后添加:with cascaded check option 语句来避免出现这种问题,阻止这条语句加入。比如:
where id <= 20 with cascaded check option; 当添加id>20的数据时,会出现添加失败的提醒。

视图的检查选项

当使用 with [ cascaded | local ] check option 子句创建视图时,Mysql会通过视图检查正在更改的每个行,如 增 删 改,以使其符合视图的定义。允许基于另一个视图创建视图,它还会检查依赖视图中的规则以保持一致性。有 cascade(默认)和local。

cascaded:属于向下级联
在这里插入图片描述
如上图所示,v2基于v1创建,v2的cascaded check option 会作用于v1的where查询条件;而v3基于v2创建,但其没有check,故不会检查 id <= 15这个条件,但仍会检查v1和v2。

local
类似与局部功能,只有 定义了 with local check option 才会检查where条件,会递归查询,但local只作用于当前语句,不会传递下去。
在这里插入图片描述
对于v2当插入数据为17,仍然插入成功,v1因为没有视图的检查选项,所以不会检查其 id 范围。

视图的作用

1.简单:
简化用户对数据的理解,以及他们的操作。那些被经常使用的查询可以被定义为视图,从而使用户不必为以后的操作每次指定全部的条件。
2.安全:
数据库可以授权,但不能授权到特定的行和列,通过视图用户只能查询和修改他们所能见到的数据。 比如表中的学号,我们不想让用户查询到,设置视图,只让用户查询姓名,以及id即可。
3.数据独立:
视图可帮助用户屏蔽真实表结构变化带来的影响

最后

以上就是正直书本为你收集整理的mysql之视图的全部内容,希望文章能够帮你解决mysql之视图所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部