logo
 
 
|
|
|
|
|
|
|
|
 
 
您的位置:首页 - 专业知识
SQL视图
[2010-07-19]
多年来长期从事J2EE平台的项目开发,对J2EE的体系有深层次的了解,精通该体系下的十多项Web技术领域。特别是在主流的开源框架领域有较深厚的功底。

唐磊

     多年来长期从事J2EE平台的项目开发,对J2EE的体系有深层次的了解,精通该体系下的十多项Web技术领域。特别是在主流的开源框架领域有较深厚的功底。参与或主持大中小型软件项目十余起,其代表作为金融行业和电力行业国家级项目的实施和架构设计、开发和测试工作。成功实施“中国银行监督委员会1104工程”--《数据采集系统》基于Structs+Hibernate的核心开发设计,熟悉金融行业内部的运作。独立设计并开发“国家九五科技攻关电力项目”--《电力专家反事故系统》基于WebService的应用服务器端所有体系架构,对于阿尔卡特-朗讯、NEC的SDH设备、ATM设备等有较全面的认识。带领项目团队成功实施“国家电网SG186工程”--《计划统计系统》基于SOA的架构设计和项目管理工作。和著名IT企业有合作经历,如:IBM、BEA、Adobe等


SQL视图

  视图可以被看成是虚拟表或存储查询。可通过视图访问的数据不作为独特的对象存储在数据库内。数据库内存储的是   SELECT   语句。SELECT   语句的结果集构成视图所返回的虚拟表。用户可以用引用表时所使用的方法,在   Transact-SQL   语句中通过引用视图名称来使用虚拟表。使用视图可以实现下列任一或所有功能:    
   
  将用户限定在表中的特定行上。    
  例如,只允许雇员看见工作跟踪表内记录其工作的行。  
   
  将用户限定在特定列上。    
  例如,对于那些不负责处理工资单的雇员,只允许他们看见雇员表中的姓名列、办公室列、工作电话列和部门列,而不能看见任何包含工资信息或个人信息的列。  
   
  将多个表中的列联接起来,使它们看起来象一个表。  
   
   
  聚合信息而非提供详细信息。    
  例如,显示一个列的和,或列的最大值和最小值。  
   
  通过定义   SELECT   语句以检索将在视图中显示的数据来创建视图。SELECT   语句引用的数据表称为视图的基表。在下例中,pubs   数据库中的   titleview   是一个视图,该视图选择三个基表中的数据来显示包含常用数据的虚拟表:  
   
  CREATE   VIEW   titleview  
  AS  
  SELECT   title,   au_ord,   au_lname,   price,   ytd_sales,   pub_id  
  FROM   authors   AS   a  
            JOIN   titleauthor   AS   ta   ON   (a.au_id   =   ta.au_id)  
            JOIN   titles   AS   t   ON   (t.title_id   =   ta.title_id)  
   
  之后,可以用引用表时所使用的方法在语句中引用   titleview。  
   
  SELECT   *  
  FROM   titleview  
   
  一个视图可以引用另一个视图。例如,titleview   显示的信息对管理人员很有用,但公司通常只在季度或年度财务报表中才公布本年度截止到现在的财政数字。可以建立一个视图,在其中包含除   au_ord   和   ytd_sales   外的所有   titleview   列。使用这个新视图,客户可以获得已上市的书籍列表而不会看到财务信息:  
   
  CREATE   VIEW   Cust_titleview  
  AS  
  SELECT   title,   au_lname,   price,   pub_id  
  FROM   titleview  
   
  视图可用于在多个数据库或   Microsoft®   SQL   Server™   2000   实例间对数据进行分区。分区视图可用于在整个服务器组内分布数据库处理。服务器组具有与服务器聚集相同的性能优点,并可用于支持最大的   Web   站点或公司数据中心的处理需求。原始表被细分为多个成员表,每个成员表包含原始表的行子集。每个成员表可放置在不同服务器的数据库中。每个服务器也可得到 分区视图。分区视图使用   Transact-SQL   UNION   运算符,将在所有成员表上选择的结果合并为单个结果集,该结果集的行为与整个原始表的复本完全一样。例如在三个服务器间进行表分区。在第一个服务器上定义 如下的分区视图:  
   
  CREATE   VIEW   PartitionedView   AS  
  SELECT   *  
          FROM   MyDatabase.dbo.PartitionTable1  
  UNION   ALL  
  SELECT   *  
          FROM   Server2.MyDatabase.dbo.PartitionTable2  
  UNION   ALL  
  SELECT   *  
          FROM   Server3.MyDatabase.dbo.PartitionTable3  
   
  在其它两个服务器上定义类似的分区视图。利用这三个视图,三个服务器上任何引用   PartitionedView   的   Transact-SQL   语句都将看到与原始表中相同的行为。似乎每个服务器上都存在原始表的复本一样,而实际上每个表只有一个成员表和分区视图。有关更多信息,请参见视图使用方 案。  
   
  只要所做的修改只影响视图所引用的其中一个基表,就可以更新所有   SQL   Server   版本内的视图(可以对其执行   UPDATE、DELETE   或   INSERT   语句)。  
   
  --   Increase   the   prices   for   publisher   '0736'   by   10%.  
  UPDATE   titleview  
  SET   price   =   price   *   1.10  
  WHERE   pub_id   =   '0736'  
  GO  
   
  SQL   Server   2000   支持可引用视图的更复杂的   INSERT、UPDATE   和   DELETE   语句。可在视图上定义   INSTEAD   OF   触发器,指定必须对基表执行的个别更新以支持   INSERT、UPDATE   或   DELETE   语句。另外,分区视图还支持   INSERT、UDPATE   和   DELETE   语句修改视图所引用的多个成员表。  
   
  索引视图是   SQL   Server   2000   具有的功能,可显著提高复杂视图类型的性能,这些视图类型通常在数据仓库或其它决策支持系统中出现。  
   
  视图的结果集通常不保存在数据库中,因此视图也称为虚拟表。视图的结果集动态包含在语句逻辑中并在运行时动态生成。有关更多信息,请参见视图解析。  
   
  复杂的查询(如决策支持系统中的查询)可引用基表中的大量行,并将大量信息聚积在相对较简洁的聚合中,如总和或平均值。SQL   Server   2000   支持在执行此类复杂查询的视图上创建聚集索引。当执行   CREATE   INDEX   语句时,视图   SELECT   的结果集将永久存储在数据库中。SQL   语句此后若引用该视图,响应时间将会显著缩短。对基本数据的修改将自动反映在视图中。  
   
  SQL   Server   2000   CREATE   VIEW   语句支持   SCHEMABINDING   选项,以防止视图所引用的表在视图未被调整的情况下发生改变。必须为任何创建索引的视图指定   SCHEMABINDING。
Sql|SQL|MS SQL|view|视图

上一篇:表格双向排序之实现(连载1)
下一篇:DisplayTag展示与Hibernate物理分页(连载6)
   
SQL视图 SQL视图
 

在线报名

  • 姓       名:*
  • 高考成绩:*
  • 电       话:*
  • 地       址:*
 
课程咨询
 

 
中博教育客服在线
 
©南京北大青鸟 隐私政策
学费咨询
学历咨询
专业咨询
订座试听
就业咨询
课程咨询
测试认证
软件认证