没有合适的资源?快使用搜索试试~ 我知道了~
首页细说SQL Server中的视图
1,什么是视图? 2,为什么要用视图; 3,视图中的ORDER BY; 4,刷新视图; 5,更新视图; 6,视图选项; 7,索引视图; 1.什么是视图 视图是由一个查询所定义的虚拟表,它与物理表不同的是,视图中的数据没有物理表现形式,除非你为其创建一个索引;如果查询一个没有索引的视图,Sql Server实际访问的是基础表。 如果你要创建一个视图,为其指定一个名称和查询即可。Sql Server只保存视图的元数据,用户描述这个对象,以及它所包含的列,安全,依赖等。当你查询视图时,无论是获取数据还是更新数据,Sql server都用视图的定义来访问基础表; 视图在我们日常操作也扮演
资源详情
资源评论
资源推荐

细说细说SQL Server中的视图中的视图
1,什么是视图?
2,为什么要用视图;
3,视图中的ORDER BY;
4,刷新视图;
5,更新视图;
6,视图选项;
7,索引视图;
1.什么是视图什么是视图
视图是由一个查询所定义的虚拟表,它与物理表不同的是,视图中的数据没有物理表现形式,除非你为其创建一个索引;
如果查询一个没有索引的视图,Sql Server实际访问的是基础表。
如果你要创建一个视图,为其指定一个名称和查询即可。Sql Server只保存视图的元数据,用户描述这个对象,以及它所
包含的列,安全,依赖等。当你查询视图时,无论是获取数据还是更新数据,Sql server都用视图的定义来访问基础表;
视图在我们日常操作也扮演着许多重要的角色,比如可以利用视图访问经过筛选和处理的数据,而不是直接访问基础表,
以及在一定程度上也保护了基础表。
我们在创建视图的时候,也要遵守三个规则:
不能在视图定义中指定ORDER BY ,除非定义中包含Top或For Xml 说明;
所有的列必须有列名;
这些所有的列名必须唯一;
对于视图表中在没有top或for xml说明的情况下,不能有Order by 语句,这是因为视图被认为是一个表,表是一个逻辑的
实体,它的行是没有顺序的。视图中所有列必须有列名,且唯一的情况我想大家都理解;
下面的sql语句表示创建一个简单的视图:
代码如下:CREATE VIEW dbo.V1
AS
SELECT CustomerID,CompanyName FROM Customers
WHERE EXISTS(SELECT * FROM Orders WHERE Customers.CustomerID = Orders.CustomerID)
2.为什么要使用视图(更新)为什么要使用视图(更新)
SqlServer既然给我们提供这样的对象,就一定有它的作用。而我们在使用视图上,要么用的过多,要么用的不够,所以
一部分人建议不要用视图,而一部分人又建议少用。那我们听谁的呢?
其实我们要是掌握了用视图的目的,就能在正确的地方,用正确的视图;那么视图能给我们解决什么问题呢?
1),为最终用户减少数据库呈现的复杂性。客户端只要对视图写简单的代码,就能返回我所需要的数据,一些复杂的逻辑操
作,放在了视图中来完成;
2),防止敏感的列被选中,同时仍然提供对其他重要数据的访问;
3),对视图添加一些额外的索引,来提高查询的效率;
视图其实没有改变任何事情,只是对访问的数据进行了某种形式的筛选。考虑一下视图的作用,你应该能看到视图的概念
如何为缺乏经验的用户简化数据(只显示他们关心的数据),或者不给予用户访问基础表的
权利,但授予他们访问不包含敏感数据视图的权力,从而提前隐藏敏感数据。
要知道,在默认的情况下,视图没有做什么特殊的事情。视图就好象一个查询那样从命令行运行(这里不存在任何形式的
预先优化),这意味着在数据请求和将被交付的数据之间多加了一层开销。这表明视图绝不可能像
只是直接运行底层SELECT语句那样快。不过,视图存在有一个原因–这就是它的安全性或为用户所做的简化,在你的需要和
开销之间权衡,找到最适合特定情况的解决方案。
3.视图中的视图中的ORDER BY
视图表示一个逻辑实体,它与表非常类似;
如果我们在上面的创建的sql语句中加一个Order BY 语句,看看有什么效果:


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0