利用Transact-SQL语句中的CREATE VIEW命令创建视图:
使用Transact-SQL语句中的CREATE VIEW创建视图的语法形式如下:
CREATE VIEW [ < database_name > .] [ < owner > .] view_name [ ( column [ ,...n ] ) ]
[ WITH < view_attribute > [ ,...n ] ]
AS
select_statement
[ WITH CHECK OPTION ]
< view_attribute > ::=
{ ENCRYPTION | SCHEMABINDING | VIEW_METADATA }
使用Transact-SQL语句中的CREATE VIEW创建视图的参数说明如下:
view_name用于指定视图的名称,column用于指定视图中的字段名称。
WITH ENCRYPTION表示 SQL Server 加密包含 CREATE VIEW 语句文本在内的系统表列。
select_statement用于创建视图的SELECT语句,利用SELECT命令可以从表中或者视图中选择列构成新视图
的列。
WITH CHECK OPTION用于强制视图上执行的所有数据修改语句都必须符合由 select_statement 设置的准
则。
SCHEMABINDING表示在select_statement语句中如果包含表、视图或者引用用户自定义函数,则表名、视
图名或者函数名前必须有所有者前缀。
VIEW_ METADATA表示如果某一查询中引用该视图且要求返回浏览模式的元数据时,那么SQL Server将向
DBLIB和OLE DB APIS返回视图的元数据信息。
例子
选择表student和teacher中的部分字段和记录创建视图,并且限制表student中的记录只能是名称为“张
三”的记录集合,视图定义为view_part,其程序清单如下:
create view view_part
as
Select student.name,
student.age,student.sex,
teacher.name,age,salary
from
student,teacher
where student.name=’张三’
可以使用系统存储过程sp_rename修改视图的名称,该过程的语法形式如下:
sp_rename old_name,new_name
例子5-14:把视图v_all重命名为v_part,其程序清单如下:
sp_rename v_all,v_part
使用Transact-SQL语句DROP VIEW删除视图的语法形式如下:
DROP VIEW {view_name} [,…n]
可以使用该命令同时删除多个视图,只需在要删除的视图名称之间用逗号隔开即可。
例子5-15:同时删除视图v_student和v_teacher,其程序清单如下:
drop view v_student,v_teacher
通过视图修改记录 :
使用视图修改数据时,需要注意以下几点:
修改视图中的数据时,不能同时修改两个或者多个基表,可以对基于两个或多个基表或者视图的视图进行
修改,但是每次修改都只能影响一个基表。
不能修改那些通过计算得到的字段。
如果在创建视图时指定了WITH CHECK OPTION选项,那么所有使用视图修改数据库信息时,必须保证修改
后的数据满足视图定义的范围。
执行UPDATE、DELETE命令时,所删除与更新的数据必须包含在视图的结果集中。
如果视图引用多个表时,无法用DELETE命令删除数据。
插入数据记录 :
例子5-16:首先创建了一个新的视图v_employees,该视图基于表employees创建。
create view v_employees(number, name, age, sex, salary)
as
select number, name, age, sex, salary
from employees
where name=’张三’
然后,通过执行以下语句使用该视图向表employees中添加一条新的数据记录。
Insert into v_employees
Values(001,’李力’,22,’m’,2000)
更新数据记录
使用视图可以更新数据记录,但应该注意的是,更新的只是数据库中的基表。
例子5-19:创建了一个基于表employees的视图v_employees,然后通过该视图修改表employees中的记录
。其程序清单如下:
create view v_employees
as
select * from employees
update v_employees
set name=’张然’
where name=’张三’
删除数据记录
使用视图删除记录,可以删除任何基表中的记录,直接利用DELETE语句删除记录即可。但应该注意,必须
指定在视图中定义过的字段来删除记录。
例子5-20:利用视图v_employees删除表employees中姓名为张然的记录。其程序清单为:
delete from v_employees
where name=’张然’
浙公网安备 33010602011771号
