SQL Server 2005视图详细分析

本文详细介绍了在SQL Server 2005中创建和管理视图的方法,包括使用SQL Server Management Studio和T-SQL语句创建视图,视图的加密、修改、查看、删除以及限制等操作。内容涵盖了视图的JOIN操作、字段别名、加密、WITH CHECK OPTION、WITH SCHEMABINDING等特性,旨在帮助读者全面理解并掌握SQL Server 2005中的视图操作。
摘要由CSDN通过智能技术生成
本章包括:
视图的介绍
创建、查看、修改与删除视图
加密视图
将视图与架构绑定
检查视图的数据变动
编辑视图中的记录
为视图重命名
视图是一个虚拟的表,该表中的记录是由一个查询语句执行后所得到的查询结果所构成。与表一样,视图也是由字段和记录组成,只是这些字段和记录来源于其他被引用的表或视图,所以视图并不是真实存在的,而是一张虚拟的表,视图中的数据同样也并不是存在于视图当中,而是存在于被引用的数据表当中,当被引用的数据表中的记录内容改变时,视图中的记录内容也会随之改变。
9.1  视图简介
先举一个例子,在Northwind数据库中,如果要查看一个订单是由哪个雇员签订的,签订的时间是什么时候,买了什么产品,价格是多少,由谁来送货,送货的地址是什么等内容,那么就要从产品、订单、订单明细、雇员和运货商五个表中查询记录,其查询代码如下:
SELECT 订单.订单ID, 雇员.姓氏, 雇员.名字, 产品.产品名称,
         订单明细.单价, 订单明细.数量, 订单明细.折扣, 运货商.公司名称,
         订单.货主名称, 订单.货主地址, 订单.货主城市, 订单.订购日期,
         订单.发货日期
FROM 订单 INNER JOIN
           订单明细 ON 订单.订单ID = 订单明细.订单ID INNER JOIN
           雇员 ON 订单.雇员ID = 雇员.雇员ID INNER JOIN
           产品 ON 订单明细.产品ID = 产品.产品ID INNER JOIN
           运货商 ON 订单.运货商 = 运货商.运货商ID
查询结果如图9.1所示,如果要查询具体某一个订单的详细内容,还要在其后增加一个“WHERE 订单.订单ID =”的语句。
图9.1 执行查询语句后的结果
如果经常需要查询相同的字段内容(只是条件不同,如上例中可能只是订单的ID号不同而已),那么每次都重复地写这么一大串相同的代码,无疑会增加工作量和影响工作效率。
再看一下图9.1,其显示出来的界面与在SQL Server Management Studio中打开一个表的界面是否十分相似?如果将这个查询的结果集视为一个表,那么这个表就是一个视图,下面是将该查询结果创建成视图的代码:
CREATE VIEW 订单详细视图
AS
SELECT 订单.订单ID, 雇员.姓氏, 雇员.名字, 产品.产品名称,
         订单明细.单价, 订单明细.数量, 订单明细.折扣, 运货商.公司名称,
         订单.货主名称, 订单.货主地址, 订单.货主城市, 订单.订购日期,
         订单.发货日期
FROM 订单 INNER JOIN
           订单明细 ON 订单.订单ID = 订单明细.订单ID INNER JOIN
           雇员 ON 订单.雇员ID = 雇员.雇员ID INNER JOIN
           产品 ON 订单明细.产品ID = 产品.产品ID INNER JOIN
           运货商 ON 订单.运货商= 运货商.运货商ID
创建完视图之后,如果还要以同样的条件进行查询,只要输入以下一行代码就可以得到查询结果:
SELECT * FROM 订单详细视图
即使要查询某个订单的详细情况,也只要输入以下代码,而不用输入那么一长串代码了。
SELECT * FROM 订单详细视图
         WHERE 订单ID = 10248
视图具备了数据表的一些特性,数据表可以完成的功能,如查询、修改(虽然在修改记录时有些限制)、删除等操作,在视图中都可以完成。同时,视图也和数据表一样能成为另一个视图所引用的表。使用视图有以下几个优点:
l  简化查询语句:通过视图可以将复杂的查询语句变成很简单。
l  增加可读性:由于在视图中可以只显示有用的字段,并且可以使用字段别名,能方便用户浏览查询的结果。
l  方便程序的维护:如果用应用程序使用视图来存取数据,那么当数据表的结构发生改变时,只需要更设视图存储的查询语句即可,不需要更改程序。
l  增加数据的安全性和保密性:针对不同的用户,可以创建不同的视图,此时的用户只能查看和修改其所能看到的视图中的数据,而真正的数据表中的数据甚至连数据表都是不可见不可访问的,这样可以限制用户浏览和操作的数据内容。另外视图所引用的表的访问权限与视图的权限设置也是相互不影响的。
注意:视图是个虚拟的表,其存储的是查询语句而不是数据。视图中的数据都存储在其引用的数据表中,除非在视图中建立了索引。

9.2  创建视图

创建视图与创建数据表一样,可以使用SQL Server Management Studio和T-SQL语句两种方法,下面分别介绍这两种方法:

9.2.1  在SQL Server Management Studio中创建视图

在SQL Server Management Studio中创建视图的方法与创建数据表的方法不同,下面举例说明如何在SQL Server Management Studio中创建视图:

(1)启动【SQL Server Management Studio】,连接到本地默认实例,在【对象资源管理器】窗口里,选择本地数据库实例à【数据库】à【Northwind】à【视图】。

(2)右击【视图】,在弹出的快捷菜单里选择【新建视图】选项。

(3)出现的如图9.2所示的视图设计对话框,其上有个【添加表】对话框,可以将要引用的表添加到视图设计对话框上,在本例中,添加产品、订单、订单明细、雇员和运货商五个表。

图9.2 视图设计对话框

(4)添加完数据表之后,单击【关闭】按钮,返回到如图9.3所示的【视图设计】窗口。如果还要添加新的数据表,可以右击【关系图窗格】的空白处,在弹出的快捷菜单里选择【添加表】选项,则会弹出如图9.2中所示的【添加表】对话框,然后继续为视图添加引用表或视图。如果要移除已经添加的数据表或视图,可以右击在【关系图窗格】里选择要移除的数据表或视图,在弹出的快捷菜单里选择【移除】选项,或选中要移除的数据表或视图后,直接按【Delete】按钮移除。<

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值