阅读背景:

mysql视图

来源:互联网 

视图是虚拟表,是从数据库中一个或多个表中导出来的表。视图还可以从已存在的视图的基本上定义。数据库中只寄存视图的定义,没有视图中的数据,这些数据都寄存在本来的表中。视图不支撑输入记载的功效
创立视图格局:
create [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
			VIEW 视图名 [(属性清单)]
			AS SELECT 语句
			[WITH [CASCADED|LOCAL] CHECK OPTION];
注:ALGORITHM是可选参数表现视图选择的算法,属性清单是可选参数指定了视图中各个属性的名词,默许情形下与select语句中查询的属性雷同;WITH CHECK OPTION是可选参数表现更新视图时要保证在该视图的权限规模内。
ALGORITHM中undefined选项表现mysql将主动选择所要应用的算法;merge选项表现将应用视图的语句与视图定义合并起来,使得视图定义的某一部份代替语句的对应部份;temptable选项表现将视图的成果存入临时表,然后用临时表履行语句。
CASCADED表现更新视图时要满足所有相干视图和表的条件,该参数为默许值;local表现更新视图时,要满足该视图本身的定义的条件便可。
未指定属性清单的情形下视图的属性名与select语句查询的属性名雷同。
注一:创立视图时最好加上WITH CHECK OPTION参数而且最好加上CASCADED参数。这样,从视图上派生出来的新视图后,更新新视图须要斟酌其父视图的束缚条件。这张方法比拟严厉可以保证数据安全性。
注二:创立视图要有create view的权限,同时要有select权限。在mysql数据库下面的user表中保留这些权限信息,可以应用select语句查询。
select Select_priv,Create_view_priv from mysql.user where user="用户名";
一、查看视图:describe语句或show  create view语句 或show table status语句或information_ schema数据库下的views表
二、修重视图
1、create or replace 语句来修重视图
create or replace [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
			VIEW 视图名 [(属性清单)]
			AS SELECT 语句
			[WITH [CASCADED|LOCAL] CHECK OPTION];
			注:create or replace语句不但可以修正已存在的视图还可以创立新的视图。
2、alter语句修重视图
alter [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
			VIEW 视图名 [(属性清单)]
			AS SELECT 语句
			[WITH [CASCADED|LOCAL] CHECK OPTION];
			注:alter只能修正已存在的视图。
三、更新视图
更新视图指通过视图来insert、update、delete表中的数据。视图更新都会转换到基本表来更新。更新视图只能更新权限规模内的数据,超越规模就不能更新了。
例:update 视图名 set name="a";更新后基本表内容也被更新
有以下情形不能更新视图:1、包括sum()、count()、max()、min()等函数2、union、union all、distinct、group by、having等症结字。3、常量视图4、视图中的select中包括子查询5、由不可更新的视图导出的视图6、创立视图时,ALGORITHM为TEMPTABLE类型,该类型是体系临时表是不能更新的。7、视图对应的表上存在没有默许值的列,而且该列没有包括在视图里。由于,在更新视图时,这个没有默许值的记载将没有值插入,也没有null值插入。数据库体系是不会许可这样的情形涌现的,会阻挠视图更新。8、WITH [CASCADED|LOCAL] CHECK OPTION也将决议视图能否更新。local参数表现更新视图时满足该视图本身的定义条件便可;CASCADED参数表现更新视图时要满足所有相干视图和表的条件。没有指明时默以为CASCADED。
四、删除视图
注:删除视图不会影响基本表中的数据
格局:drop view [if exists] 视图名列表 [restrict|cascade]; if exists参数指断定视图存在,如果存在则履行不存在则不履行,“视图名列表”参数表现要删除的视图的名称列表,各视图名用逗号隔开。
一、查询是不是存在drop权限
select drop_priv from mysql.user where user="用户名";视图是虚拟表,是从数据库中一个或多个表中导出来的表。视图还可以从已存在的视图的基本上定义。数据库中只




你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: