SQL数据库连接查询

视图的定义:视图是从一个或多个表导出的虚表。视图只能建立在当前正在使用的数据库中。
优点:1.可以使视图集中数据、简化和定制不同用户对数据库的不同数据要求。
2.使用视图可以屏蔽数据的复杂性,用户不必了解数据库的结构,就可以方便地使用和管理数据,简化数据权限管理和重新组织数据以便输出到其他应用程序中。
3.视图可以让不同的用户以不同的方式看到不同或者相同的数据集。
4.在某些情况下,由于表中数据量太大,因此在表的设计时常将表进行水平或者垂直分割,但表的结构的变化对应用程序产生不良的影响。 
5.视图提供了一个简单而有效的安全机制。
用T-SQL语句创建视图
语法:
[sql]  view plain  copy
  1. create view 视图名  
  2. as  
  3. select语句  
视图创建后,只在数据字典中存放视图的定义,而其中的select语句并不执行。
创建视图
【例】创建v_student视图,包含计算机专业学生的学号,姓名
     
[sql]  view plain  copy
  1. create view cs_course  
  2.       as   
  3.  select 学号,姓名  
  4.          from student  
  5.          where 专业名=‘计算机’   
--创建多表的视图
[sql]  view plain  copy
  1. create view v_name1  
  2. as  
  3. select a.customerid,companyname,orderid,c.city,photo  
  4. from customers as a join [orderas b  
  5. on a.customerid=b.customerid  
  6. join employees c  
  7. on b.employeeid=c.employeeid  
查询视图
语法:
[sql]  view plain  copy
  1. select 字段 from 视图名  
【例】在视图v_student中查询计算机专业的学生学号和姓名
 
[sql]  view plain  copy
  1. select 学号,姓名 from v_student  
修改视图
语法:  
[sql]  view plain  copy
  1. alter view 视图名  
  2.         as  
  3.         T-SQL语句  

【例】将v_student视图修改为包括计算机专业学生的学号,
      其选修的课程号及成绩。 
     
[sql]  view plain  copy
  1. alter view v_student  
  2.       as  
  3.     select student.学号,课程号,成绩  
  4.         from student, subject  
  5.         where student.学号=subject.学号   
  6.         and 专业名=‘计算机’   

删除视图
语法:
[sql]  view plain  copy
  1. drop view 视图名  
【例】删除名为student_course_avg的视图
     
[sql]  view plain  copy
  1. drop view student_course_avg  
向视图中插入数据
语法:
[sql]  view plain  copy
  1. insert into 视图名(字段名...)  
  2.     values(字段名...)  
练习:向v_student视图中插入一条纪录
     
[sql]  view plain  copy
  1. insert into cs_course(学号,课程号,成绩)  
  2.      values(1111,1,88)  
更新视图的数据
语法:
[sql]  view plain  copy
  1. update 视图名  
  2.     set语句  
【例】将v_student视图中学号为1001的学生的1号课程 成绩改90。
     
[sql]  view plain  copy
  1. use grade  
  2.       update cs_course  
  3.       set 成绩=90  
  4.       where 学号=1001 and 课程号=1  
更新视图的数据
使用视图修改数据时,需要注意以下几点:
(1)修改视图中的数据时,不能同时修改两个或者多个基表,可以对基于两个或多个基表或者视图的视图进行修改,但是每次修改都只能影响一个基表。
(2)不能修改那些通过计算得到的字段,如包含计算值或者合计函数的字段。
(3)执行UPDATE、DELETE命令时,所删除与更新的数据必须包含在视图的结果集中。
(4)如果视图在创建时引用了多个数据表则无法用DELETE命令删除其中的数据,若使用UPDATE命令更新数据,则应与INSERT语句一样,被更新的列必须属于同一个数据表。
视图的加密
with encryption 表示SQL Server 加密包含 create view 语句文本在内的系统表列。只能加密,不可解密,所以加密前要备份.
[sql]  view plain  copy
  1. create view v1  
  2.     with encryption  
  3.     as  
  4.     select 学号,姓名 from student  
查看视图定义
语法:
[sql]  view plain  copy
  1. exec sp_helptext 视图名  
【例】查看视图v1:
     
[sql]  view plain  copy
  1. Exec sp_helptext v1  
执行后,出现提示:对象备注已加密!
      ★加密后无法查看视图,所以需要保存源代码!


sp_helptext显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本
视图的重命名:
可以使用系统存储过程sp_rename修改视图的名称,该过程的语法形式如下: 
[sql]  view plain  copy
  1. exec sp_rename? old_name,new_name  
例:把视图v2重命名为v_part:    
[sql]  view plain  copy
  1. exec sp_rename? v2,v_part   


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值