查询和视图的比较
由于查询和视图有如此多的相似性,所以很容易忽略它们之间的差异。本节对查询和视图做一个简单的比较。存储 视图存储为数据库设计的一部分,而查询则不是。当设计数据库时,可以出于下列原因将视图包括在设计中: 一些数据子集关系到许多用户。由于每个视图都存储在数据库内,所以视图建立特定的数据子集以供任何数据库用户使用。
视图可以隐藏基表。可以禁止所有用户访问数据库表,而要求用户只能通过视图操作数据。这种方法可以保护用户和应用程序不受某些数据库修改的影响。例如,如果可以创建一个名为"本月销售额"的视图。在每月的第一天,可以相应地修改视图的定义。如果没有这个视图,用户每月都必须重新编写查询以选择相应月份的销售额。
更新结果 对视图和查询的结果集更新限制是不同的。有关更多信息,请参见结果更新规则。排序结果 可以排序任何查询结果,但是只有当视图包括 TOP 子句时才能排序视图。有关 TOP 子句的更多信息,请参见使用 TOP 和 PERCENT 限制结果集。生成查询计划 查询计划是内部策略,通过它数据库服务器尝试快速创建结果集。数据库服务器可以在保存视图后立即为视图建立查询计划。但是对于查询,数据库服务器直到查询实际运行时才能建立查询计划——也就是说,直到用户显式请求结果集时。参数设置 可以为查询创建参数,但不能为视图创建参数。有关参数化查询的更多信息,请参见创建通用查询。加密 可以加密视图,但不能加密查询。有关更多信息,请参见加密视图。
由于查询和视图有如此多的相似性,所以很容易忽略它们之间的差异。本节对查询和视图做一个简单的比较。存储 视图存储为数据库设计的一部分,而查询则不是。当设计数据库时,可以出于下列原因将视图包括在设计中: 一些数据子集关系到许多用户。由于每个视图都存储在数据库内,所以视图建立特定的数据子集以供任何数据库用户使用。
视图可以隐藏基表。可以禁止所有用户访问数据库表,而要求用户只能通过视图操作数据。这种方法可以保护用户和应用程序不受某些数据库修改的影响。例如,如果可以创建一个名为"本月销售额"的视图。在每月的第一天,可以相应地修改视图的定义。如果没有这个视图,用户每月都必须重新编写查询以选择相应月份的销售额。
更新结果 对视图和查询的结果集更新限制是不同的。有关更多信息,请参见结果更新规则。排序结果 可以排序任何查询结果,但是只有当视图包括 TOP 子句时才能排序视图。有关 TOP 子句的更多信息,请参见使用 TOP 和 PERCENT 限制结果集。生成查询计划 查询计划是内部策略,通过它数据库服务器尝试快速创建结果集。数据库服务器可以在保存视图后立即为视图建立查询计划。但是对于查询,数据库服务器直到查询实际运行时才能建立查询计划——也就是说,直到用户显式请求结果集时。参数设置 可以为查询创建参数,但不能为视图创建参数。有关参数化查询的更多信息,请参见创建通用查询。加密 可以加密视图,但不能加密查询。有关更多信息,请参见加密视图。
解决方案 »
- 如何执行类似 exec @procedure_name_var @parameter1,@parameter2
- 如何读取text类型数据并处理
- 请问一个索引的问题
- 用if else做判断,如何处理同名对象的问题?
- 问一个在select里面用参数的存储过程的写法
- 求助:jdbc、sql server存储过程,返回参数的问题。
- 请问SQLserver有基于函数的索引吗?如何建立,谢谢
- 我想学习数据库,但我是个莱鸟,不知道应该怎样学,麻烦大家帮帮忙告诉我好不好,应该先学什么后学什么,告诉我一个大概的框架好不?谢谢
- sos!sos!!sos!!! SQl2000安装问题!
- 我 的问题 SQL SERVER 7。0 中能否 对多个数据库使用同一个名登陆,而不同的密码。
- 如何编写这个存储过程
- 如何按"天"、"周"、"月"、"年"等时间单位分组 (GROUP BY) DateTime 类型字段?!
索引一般是建立在表主键上的,可以提供查询的速度