分享
 
 
 

CREATEVIEW

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

创建一个虚拟表,该表以另一种方式表示一个或多个表中的数据。CREATE VIEW 必须是查询批处理中的第一条语句。 语法 CREATE VIEW [ .] [ .] view_name [ ( column [ ,...n ] ) ] [ WITH [ ,...n ] ] AS select_statement [ WITH CHECK OPTION ] ::= { ENCRYPTION | SCHEMABINDING | VIEW_METADATA } 参数 view_name 是视图的名称。视图名称必须符合标识符规则。可以选择是否指定视图所有者名称。 column 是视图中的列名。只有在下列情况下,才必须命名 CREATE VIEW 中的列:当列是从算术表达式、函数或常量派生的,两个或更多的列可能会具有相同的名称(通常是因为联接),视图中的某列被赋予了不同于派生来源列的名称。还可以在 SELECT 语句中指派列名。 如果未指定 column,则视图列将获得与 SELECT 语句中的列相同的名称。 说明 在视图的各列中,列名的权限在 CREATE VIEW 或 ALTER VIEW 语句间均适用,与基础数据源无关。例如,如果在 CREATE VIEW 语句中授予了 title_id 列上的权限,则 ALTER VIEW 语句可以将 title_id 列改名(例如改为 qty),但权限仍与使用 title_id 的视图上的权限相同。 n 是表示可以指定多列的占位符。 AS 是视图要执行的操作。 select_statement 是定义视图的 SELECT 语句。该语句可以使用多个表或其它视图。若要从创建视图的 SELECT 子句所引用的对象中选择,必须具有适当的权限。 视图不必是具体某个表的行和列的简单子集。可以用具有任意复杂性的 SELECT 子句,使用多个表或其它视图来创建视图。 在索引视图定义中,SELECT 语句必须是单个表的语句或带有可选聚合的多表 JOIN。 对于视图定义中的 SELECT 子句有几个限制。CREATE VIEW 语句不能: 包含 COMPUTE 或 COMPUTE BY 子句。 包含 ORDER BY 子句,除非在 SELECT 语句的选择列表中也有一个 TOP 子句。 包含 INTO 关键字。 引用临时表或表变量。 因为 select_statement 使用 SELECT 语句,所以在 FROM 子句中指定 和 提示是有效的。有关更多信息,请参见 FROM 和 SELECT。 在 select_statement 中可以使用函数。 select_statement 可使用多个由 UNION 或 UNION ALL 分隔的 SELECT 语句。 WITH CHECK OPTION 强制视图上执行的所有数据修改语句都必须符合由 select_statement 设置的准则。通过视图修改行时,WITH CHECK OPTION 可确保提交修改后,仍可通过视图看到修改的数据。 WITH ENCRYPTION 表示 SQL Server 加密包含 CREATE VIEW 语句文本的系统表列。使用 WITH ENCRYPTION 可防止将视图作为 SQL Server 复制的一部分发布。 SCHEMABINDING 将视图绑定到架构上。指定 SCHEMABINDING 时,select_statement 必须包含所引用的表、视图或用户定义函数的两部分名称 (owner.object)。 不能除去参与用架构绑定子句创建的视图中的表或视图,除非该视图已被除去或更改,不再具有架构绑定。否则,SQL Server 会产生错误。另外,如果对参与具有架构绑定的视图的表执行 ALTER TABLE 语句,而这些语句又会影响该架构绑定视图的定义,则这些语句将会失败。 VIEW_METADATA 指定为引用视图的查询请求浏览模式的元数据时,SQL Server 将向 DBLIB、ODBC 和 OLE DB API 返回有关视图的元数据信息,而不是返回基表或表。浏览模式的元数据是由 SQL Server 向客户端 DB-LIB、ODBC 和 OLE DB API 返回的附加元数据,它允许客户端 API 实现可更新的客户端游标。浏览模式的元数据包含有关结果集内的列所属的基表信息。 对于用 VIEW_METADATA 选项创建的视图,当描述结果集中视图内的列时,浏览模式的元数据返回与基表名相对的视图名。 当用 VIEW_METADATA 创建视图时,如果该视图具有 INSERT 或 UPDATE INSTEAD OF 触发器,则视图的所有列(timestamp 除外)都是可更新的。请参见本主题后面的"可更新视图"。 注释 只能在当前数据库中创建视图。视图最多可以引用 1,024 列。 通过视图进行查询时,Microsoft® SQL Server™ 将检查以确定语句中任意位置引用的所有数据库对象是否都存在,这些对象在语句的上下文中是否有效,以及数据修改语句是否没有违反任何数据完整性规则。如果检查失败,将返回错误信息。如果检查成功,则将操作转换成对基础表的操作。 如果某个视图依赖于已除去的表(或视图),则当有人试图使用该视图时,SQL Server 将产生错误信息。如果创建了新表或视图(该表的结构与以前的基表没有不同之处)以替换除去的表或视图,则视图将再次可用。如果新表或视图的结构发生更改,则必须除去并重新创建该视图。 创建视图时,视图的名称存储在 sysobjects 表中。有关视图中所定义的列的信息添加到 syscolumns 表中,而有关视图相关性的信息添加到 sysdepends 表中。另外,CREATE VIEW 语句的文本添加到 syscomments 表中。这与存储过程相似;当首次执行视图时,只有其查询树存储在过程高速缓存中。每次访问视图时,都重新编译其执行计划。 在通过 numeric 或 float 表达式定义的视图上使用索引所得到的查询结果,可能不同于不在视图上使用索引的类似查询所得到的结果。这种差异可能是由对基础表进行 INSERT、DELETE 或 UPDATE 操作时的舍入错误引起的。 创建视图时,SQL Server 保存 SET QUOTED_IDENTIFIER 和 SET ANSI_NULLS 的设置。使用视图时,将还原这些最初的设置。因此,当访问视图时,将忽略 SET QUOTED_IDENTIFIER 和 SET ANSI_NULLS 的所有客户端会话设置。 说明 SQL Server 是将空字符串解释为单个空格还是真正的空字符串取决于 sp_dbcmptlevel 的设置。如果兼容级别小于或等于 65,SQL Server 就将空字符串解释为单个空格。如果兼容级别等于或大于 70,则 SQL Server 就将空字符串解释为空字符串。有关更多信息,请参见 sp_dbcmptlevel。 可更新视图 Microsoft SQL Server 2000 以两种方法增强可更新视图的类别: INSTEAD OF 触发器:可以在视图上创建 INSTEAD OF 触发器,以使视图可更新。执行 INSTEAD OF 触发器,而不是执行定义触发器的数据修改语句。该触发器使用户得以指定一套处理数据修改语句时需要执行的操作。因此,如果在给定的数据修改语句(INSERT、UPDATE 或 DELETE)上存在视图的 INSTEAD OF 触发器,则通过该语句可更新相应的视图。有关 INSTEAD OF 触发器的更多信息,请参见设计 INSTEAD OF 触发器。 分区视图:如果视图属于称为"分区视图"的指定格式,则该视图的可更新性受限于某些限制。本主题稍后将讨论分区视图及其可更新性。 必要时,SQL Server 将"本地分区视图"辨别为所有参与表和视图都在同一 SQL Server 上的视图,而将"分布式分区视图"辨别为视图中至少有一个表驻留在不同(远程)服务器上的视图。 如果视图没有 INSTEAD OF 触发器,或者视图不是分区视图,则视图只有满足下列条件才可更新: select_statement 在选择列表中没有聚合函数,也不包含 TOP、GROUP BY、UNION(除非视图是本主题稍后要描述的分区视图)或 DISTINCT 子句。聚合函数可以用在 FROM 子句的子查询中,只要不修改函数返回的值。有关更多信息,请参见聚合函数。 select_statement 的选择列表中没有派生列。派生列是由任何非简单列表达式(使用函数、加法或减法运算符等)所构成的结果集列。 select_statement 中的 FROM 子句至少引用一个表。select_statement 必须不仅只包含非表格格式的表达式(即不是从表派生出的表达式)。例如,以下视图是不可更新的: CREATE VIEW NoTable AS SELECT GETDATE() AS CurrentDate, @@LANGUAGE AS CurrentLanguage, CURRENT_USER AS CurrentUser INSERT、UPDATE 和 DELETE 语句在可以引用可更新视图之前,也必须如上述条件指定的那样满足某些限制条件。只有当视图可更新,并且所编写的 UPDATE 或 INSERT 语句只修改视图的 FROM 子句引用的一个基表中的数据时,UPDATE 和 INSERT 语句才能引用视图。只有当视图在其 FROM 子句中只引用一个表时,DELETE 语句才能引用可更新的视图。 分区视图 分区视图是通过对成员表使用 UNION ALL 所定义的视图,这些成员表的结构相同,但作为多个表分别存储在同一个 SQL Server 中,或存储在称为联合 SQL Server 2000 服务器的自主 SQL Server 2000 服务器组中。 例如,如果使 Customers 表数据分布在分别位于三个服务器上的三个成员表中(Customers_33 在 Server1 上,Customers_66 在 Server2 上,Customers_99 在 Server3 上),将以下面的方法在 Server1 上定义分区视图: --Partitioned view as defined on Server1 CREATE VIEW Customers AS --Select from local member table SELECT * FROM C

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有