Sql Sever 2005 视图的操作

很多人特别喜欢用视图,但有的人从来不用视图.这都是两种不良的习惯.     要明确视图可以完成的工作以及使用场合.

     1.阻止选择保密列

     2.降低用户读取数据库内数据的复杂性  

     3.在数据库中添加索引以加速查询性能

 

  视图的核心在于它仅是一个被存储的查询. 其最大特点是是你可以混合机匹配基表(或其他视图)中的数据,从多方面考虑,其功能就像另外一张基表.你既可以创建一个只从表中选择一些列的简单查询,也可以创建一个连接多张表并让这些表显示为一张表的复杂查询.

  视图是一个虚拟表,其内容有查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.视图在数据库中并不是以数据值存储集形式存在,除非是索引视图.行和列数据来自于自定义视图的查询所引用的表,并且在引用视图时动态生成.

  对其中所引用的基础表来说视图的作用类似于筛选。定义视图的筛选可以来自当前或其他数据库一个或多个表,或者其他视图.分布式查询页可用于定义使用多个异类源数据的视图.例如,如果有多台不同的服务器分别储存在你的单位在不用地区的数据,而你需要将这些服务器上结构相似的数据组合起来,那么这种方式就很有用.

  通过视图进行查询没有任何限制,而且通过他们经行数据修改时的限制也很少.

 

  视图创建语法与 Create 语句相似,

  Create View <view name>

  As

  <Select statement>

  当然,上面的语句只代表创建视图的语法的一部分,但它仍然是最常用的形式.   扩展如下

  Crete View[schema_name.]<view name>[(<column name list>)]

  [With[Encryption][,Schemabinding][,View_Metadata]]

  as

  <Select statement>

  With Check Option

 

关于创建视图,修改视图 值得注意的地方

  1.不能将规则获得Default定义关联于视图

  2.定义视图的查询不能有Order by,Compute,Compute by  语句

  3.如果视图的某一列是一个算术表达式,构造函数或者常数,而且视图中两个或者更多不用的列拥有一个相同的名字(这种情况通常是因为在视图的定义有一个连接,而且这两个或者多个来自不同表的列用于相同的名称)  --此时需要为视图的每一列指定列的名称

  4.在修改视图时需要包含<With encryption> 和 <With Check Option>从句

  5.Alter View 期待找到现有的视图,而Create不需要

  6.Alter 保留已经为视图建立的许可权  --如果你执行Drop,然后再使用Create 就几乎用油使用Alter View 语句相同的效果.问题在于,你需要为可以和不可以使用的人重建许可权

  7.Alter View 保留任何依赖信息

  8.-

   

  简单的例子, 例如 操作AdventureWorks 操作人员仅可以创建某个表的视图,但不能授予此人访问这些表中所有的权限.  

  Use AdventureWorks;

  Go

  If Object_ID ('hiredate_view','view') is not null

  Drop View hiredate_view ;

  Go

  Create View Hiredate _View

  As

  Select c.FirstName,c.LastName,e.Employee,e.HireDate

  From HumanResources.Emplyee e Join Person.Contact c

  on e.ContatctID = c.ContactID;

  Go

 

  注意的是:在查询分析器中执行的Create语句,就像我们所有已经用过的Create语句一样,不返回任何行,它只显示以及你给创建了该视图

  The command(s) complteted successfully.

  现在切换到表格视图,从而可以看见多个结果集.在你的视图上运行Select语句(就像在一张表一样),并选择表InstruName中的结果.

  Select * from hiredate_view

                                                            --明天再写                                                                   2009-12-31

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值