SQL数据库视图

视图的定义:视图是从一个或多个表导出的虚表。视图只能建立在当前正在使用的数据库中。
优点:1.可以使视图集中数据、简化和定制不同用户对数据库的不同数据要求。
2.使用视图可以屏蔽数据的复杂性,用户不必了解数据库的结构,就可以方便地使用和管理数据,简化数据权限管理和重新组织数据以便输出到其他应用程序中。
3.视图可以让不同的用户以不同的方式看到不同或者相同的数据集。
4.在某些情况下,由于表中数据量太大,因此在表的设计时常将表进行水平或者垂直分割,但表的结构的变化对应用程序产生不良的影响。 
5.视图提供了一个简单而有效的安全机制。
用T-SQL语句创建视图
语法:

create view 视图名
as
select语句

视图创建后,只在数据字典中存放视图的定义,而其中的select语句并不执行。
创建视图
【例】创建v_student视图,包含计算机专业学生的学号,姓名

create view cs_course
      as 
 select 学号,姓名
         from student
         where 专业名=‘计算机’ 

--创建多表的视图

create view v_name1
as
select a.customerid,companyname,orderid,c.city,photo
from customers as a join [order] as b
on a.customerid=b.customerid
join employees c
on b.employeeid=c.employeeid

查询视图
语法:

select 字段 from 视图名

【例】在视图v_student中查询计算机专业的学生学号和姓名

select 学号,姓名 from v_student

修改视图
语法:  

alter view 视图名
        as
        T-SQL语句


【例】将v_student视图修改为包括计算机专业学生的学号,
      其选修的课程号及成绩。 

alter view v_student
      as
	select student.学号,课程号,成绩
        from student, subject
        where student.学号=subject.学号 
        and 专业名=‘计算机’ 


删除视图
语法:

drop view 视图名

【例】删除名为student_course_avg的视图

drop view student_course_avg

向视图中插入数据
语法:

insert into 视图名(字段名...)
	values(字段名...)

练习:向v_student视图中插入一条纪录  

insert into cs_course(学号,课程号,成绩)
     values(1111,1,88)

更新视图的数据
语法:

update 视图名
	set语句

【例】将v_student视图中学号为1001的学生的1号课程 成绩改90。

use grade
      update cs_course
      set 成绩=90
      where 学号=1001 and 课程号=1

更新视图的数据
使用视图修改数据时,需要注意以下几点:
(1)修改视图中的数据时,不能同时修改两个或者多个基表,可以对基于两个或多个基表或者视图的视图进行修改,但是每次修改都只能影响一个基表。
(2)不能修改那些通过计算得到的字段,如包含计算值或者合计函数的字段。
(3)执行UPDATE、DELETE命令时,所删除与更新的数据必须包含在视图的结果集中。
(4)如果视图在创建时引用了多个数据表则无法用DELETE命令删除其中的数据,若使用UPDATE命令更新数据,则应与INSERT语句一样,被更新的列必须属于同一个数据表。
视图的加密
with encryption 表示SQL Server 加密包含 create view 语句文本在内的系统表列。只能加密,不可解密,所以加密前要备份.

create view v1
	with encryption
	as
	select 学号,姓名 from student

查看视图定义
语法:

exec sp_helptext 视图名

【例】查看视图v1:

Exec sp_helptext v1

执行后,出现提示:对象备注已加密!
      ★加密后无法查看视图,所以需要保存源代码!


sp_helptext显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本
视图的重命名:
可以使用系统存储过程sp_rename修改视图的名称,该过程的语法形式如下: 

exec sp_rename? old_name,new_name

例:把视图v2重命名为v_part:    

exec sp_rename? v2,v_part 

 

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值