概述
介绍
是一种虚拟存在的表,视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。
通俗的说,视图只保存查询的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之视图所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复