第7章 使用视图和索引优化查询.ppt
《第7章 使用视图和索引优化查询.ppt》由会员分享,可在线阅读,更多相关《第7章 使用视图和索引优化查询.ppt(43页珍藏版)》请在三一文库上搜索。
1、第7章 使用视图和索引 优化查询,复习:,数据库的基本关系运算 投影(查询指定的列) 连接(查询多个表) 选择(查询符合条件的行) 基本查询 对一张表的查询 对表中的原始数据的查询,分别用什么子句实现?,select 列表名,from 表名 , n ,where 条件,例:select * from xsqk where 出生日期1981-01-01 and 性别=0,复习:,汇总查询 (1) 使用聚合函数:每个聚合函数只返回一个单值。 select avg ( 成绩 ) from xs_kc (2) 分类汇总:每个组返回一条汇总记录。 select 学号, avg (成绩) from xs_
2、kc group by 学号 (3) (分类)明细汇总: select * from xs_kc compute avg (成绩),having avg (成绩) 75,by 学号,order by 学号,复习:,连接查询:同时查询多个表中的信息。 内连接:将多表中满足条件的行连接起来。 select xsqk.学号,姓名,课程号, 成绩 from xsqk, xs_kc where xsqk.学号 = xs_kc.学号 and 成绩60 外连接:将满足条件的行连接,不匹配的行也保留。 自连接:将同一个表中满足条件的行连接起来。,复习:,子查询:一个select语句(内查询)作为另一条sele
3、ct语句(外查询)的一部分。 相关子查询:内查询的执行依赖外查询。 嵌套子查询:(不依赖),select 学号, 姓名, 联系电话 from xsqk where ( select avg(成绩) from xs_kc where xsqk.学号=xs_kc.学号 ) 60,select 课程名称 , 授课教师 from kc where 课程号 = ANY (select 课程号 from xs_kc where 成绩60),说明:子查询执行后, 若返回1个单值,则可用比较运算符来设置条件: 若返回一个列表值,则可用:(not) in、any、all,引:,请思考:查询结果集能否被用户修改?
4、 在查询窗口得到的结果是不能被修改的。 查询结果集可以用into子句来保存。例: select xsqk.学号, 姓名, 专业名,课程名, 成绩 into cj from xsqk, xs_kc, kc where xsqk.学号=xs_kc.学号 and xs_kc.课程号=kc.课程号 再思考: cj表中的数据与基表数据是否并存于数据库中? 用户对查询到的信息(cj表)进行修改对基表是否有影响? 如果用户直接对基表进行操作,会有什么后果?,是。但会造成:数据重复存储。,无影响。,后果是:增加了数据的不安全性。,视图的使用 教学内容,基础知识: 视图概述 创建视图 修改视图 删除视图 使用视
5、图管理数据表中的数据, 视图的使用 学习目标,认知目标: 了解视图的概念、使用的目的和好处 理解视图与基表的关系 能力目标: 掌握创建、修改、删除视图的方法(重点、难点) 掌握查询视图的方法(重点),一、视图概述,视图的含义和作用 是基于某个查询结果的虚表。是用户查看和修改数据表中数据的一种方式。 每个视图都有几个被定义的列和多个数据行。 视图与基表的关系 视图中的数据列和行来源于其所引用的基表。 视图所对应的数据并不实际存储在数据库中,而是仍存储在视图所引用的基表中。 数据库中只存储视图的定义。,一、视图概述,使用视图的目的与好处 聚焦特定数据:使用户只能看到和操作与他们有关的数据,提高了数
6、据的安全性。 简化数据操作:使用户不必写复杂的查询语句就可对数据进行操作。 定制用户数据:使不同水平的用户能以不同的方式看到不同的数据。 合并分离数据:视图可以从水平和垂直方向上分割数据,但原数据库的结构保持不变。,二、创建视图,最基本的语句格式: create view 视图 (列名表) with encryption as select查询语句 with check option 通过对象资源管理器创建视图,加密视图的定义,使用户只能查看,不能修改。,强制所有通过视图修改的数据满足select语句中指定的条件。,二、创建视图,实例1:创建一个 名为“v1”的视图,用于查询计算机网络专业男生
7、的学号、姓名、出生日期,并将视图的列名分别改为:学生学号、男生姓名、生日。,create view v1 (学生学号,男生姓名, 生日) as select 学号, 姓名, 出生日期 from xsqk where 专业名=计算机网络 and 性别=1 go select * from v1,通过视图查询基表中的数据。,二、创建视图,实例2:创建一个 名为“v综合信息”的视图,用于查询学生的学号、姓名、专业名、课程名、成绩等信息,create view V综合信息 as select xsqk.学号,姓名,专业名,课程名,成绩 from xsqk , xs_kc , kc where xsqk
8、.学号 = xs_kc.学号 and xs_kc.课程号= kc.课程号 exec sp_helptext v综合信息,with encryption,对视图的定义进行加密,查看视图的定义,二、创建视图,课堂练习1:创建一个名为“V平均成绩”的视图,用于分组汇总查询每个学生的平均成绩,将视图的列名分别改为:学生学号,个人平均分,并加密视图的定义。,create view V平均成绩(学生学号,个人平均分) with encryption as select 学号, avg (成绩) from xs_kc group by 学号,二、创建视图,实例3:创建一个名为“V单科最高分”的视图,用于查询
9、每门课程的最高分的学生学号、姓名、课程号、成绩信息。,create view V单科最高分 as select xsqk.学号,姓名,课程号,成绩 from xsqk, xs_kc where xsqk.学号= xs_kc.学号 and 成绩= any (select max(成绩) from xs_kc group by 课程号),二、创建视图,课堂练习2:创建一个名为“V全校最高分”的视图,用于查询所有成绩中的最高分的学生学号、姓名、专业名、课程号、成绩。,create view V全校最高分 as select xsqk.学号,姓名,专业名,课程号,成绩 from xsqk, xs_kc
10、 where xsqk.学号= xs_kc.学号 and 成绩= (select max(成绩) from xs_kc),成绩= all (select 成绩 from xs_kc),三、修改视图,语法格式: alter view 视图 (列名表) with encryption as select查询语句 with check option 通过对象资源管理器修改视图,三、修改视图,实例4:在“v1”的视图中增加两列:专业名和所在系。 alter view v1 (学生学号,男生姓名,生日,专业,系) as select 学号,姓名,出生日期,专业名,所在系 from xsqk where
11、专业名=计算机网络 and 性别=1,三、修改视图,实例5:修改名为“v综合信息”的视图,取消其加密属性,增加选项检查属性。,alter view V综合信息 as select xsqk.学号, 姓名, 专业名, 课程名, 成绩 from xsqk, xs_kc, kc where xsqk. 学号 = xs_kc.学号 and xs_kc.课程号= kc.课程号 with check option,四、删除视图,语句格式 drop view 视图名 ,n ,五、使用视图管理数据表中的数据,说明: 视图可以代替表完成从表中查询、插入、更新和删除数据的操作。,五、使用视图管理数据表中的数据 -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第7章 使用视图和索引优化查询 使用 视图 索引 优化 查询
链接地址:https://www.31doc.com/p-5030299.html