MySQL数据库实战教程-70-视图
admin
2023-08-03 12:02:56
0


MySQL数据库实战教程-70-视图

文章插图
转自:http://www.cnblogs.com/wangtao_20/archive/2011/02/24/1964276.html
【MySQL数据库实战教程-70-视图】 
一、使用视图的理由是什么?
1.安全性 。一般是这样做的:创建一个视图,定义好该视图所操作的数据 。之后将用户权限与视图绑定 。这样的方式是使用到
了一个特性:grant语句可以针对视图进行授予权限 。
2.查询性能提高 。
3.有灵活性的功能需求后,需要改动表的结构而导致工作量比较大 。那么可以使用虚拟表的形式达到少修改的效果 。
这是在实际开发中比较有用的
例子:假如因为某种需要,a表与b表需要进行合并起来组成一个新的表c 。最后a表与b表都不会存在了 。而由于原来程序中编
写sql分别是基于a表与b表查询的,这就意味着需要重新编写大量的sql(改成向c表去操作数据) 。而通过视图就可以做到不修
改 。定义两个视图名字还是原来的表名a和b 。a、b视图完成从c表中取出内容 。
说明:使用这样的解决方式,基于对视图的细节了解越详细越好 。因为使用视图还是与使用表的语法上没区别 。比如视图名a
,那么查询还是"select * from a" 。
4.复杂的查询需求 。可以进行问题分解,然后将创建多个视图获取数据 。将视图联合起来就能得到需要的结果了 。

视图的工作机制:当调用视图的时候,才会执行视图中的sql,进行取数据操作 。视图的内容没有存储,而是在视图被引用的时候才派生出数据 。这样不会占用空间,由于是即时引用,视图的内容总是与真实表的内容是一致的 。
视图这样设计有什么好处?节省空间,内容是总是一致的话,那么我们不需要维护视图的内容,维护好真实表的内容,就可以保证视图的完整性了 。
二、通过更新视图实现更新真实表
看到很多例子,更新视图可以更新真实表 。原因,我是这样理解的:视图并没有保存内容 。只是引用数据 。那么,更新视图,其实就是以引用的方式操作了真实表
with check option:对视图进行更新操作的时,需要检查更新后的值是否还是满足视图公式定义的条件 。通俗点,就是所更新的结果是否还会在视图中存在 。如果更新后的值不在视图范围内,就不允许更新如果创建视图的时候,没有加上with check option,更新视图中的某项数据的话,mysql并不会进行有效性检查 。删掉了就删掉了 。在视图中将看不到了 。

使用有效性检查,实际意义是什么?

视图的实践:重新组织表的需求
CREATE TABLE `result` (`MATH_NO` INT(10) NOT NULL unsigned AUTO_INCREMENT PRIMARY KEY,
`TEAMNO` INT(10) NOT NULL,
`PLAYERNO` INT(10) NOT NULL,
`WON` VARCHAR(10) NOT NULL,
`LOST` VARCAHR(10) NOT NULL,
`CAPTAIN` INT(10) NOT NULL COMMIT ‘就是PLAYERNO的另外名字‘,
`DIVISION` VARCHAR(10) NOT NULL
) ENGINE=MYISAM  DEFAULT CHARSET=utf8 COMMIT=‘重新组的新表‘ AUTO_INCREMENT=1

针对每个表创建一个视图,将数据保存进去:
CREATE VIEW teams(TEAMNO,PLAYERNO,DIVISION) AS SELECT  DISTINCT TEAMNO,CAPTAIN,DIVISION FROM result
报错:#1050 - Table ‘teams‘ already exists 
说明,因为视图也是一种表,是虚拟表 。不能与已有的表(视图)出现重名
接下来,删掉表teams,再执行创建视图的代码 。

将视图看成与表一样的东西,更加容易理解使用规则 。下面这样对比也许使自己更好理解:
1.在使用视图的时候,就是与使用表的语法一样的 。

相关内容

热门资讯

C... 本文目录导航: CAD如何裁剪区域啊? cad剪切一局部怎样剪切 ...
什... 本文目录导航: 什么是口腔cad/cam技术 口腔cadcam技术是什么 ...
模... 本文目录导航: 模拟仿真软件有哪些 仿真用的软件都有哪些? ...
机... 本文目录导航: 机械类最罕用的虚构仿真开发软件有哪些 仿真软件排名靠前的公...
U... 本文目录导航: UGNX哪几个版本? UGNX12是什么版本?好用吗? ...
u... 本文目录导航: ug装置教程12.0 我电脑上有一个ug了,还想装置个12...
为... 本文目录导航: 为什么UGNX的CPU应用率如此的低 UG和UGNX有什么...
U... 本文目录导航: UGnx是什么 UG和UGNX有什么区别?? ...
怎... 本文目录导航: ug 怎样把两个面变成一个面 NX UG 8.0钣金中,曲...
c... 本文目录导航: catia导出的断面好多点 catia建模中截断面图如何出...
大浪淘金APP行情造假人为控制...   大浪淘金APP平台最为隐蔽的陷阱,在于其完全封闭的内盘交易机制。这个看似与国际行情接轨的平台,本...
一品好购APP违规交易曝光:认...   近期,名为“一品好购”的APP及其背后的运营公司——上海宝智未来信息技术有限公司,被多名投资者指...
如... 本文目录导航: 如何领有达索CATIA证书? 如何取得CATIA-三维CA...
怎... 本文目录导航: 怎样将CATIA的图纸调出树状结构图? 如何在CATIA中...
c... 本文目录导航: catia怎样设置剖面线? CATIA里不显示剖面线了怎样...
保... 本文目录导航: catia 保留治理外面的启用独自保留是什么意思? CAT...
C... 本文目录导航: CAD CAM CAE 是啥相关啊? CAD、CAE、CA...
剖... 本文目录导航: catia里在哪个模块里可以剖切整机?剖切符号是什么样子的,最好有图片 ...
C... 本文目录导航: CAD如何把原先的底图交流成现有的底图。 cad如何更改参...
c... 本文目录导航: cad怎样拔出参照的图片或许底图? cad底图不见了 ...