SQLServer学习笔记十:视图

学习目标

  • 理解视图(VIEW)的概念
  • 能够创建、修改视图

视图的概念

视图(VIEW)是基于某个查询结果的虚表。简单的来说,是给用户观察数据库的一种机制,通过视图浏览表中有关的数据,其数据的物理存放地址仍在表中,就是说并未将数据真实提出来,只是一个虚拟表。称用来导出视图的表为基表,导出的视图称为虚表

在SQL Server中可以创建下面三种视图:

  • 标准视图,组合了一个或多个表中的数据,将重点放在特定数据上,简化数据操作。
  • 索引视图,是创建了唯一聚集索引的视图,即数据经过计算并存储下来,不适合用于经常更新的数据集。
  • 分区视图,在一台或多台服务器间连接一组成员表的分区数据

视图的优点

  • 着重与特定数据
  • 简化数据操作
  • 自定义数据
  • 导出和导入数据
  • 跨服务器组合分区数据

视图管理

创建视图

使用CREATE VIEW语句创建视图,语法如下:

CREATE VIEW [shema_name.] view_name AS
select_statement  -- 查询语句
  • [shema_name.] 数据库名称
  • view_name 视图名称

练习

创建视图,返回每个同学所在班级、专业以及班主任。

CREATE VIEW view_student_class AS
SELECT sno AS 学号, sname AS 姓名, s.classid AS 班级, c.speciality AS 专业, c.counselor AS 班主任
FROM students AS S
LEFT JOIN classes AS c ON c.classid = s.classid 

修改视图

  • 使用sp_rename修改视图名称,例如:
EXEC sp_rename 'view_student_class', 'view_student_class1'
  • 使用sp_rename修改视图中列的名称,例如
EXEC sp_rename 'view_student_class.专业', '所属专业'
  • 使用ALTER修改视图查询语句,例如:
ALTER VIEW <视图名> AS
select_statement

练习

使用ALTER修改视图view_student_class,添加性别和所在院系编号。

ALTER VIEW view_student_class AS
SELECT sno AS 学号, sname AS 姓名, gender AS 性别, s.classid AS 班级, c.speciality AS 专业, c.deptno AS 院系编号, c.counselor AS 班主任
FROM students AS S
LEFT JOIN classes AS c ON c.classid = s.classid 

删除视图

使用DROP VIEW语句删除视图,语法如下:

DROP VIEW <视图1>[, <视图2>...]

修改视图中的数据

使用视图可以修改数据记录,注意修改的是基表中的数据记录。

  • 向视图添加数据。例如,创建一个新视图view_students,通过INSERT INTO向视图添加一条记录。
    CREATE VIEW view_students AS
    SELECT sno AS 学号, sname AS 姓名, classid AS 班级
    FROM students
    
    INSERT INTO view_students VALUES ('J1300106', '王五', 'J13001')
    
  • 更新视图中的数据。例如,更新view_student_class中的学生姓名,最终影响的是students表中的记录。
    UPDATE view_student_class SET 姓名 = '赵六'
    where 姓名 = '王五'
    
  • 删除视图中的数据。例如,删除view_student_class中赵六的信息:
    DELETE FROM view_student_class
    WHERE 姓名 = '赵六'
    

总结

  • 视图的概念
  • 管理视图:创建,修改,删除
  • 修改视图中的数据
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少儿编程乔老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值