一.视图概述
- 视图中的内容是由查询定义来的,并且视图和查询都是通过SQL语句定义的,它们有着许多相同和不同之处。
具体如下:
(1)存储:视图存储为数据库设计的一部分,而查询则不是。视图可以禁止所有用户访问数据库中的基表,而要求用户只能通过视图操作数据。这种方法可以保护用户和应用程序不受某些数据库修改的影响,同样也可以保护数据表的安全性。
(2) 排序:可以排序任何查询结果,但是只有当视图包括TOP子句时才能排序视图。
(3)加密:可以加密视图,但不能加密查询。
二.以界面方式操作视图
- 视图的创建
下面在SQL Server Management Studio中创建视图“View_Student”,具体操作步骤如下。
(1)启动SQL Server Management Studio,并连接到SQL Server 2012中的数据库。
(2)在“对象资源浏览器”中展开“数据库”节点,展开指定的数据库“db_2012”。
(3)鼠标右键单击“视图”选项,在弹出的快捷菜单中选择“新建视图”命令。
(4)进入“添加表”对话框。在列表框中选择学生信息表“Student”,单击“添加”按钮,然后单击“关闭”按钮关闭该窗体。
(5)进入“视图设计器”界面。在“表选择区”中选择“所有列”选项,单击执行按钮 ,视图结果区中自动显示视图结果。
(6)单击工具栏中的“保存”按钮 ,弹出“选择名称”对话框。在“输入视图名称”文本框中输入视图名称“View_Student”,单击“确定”按钮即可保存该视图。
- 视图的删除
用户可以删除视图。删除视图时,底层数据表不受影响,但会造成与该视图关联的权限丢失。
下面介绍如何在“SQL Server Management Studio”管理器中删除视图,具体操作步骤如下。
(1)启动SQL Server Management Studio,并连接到SQL Server 2012中的数据库。
(2)在“对象资源浏览器”中展开数据库节点,展开指定的数据库“db_2012”。
(3)展开“视图”节点,鼠标右键单击要删除的视图“View_Student”,在弹出的快捷菜单中选择“删除”命令。
三.使用CREATE VIEW语句创建视图
- 使用CREATE VIEW语句可以创建视图,语法如下:
CREATE VIEW [ schema_name . ] view_name [ (column [ ,…n ] ) ]
[ WITH <view_attribute> [ ,…n ] ]
AS select_statement [ ; ]
[ WITH CHECK OPTION ]
<view_attribute> ::=
{
[ ENCRYPTION ] [ SCHEMABINDING ] [ VIEW_METADATA ]
}
四.使用ALTER VIEW语句修改视图
- 使用ALTER VIEW语句可以修改视图,语法如下:
ALTER VIEW view_name [( column [,…n])]
[WITH ENCRYPTION]
AS
select_statement
[WITH CHECK OPTION]
说明:
如果原来的视图定义是用WITH ENCRYPTION或CHECK OPTION创建的,那么只有在ALTER VIEW中也包含这些选项时,这些选项才有效。
五.使用DROP VIEW语句删除视图
- 使用DROP VIEW语句可以删除视图,语法如下:
DROP VIEW view_name [,…n]
注意:
在单击“全部除去”按钮删除视图以前,可以在“除去对象”对话框中单击“显示相关性” 按钮,即可查看该视图依附的对象,以确认该视图是否为想要删除的视图。
六.使用存储过程sp_rename修改视图
- 使用sp_rename视图,语法如下:
exec sp_rename old_view, new_view
将视图view1重命名为视图view2,代码如下:
exex sp_rename view1,view2
七. 从视图中浏览数据
- 下面在SQL Server Management Studio中查看视图“View_Student”的信息(如果该视图已删除,请按的方法创建此视图),具体操作步骤如下。
(1)启动SQL Server Management Studio,并连接到SQL Server 2012中的数据库。
(2)在“对象资源浏览器”中展开“数据库”节点,展开指定的数据库“db_2012”。
(3)再依次展开“视图”节点,就会显示出当前数据库中的所有视图,鼠标右键单击要查看信息的视图。
(4)在弹出的快捷菜单中,如果想要查看视图的属性,单击“属性”选项,弹出视图属性窗体。
(5)如果想要查看视图中的内容,可在快捷菜单中选择“编辑前200行”选项,在右侧即可以显示视图中的内容。
(6)如果想要重新设置视图,可在快捷菜单中单击“设计”选项,弹出视图的设计窗体。在此窗体中可对视图进行重新设置。
八.向视图中添加数据
- 使用视图可以添加新的记录,但应该注意的是,新添加的数据实际上是存储在与视图相关的表中。
例如:向视图“View_Student”中插入信息。
步骤如下:
(1)鼠标右键单击要插入记录的视图,在弹出的快捷菜单中选择“设计”命令,显示视图的设计界面
(2)在显示视图结果的最下面一行直接输入新记录即可。
(3)然后按下Enter键,即可把信息插入到视图中。
(4)单击“ ”按钮,完成新记录的添加。
九.修改视图中的数据
- 使用视图可以修改数据记录,但是与插入记录相同,修改的是数据表中的数据记录。
例如:修改视图“View_Student”中的记录,将“明日科技”修改为“明日”。
步骤如下:
(1)鼠标右键单击要修改记录的视图,在弹出的快捷菜单中选择“设计”命令,显示视图的设计界面。
(2)在显示的视图结果中,选择要修改的内容,直接修改即可。
(3)最后按下Enter键,即可把信息保存到视图中。
十.删除视图中的数据
- 使用视图可以删除数据记录,但是与插入记录相同,删除的是数据表中的数据记录。
例如:删除视图“View_Student”中的记录“明日科技”。
步骤如下:
(1)鼠标右键单击要删除记录的视图,在弹出的快捷菜单中选择“设计”命令,显示视图的设计界面。
(2)在显示视图的结果中,选择要删除的行“明日科技”,在弹出的快捷菜单中选择“删除”命令,弹出删除对话框。
(3)单击“是”按钮,便将该记录删除。
十一.使用视图过滤数据
【例6.8】 在学生信息表Student中存储了学生的编号、姓名、年龄、性别等等,使用视图可以过滤掉性别。本例创建指定列的视图,视图内容为数据表Student中的学号、姓名、年龄3列,同时查看视图。代码如下:
–创建视图
create view v_ware
as
–定义只显示指定信息的查询语句
select sno ,sname ,sage from Student
go
–查询视图中的数据
select * from v_ware
十二.创建视图失败
创建视图如下,提示:create view必须是查询批次中的第一个语句。
use db_2012
create view V_XX
as
select * from employee
这是因为“create view”需要单独的创建环境,不能与其他语句连在一起。在create view之前加一个“GO”可以解决问题。
十三.创建视图提示基表无效
创建视图时,提示:对象名’student’ 无效。
CREATE VIEW V_XX (Sno,Sname)
AS SELECT ID,Sname
FROM student
这是student表不存在导致的,select语句无从查询,创建视图前应确定基表及字段的可用性。
十四.不能通过视图来更新数据有哪些原因?
答:不能通过视图来更新数据应考虑以下情况:
如果两个基表中有同名称的字段,则不能更新数据,需指定具体表和字段。
如果有INSTEAD OF触发器,将执行INSTEAD OF触发器中的代码,而不执行提交的数据更新。
视图中的聚合函数或GROUP BY子句将部分数据汇总,无法确定更新哪些记录。
创建视图时如果使用了联接,则UPDATE语句只能更新其中的一个表。
浙公网安备 33010602011771号