第 7讲视图视图概述
什么是视图?
基表( base table):独立存在的表
视图 —— 虚拟表。在 SQL中只存储视图的定义,不存放视图所对应的记录问题
问题如果经常要查询计算机系开设的课程,如何做到一次定义,多次使用?
如果做到让 00电子商务班的班主任只能看到本班的选课情况?
视图概述(
续
)
视图的作用
使用户只关注所关心的数据
提高了数据的安全性
提高客户端的查询效率创建视图
(
1
)
视图为基表的行的子集
【 问题 】 创建视图 v_Student,只显示 Student表中班级编码为
20000001的班级的学生信息
特点:
SELECT *
用 WHERE子句指明选择哪些行创建视图
(
2
)
视图为基表的列的子集
【 问题 】 创建视图 v_Course,只显示 Course表中的 CouName列和
SchoolTime列
特点:
SELECT子句中指明选择哪些列
没有 WHERE子句练习
1,创建视图 v_Class,只显示
Class表中系部编码为 01的系部的班级信息
2,创建视图 v_StuCouSub,只显示 StuCou表中的 StuNo列和
CouNo列创建视图
(
3
)
视图为多个表、视图连接组成的复杂查询 —— 最常用的情况
【 例 】 创建视图 v_StuCou,显示学生的学号、姓名和所选的课程名称
特点:
多表查询(其实只需要在正确的
select语句前加上 CREATE
VIEW…AS 即可)
练习
创建视图 v_CouByCmpt,显示计算机应用工程系承担的选修课程的信息(课程名称、授课老师、上课时间)
创建视图
(
4
)
视图为基表的统计汇总
【 问题 】 将课本 P52图 2-2-27的查询结果作为视图 v_CouByKind
特点:
视图定义中使用了 GROUP BY子句
注意:在下面的情况下必须明确指明视图每一列的列名:
1,视图中的某一列是算术表达式、函数或者常量
2,多表连接时,有两个或两个以上的列具有相同的列名
思考:能否将课本 P51图 2-2-26的查询结果作为视图练习
创建视图 v_CouByDep,显示各个系部开设的选修课的数量和报名人数总结
视图是一个 虚拟 表,创建视图的目的是为了方便查看数据
创建视图的方法
创建视图的注意事项修改视图
格式:
ALTER VIEW view_name
AS
select_statement
【 问题 】 将 v_Student进行修改,使其显示班级编码为 20000002的学生信息
加密视图
WITH ENCRYPTION
删除视图
格式:
DROP VIEW view_name
重命名视图
使用企业管理器
使用系统存储过程 sp_rename
显示视图信息
显示视图的定义信息 sp_helptext
显示视图的参照对象和字段信息
sp_depends
更新视图
INSERT操作
UPDATE操作
DELETE操作
注意:由于视图实际上并不存储记录,因此更新视图的操作最终都转化为对基表的更新操作
使用 WITH CHECK OPTION:保证在进行视图的更新操作时,所插入、
更新、删除的记录,满足视图定义中查询的条件表达式练习
创建视图 v_StuSQL,显示’ 00
电子商务’班并选修了‘ SQL
Server实用技术’的学生信息
(学号、姓名)。并要求加密视图。
小结
视图可被看成是虚拟表或存储查询
使用视图可提高数据库性能和安全性
对视图进行修改会影响基表数据
什么是视图?
基表( base table):独立存在的表
视图 —— 虚拟表。在 SQL中只存储视图的定义,不存放视图所对应的记录问题
问题如果经常要查询计算机系开设的课程,如何做到一次定义,多次使用?
如果做到让 00电子商务班的班主任只能看到本班的选课情况?
视图概述(
续
)
视图的作用
使用户只关注所关心的数据
提高了数据的安全性
提高客户端的查询效率创建视图
(
1
)
视图为基表的行的子集
【 问题 】 创建视图 v_Student,只显示 Student表中班级编码为
20000001的班级的学生信息
特点:
SELECT *
用 WHERE子句指明选择哪些行创建视图
(
2
)
视图为基表的列的子集
【 问题 】 创建视图 v_Course,只显示 Course表中的 CouName列和
SchoolTime列
特点:
SELECT子句中指明选择哪些列
没有 WHERE子句练习
1,创建视图 v_Class,只显示
Class表中系部编码为 01的系部的班级信息
2,创建视图 v_StuCouSub,只显示 StuCou表中的 StuNo列和
CouNo列创建视图
(
3
)
视图为多个表、视图连接组成的复杂查询 —— 最常用的情况
【 例 】 创建视图 v_StuCou,显示学生的学号、姓名和所选的课程名称
特点:
多表查询(其实只需要在正确的
select语句前加上 CREATE
VIEW…AS 即可)
练习
创建视图 v_CouByCmpt,显示计算机应用工程系承担的选修课程的信息(课程名称、授课老师、上课时间)
创建视图
(
4
)
视图为基表的统计汇总
【 问题 】 将课本 P52图 2-2-27的查询结果作为视图 v_CouByKind
特点:
视图定义中使用了 GROUP BY子句
注意:在下面的情况下必须明确指明视图每一列的列名:
1,视图中的某一列是算术表达式、函数或者常量
2,多表连接时,有两个或两个以上的列具有相同的列名
思考:能否将课本 P51图 2-2-26的查询结果作为视图练习
创建视图 v_CouByDep,显示各个系部开设的选修课的数量和报名人数总结
视图是一个 虚拟 表,创建视图的目的是为了方便查看数据
创建视图的方法
创建视图的注意事项修改视图
格式:
ALTER VIEW view_name
AS
select_statement
【 问题 】 将 v_Student进行修改,使其显示班级编码为 20000002的学生信息
加密视图
WITH ENCRYPTION
删除视图
格式:
DROP VIEW view_name
重命名视图
使用企业管理器
使用系统存储过程 sp_rename
显示视图信息
显示视图的定义信息 sp_helptext
显示视图的参照对象和字段信息
sp_depends
更新视图
INSERT操作
UPDATE操作
DELETE操作
注意:由于视图实际上并不存储记录,因此更新视图的操作最终都转化为对基表的更新操作
使用 WITH CHECK OPTION:保证在进行视图的更新操作时,所插入、
更新、删除的记录,满足视图定义中查询的条件表达式练习
创建视图 v_StuSQL,显示’ 00
电子商务’班并选修了‘ SQL
Server实用技术’的学生信息
(学号、姓名)。并要求加密视图。
小结
视图可被看成是虚拟表或存储查询
使用视图可提高数据库性能和安全性
对视图进行修改会影响基表数据