欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 存储对象之【视图】

存储对象之【视图】

2025/1/21 15:23:52 来源:https://blog.csdn.net/khjjjgd/article/details/144891770  浏览:    关键词:存储对象之【视图】

一 . 什么是视图

视图(View) 是一种虚拟存在的表。视图中的 数据并不在数据库中实际存在 ,行和列的数据来自定义视图的查询中使用的表(基表),并且是在使用视图时动态生成的。

通俗来说,视图不保存查询结果,只保存了查询了逻辑。---> 所以在创建视图的时候,主要工作就在 创建这条SQL语句上

 

二 . 基本语法 

  • 1.创建:create [or replace] view 视图名称[(列名列表)] as select 语句 [with [ cascaded | local ] check option
  • 2.查看创建视图语句:show create view 视图名称;
  • 3.查看视图的数据: select * from 视图名称......;
  • 4.修改视图:

方式一: create [or replace] view 视图名称[(列名列表)] as select with [cascaded | local ] check option ] 

方式二: alter view 视图名称[(列名列表)] as select 语句 [with [ cascaded | local | check option]

  • 5.删除:drop view [if exists] 视图名称 [视图名称] ...

注:

1. 视图定义后,对视图的查询操作如同对基本表的查询操作一样 ,但视图的建立简化了查询操作

-- 创建视图
create or replace view stu_v_1 as select id,name from student where id <= 10;
-- 查询视图
show create view stu_v_1;
select * from stu_v_1;
select * from stu_v_1 where id < 3;
-- 修改视图
create or replace view stu_v_1 as select id,name,no from student where id <= 10;
alter view stu_v_1 as select id,name from student where id <= 10;
-- 删除视图
drop view if exists stu_v_1;

 

6.更新视图

由于视图是一张虚表,所以对视图的更新,最终转换成对基本表的更新。

1)其语法格式如同对基本表的更新操作一样。

2)添加--INSERT,修改--UPDATE,删除--DELETE

3)视图的应用场景:利于数据保密,简化查询操作,保证数据的逻辑独立性

三 . 视图检查选项

当使用with check option 字句创建视图时,MySQL会通过视图检查正在更改的每个行;例如  插入,更新,删除,以使其符合视图的定义。MySQL允许基于另一个视图创建视图,它还会依赖视图中的规则保持一致性。为了确定检查的范围,mysql提供了两个选项: cascaded 和 local , 默认值为cascaded  

比如,v2视图是基于v1视图的,如果在v2视图创建的时候指定了检查选项为 cascaded,但是v1视图 创建时未指定检查选项。 则在执行检查时,不仅会检查v2,还会级联检查v2的关联视图v1

 

比如,v2视图是基于v1视图的,如果在v2视图创建的时候指定了检查选项为 local ,但是v1视图创 建时未指定检查选项。 则在执行检查时,知会检查v2,不会检查v2的关联视图v1

 

 

四 . 视图更新

要使视图可更新,视图中的行与基础表中的行之间必须存在一对一的关系。如果视图包含以下任何一项,则该视图不可更新
  •   聚合函数或窗口函数(SUM()MIN()MAX()COUNT()等)
  • DISTINCT
  • GROUP BY
  • HAVING
  • UNION 或者 UNION ALL

五 . 视图作用 

1)操作简单
视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
2)安全
数据库可以授权,但不能授权到数据库特定行和特定的列上。通过视图用户只能查询和修改他们所能见到的数据
3)数据独立
视图可帮助用户屏蔽真实表结构变化带来的影响。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com