MySQL由浅至深(七)课件精品.pptVIP

  • 5
  • 0
  • 约9.73千字
  • 约 25页
  • 2017-02-02 发布于江苏
  • 举报
MySQL由浅至深(七)课件精品

高级2第七章 ALTER VIEW语法 CREATE VIEW语法 DROP VIEW语法 SHOW CREATE VIEW语法 CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]?? ?VIEW view_name [(column_list)]??? AS select_statement??? [WITH [CASCADED | LOCAL] CHECK OPTION] 该语句能创建新的视图,如果给定了OR REPLACE子句,该语句还能替换已有的视图。select_statement是一种SELECT语句,它给出了视图的定义。该语句可从基表或其他视图进行选择。 该语句要求具有针对视图的CREATE VIEW权限,以及针对由SELECT语句选择的每一列上的某些权限。对于在SELECT语句中其他地方使用的列,必须具有SELECT权限。如果还有OR REPLACE子句,必须在视图上具有DROP权限。 视图属于数据库。在默认情况下,将在当前数据库创建新视图。要想在给定数据库中明确创建视图,创建时,应将名称指定为db_name.view_name。 mysql CREATE VIEW test.v AS SELECT * FROM t; 表和视图共享数据库中相同的名称空间,因此,数据库不能包含具有相同名称的表和视图。 视图必须具有唯一的列名,不得有重复,就像基表那样。默认情况下,由SELECT语句检索的列名将用作视图列名。要想为视图列定义明确的名称,可使用可选的column_list子句,列出由逗号隔开的ID。column_list中的名称数目必须等于SELECT语句检索的列数。 SELECT语句检索的列可以是对表列的简单引用。也可以是使用函数、常量值、操作符等的表达式。 对于SELECT语句中不合格的表或视图,将根据默认的数据库进行解释。通过用恰当的数据库名称限定表或视图名,视图能够引用表或其他数据库中的视图。 能够使用多种SELECT语句创建视图。视图能够引用基表或其他视图。它能使用联合、UNION和子查询。SELECT甚至不需引用任何表。在下面的示例中,定义了从另一表选择两列的视图,并给出了根据这些列计算的表达式: 视图定义服从下述限制: SELECT语句不能包含FROM子句中的子查询。 SELECT语句不能引用系统或用户变量。 SELECT语句不能引用预处理语句参数。 在存储子程序内,定义不能引用子程序参数或局部变量。 在定义中引用的表或视图必须存在。但是,创建了视图后,能够舍弃定义引用的表或视图。要想检查视图定义是否存在这类问题,可使用CHECK TABLE语句。 在定义中不能引用TEMPORARY表,不能创建TEMPORARY视图。 在视图定义中命名的表必须已存在。 不能将触发程序与视图关联在一起。 对于可更新视图,可给定WITH CHECK OPTION子句来防止插入或更新行,除非作用在行上的select_statement中的WHERE子句为“真”。 在关于可更新视图的WITH CHECK OPTION子句中,当视图是根据另一个视图定义的时,LOCAL和CASCADED关键字决定了检查测试的范围。LOCAL关键字对CHECK OPTION进行了限制,使其仅作用在定义的视图上,CASCADED会对将进行评估的基表进行检查。如果未给定任一关键字,默认值为CASCADED。请考虑下述表和视图集合的定义: mysql CREATE TABLE t1 (a INT); mysql CREATE VIEW v1 AS SELECT * FROM t1 WHERE a2 WITH CHECK OPTION; mysql CREATE VIEW v2 AS SELECT * FROM v1 WHERE a0 WITH LOCAL CHECK OPTION; mysql CREATE VIEW v3 AS SELECT * FROM v1 WHERE a0 WITH CASCADED CHECK OPTION; 这里,视图v2和v3是根据另一视图v1定义的。v2具有LOCAL检查选项,因此,仅会针对v2检查对插入项进行测试。v3具有CASCADED检查选项,因此,不仅会针对它自己的检查对插入项进行测试,也会针对基本视图的检查对插入项进行测试。在下面的语句中,介绍了这些差异: mysql INSERT INTO v2 VALUES (2); mysql INSERT INTO v3 VALUES (3); ERROR 1369 (HY000): CHECK OPTION failed test.v3 ALTER [ALGORITHM = {U

文档评论(0)

1亿VIP精品文档

相关文档