创建一个虚拟表,该表以另一种方式表示一个或多个表中的数据。CREATE VIEW 必须是查询批处理中的第一条语句。
是视图的名称。视图名称必须符合标识符规则。可以选择是否指定视图所有者名称。
是视图中的列名。只有在下列情况下,才必须命名 CREATE VIEW 中的列:当列是从算术表达式、函数或常量派生的,两个或更多的列可能会具有相同的名称(通常是因为联接),视图中的某列被赋予了不同于派生来源列的名称。还可以在 SELECT 语句中指派列名。
如果未指定 column,则视图列将获得与 SELECT 语句中的列相同的名称。
title_id 的视图上的权限相同。
是表示可以指定多列的占位符。
是定义视图的 SELECT 语句。该语句可以使用多个表或其它视图。若要从创建视图的 SELECT 子句所引用的对象中选择,必须具有适当的权限。
视图不必是具体某个表的行和列的简单子集。可以用具有任意复杂性的 SELECT 子句,使用多个表或其它视图来创建视图。
在索引视图定义中,SELECT 语句必须是单个表的语句或带有可选聚合的多表 JOIN。
对于视图定义中的 SELECT 子句有几个限制。CREATE VIEW 语句不能:
强制视图上执行的所有数据修改语句都必须符合由 select_statement 设置的准则。通过视图修改行时,WITH CHECK OPTION 可确保提交修改后,仍可通过视图看到修改的数据。
一般情况下,如果视图为下列格式,则称其为分区视图:
必须以下面的格式在表 T1 上定义约束 C1:
下面是有效约束集的示例:
如果一个或多个成员表是远程表,则视图称为 distributed partitioned view,并且适用附加条件。本节稍后将对其进行讨论。
只有 SQL Server 2000 开发版和企业版允许在分区视图中进行 INSERT、UPDATE 和 DELETE 操作。若要修改分区视图,语句必须满足下列条件:
分布式分区视图的附加条件
对于分布式分区视图(当一个或多个成员表为远程表时),适用下列附加条件:
当设置好成员表和分区视图的定义后,Microsoft SQL Server 2000 将生成智能的查询计划以便有效地访问成员表中的数据。通过使用 CHECK 约束定义,查询处理器在成员间映射键值的分布。当用户发出查询时,查询处理器将映射与 WHERE 子句中指定的值进行比较,然后生成使成员服务器间的数据传输量减到最少的执行计划。因此,虽然有些成员表可能位于远程服务器中,但是 SQL Server 2000 将解析分布式查询,使得必须传输的分布式数据量减到最少。有关 SQL Server 2000 如何解析分区视图查询的更多信息,请参见。
为在复制所包含的成员表上创建分区视图,需要考虑下列事项:
若要创建视图,用户必须具有 CREATE VIEW 权限,还必须在视图所引用的表、视图和表值函数上具有 SELECT 权限,在视图所唤醒调用的标量值函数上具有 EXECUTE 权限。
另外,若要创建 WITH SCHEMABINDING 视图,用户必须在每个引用的表、视图和用户定义函数上具有 REFERENCES 权限。
下例创建具有简单 SELECT 语句的视图。当需要频繁地查询列的某种组合时,简单视图非常有用。
下例使用 WITH ENCRYPTION 选项并显示计算列、重命名列以及多列。
下面是用来检索加密存储过程的标识号和文本的查询:
说明 text 列的输出显示在单独一行中。执行该存储过程时,下列信息将与 id 列信息出现在同一行中。
下例显示名为 CAonly 的视图,该视图使得只对加利福尼亚州的作者应用数据修改。
下例显示包含内置函数的视图定义。使用函数时,必须在 CREATE VIEW 语句中为派生列指定列名。
下例使用 @@ROWCOUNT 函数作为视图定义的一部分。
下例使用名为 SUPPLY1、SUPPLY2、SUPPLY3 和 SUPPLY4 的表,这些表对应于位于不同国家的四个办事处的供应商表。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。