第八章《视图》

第八章《视图》

视图:视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包括数据
作为一个select语句保存在数据字典中的
通过视图,可以展现基表的部分数据,属兔数据来自定义视图的查询中使用的表
使用视图动态生成
基表:用来创建视图的表叫做基表base table
因为试图的诸多优点 如下:
1)简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。
2)安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。
3)数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。

总而言之,使用视图的大部分情况是为了保障数据安全性,提高查询效率。

视图是一张虚拟表,和真实的表一样包含一系列带有名称的行和列数据,视图是从一个或多个表中导出来的数据的结构,我们可以通过DML语句(insert,update,delete)来操作视图当中的数据,当视图当中的数据被修改时,基表当中的数据据也会被修改,反之也一样。

创建视图:a
CREATE [OR REPLACE] [ALGORITHM=UNDEFINED|MERGE|TEMPTABLE] VIEW 视图名称[(视图字段名)] AS select_statement [WHITH[CASCADED|LOCAL] CHECK OPTION]

OR REPLACE:用于修改已经创建好的视图的结构(如果视图不存在,那就创建视图);

ALGORITHM:选择select语句运算方法

UNDEFINED:mysql自动选择算法

MERGE;合并,表示将视图设置的字段名称和select语句从表中获取的字段的内容合并

TEMPTABLE:临时表,表示将视图的结果存入临时表,然后用临时表来执行语句

column_list:定义的视图当中的字段名称

select_statement: 查询语句

WITH [CASCADED|LOCAL] CHECK OPTION;

CASCADED:默认为CASCADED,表示更新视图时,需要满足所有相关视图和表的条件限制

LOCAL:表示更新视图时,满足该视图本身定义的条件即可;

查看视图结构
desc 表名;
show create view 表名\G;

创建book表

在这里插入图片描述

创建视图
在这里插入图片描述
查看视图内容
在这里插入图片描述
查看视图结构
desc 表名;
show create view 表名\G;

创建视图创建table1表
在这里插入图片描述
在这里插入图片描述

用fruits和suppliers做
在这里插入图片描述
查看视图详细的信息;
(1)show create view 视图名\G
在mysql当中,视图的信息存储在information schema数据库下的views表中
select * from information_schema.views\G;
在这里插入图片描述
修改视图;
create or replace view 视图名 as select 。。。
在这里插入图片描述
更新视图:
1.update
在这里插入图片描述
在这里插入图片描述
修改视图,基表里面对应的数据也会被修改,反之相同
2.insert
在这里插入图片描述
3.delec
在这里插入图片描述
在这里插入图片描述
视图存在一下情况时,更新操作无效:
1.视图中不包含基表中被定义为非空的列
2.在定义视图的select语句后的字段列使用了数学表达式
3.在定义视图select语句里使用了聚合函数(count,max,min)
4.select语句中,使用了union、group by、order、having。
如果视图包含下述结构中的任何一种,那么它就是不可更新的:

(1)聚合函数;

(2)DISTINCT关键字;

(3)GROUP BY子句;

(4)ORDER BY子句;

(5)HAVING子句;

(6)UNION运算符;

(7)位于选择列表中的子查询;

(8)FROM子句中包含多个表;

(9)SELECT语句中引用了不可更新视图;

(10)WHERE子句中的子查询,引用FROM子句中的表;

(11)ALGORITHM 选项指定为TEMPTABLE(使用临时表总会使视图成为不可更新的)。

删除视图
DROP VIEW 视图名
删除视图不会影响到基表

mysq中视图和表的区别以及联系:
两者的区别:
(1)视图是已经编译好的SQL语句的结果集,是基于SQL语句结果集的可视化的表,而表不是;
(2)视图没有实际的物理记录,而表有;
(3)表是内容,视图是窗口;
(4)表和视图碎岩都占用物理空间,但是视图只是逻辑概念存在;
(5)视图是查看表数据的一-种方法,可以查询数据表中某些字段构成的数据,只是- -些SQL语句的
集合。从安全角度来说,视图可以防止用户接触数据表,因而不知道表结构;
(6)表属于全局模式的表,是实表。视图属于局部模式的表,是虚表;
(7)视图的建立和删除值影响视图本身,而不影响对应的基本表;

两者的联系:
试图使在基本表之上建立的表,他的结构和内容都来自于基本表,它依赖基本表存在而存在,一个视图可以对应一个基本表或多个。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101970.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • uIP协议栈分析_协议栈

    uIP协议栈分析_协议栈转载地址:http://blog.sina.com.cn/s/blog_abd39cc70101fj1f.htmluIP特性uIP协议栈往掉了完整的TCP/IP中不常用的功能,简化了通讯流程,但保存了网络通讯必须使用的协议,设计重点放在了IP/TCP/ICMP/UDP/ARP这些网络层和传输层协议上,保证了其代码的通用性和结构的稳定性。由于uIP协议栈专门为嵌进式系统而设计,因此还具有…

  • C++函数指针、指针函数、返回值为函数指针的函数浅谈

    C++函数指针、指针函数、返回值为函数指针的函数浅谈C++函数指针、指针函数、返回值为函数指针的函数浅谈引言函数指针、指针函数是C中重要而容易混淆的概念,博主将通过两个实例来说明这两个截然不同的概念。而返回值为函数指针的指针函数就更难理解了,放在文章的最后来介绍。函数指针函数指针是一种特殊的指针,它指向函数的入口。例如int(*add)(int,int);定义了一个函数指针add,用于指向返回值为int,并且有两个int参数的函数…

  • 项目管理知识体系五大过程组(项目管理10大知识领域)

    信息系统项目管理师属于计算机技术与软件专业技术资格(水平)考试五大高级资格考试中的一项,是信息系统建设领域的高级项目经理资质申报的直接性前提条件。通过本考试的合格人员能够掌握信息系统项目管理的知识体系,具有高级工程师的实际工作能力和业务水平。通过本考试的基本用途有以下2个:1、评职称:此证书在国企和事业单位可以评职称。2、申报项目经理:此证书可在自己所在企业申报系统集成项目经理,如果…

  • Nginx + Tomcat 搭建负载均衡

    Nginx + Tomcat 搭建负载均衡Nginx + Tomcat 搭建负载均衡

  • 搭建jenkins实现自动化部署微服务_自动化部署平台搭建

    搭建jenkins实现自动化部署微服务_自动化部署平台搭建一、安装jenkins1、添加yumrepos,然后安装注:如果上边的执行成功就不用再执行这两行了注:如果网络不好需要重试几次2、如果未安装java还需安装java3、启动和停止如果启动

  • Django(39)使用redis配置缓存[通俗易懂]

    Django(39)使用redis配置缓存[通俗易懂]前言动态网站的基本权衡是,它们是动态的。每次用户请求页面时,Web服务器都会进行各种计算-从数据库查询到模板呈现再到业务逻辑-以创建站点访问者看到的页面。从处理开销的角度来看,这比标准的文件

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号