学习目标
- 理解视图(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 姓名 = '赵六'
总结
- 视图的概念
- 管理视图:创建,修改,删除
- 修改视图中的数据