《数据库系统原理与应用 SQL Sever2005 教学课件 ppt 作者 刘志成 颜谦和 主编05-第5章 索引与视图》由会员分享,可在线阅读,更多相关《数据库系统原理与应用 SQL Sever2005 教学课件 ppt 作者 刘志成 颜谦和 主编05-第5章 索引与视图(76页珍藏版)》请在金锄头文库上搜索。
1、第五章,索引与视图,索引与视图,第1讲 索引,学习要点,索引 索引概述 创建索引 查看和删除索引 视图 视图概述 创建、修改、查看、删除、使用视图,索引,索引概述 索引是一个单独的、物理的数据库结构 该结构中包括表中的一列或若干列的值以及相应的指向表中物理标识这些值的数据页的逻辑指针的集合 索引依赖于数据库的表,作为表的一个组成部分 一旦创建后,由数据库系统自身进行维护 存放于索引页面中 个表的存储是由两部分组成的,一部分用来存放表 的数据页面,另一部分存放索引页面 分类,学习要点,索引概述,分类 按存储结构的不同分为两类 聚集索引 (Clustered Index) 非聚集索引(Nonclu
2、stered Index),索引概述,索引分类,聚集索引(Clustered Index) 聚集索引与数据混为一体 对表的物理数据页中的数据按列进行排序,然后再重新存储到磁盘上 表的所有数据完全重新排列 一个表只能有一个聚集索引 【例5-1】,分类,索引分类,【例5-1】 在表information中查询s_no为“20021003016”的行(列s_no上已建立聚集索引),返回,索引分类,非聚集索引(Nonclustered Index) 本索引与表的数据完全分离 无需将物理数据页中的数据按列排序 ,而是存储索引行 故使用更多存储空间(与聚集索引相比) 一个表最多可以建249 个非聚集索引
3、【例5-2】,分类,索引分类,【例5-2】 在表information中查询s_no为“20021003016”的行(列s_no上已建立非聚集索引),返回,索引,创建索引 使用SSMS创建 使用T-SQL创建,学习要点,创建索引,使用SSMS创建 Step1: 选择数据表(需创建索引)右键“所有任务”“管理索引”,step2,创建索引,使用SSMS创建 Step2: “管理索引”对话框 选择列所在的数据库和数据表(视图) 单击“新建”按钮,step3,1,2,3,创建索引,使用SSMS创建 Step3: “新建索引”对话框 选择需要创建索引的列 指定索引名称 指定“索引选项” “确定”,创建索
4、引,1,2,3,4,创建索引,使用T-SQL创建 基本语句格式: 示例,CREATE UNIQUE CLUSTERED | NONCLUSTERED INDEX 索引名 ON 表 | 视图 (列 ASC | DESC ,.n),UNIQUE,CLUSTERED,NONCLUSTERED,ASC | DESC,创建唯一索引,创建聚集索引,创建非聚集索引,创建排序方式,默认为升序(ASC),创建索引,创建索引,示例 【例5-3】 建立关于information表的s_no列的聚集索引 【例5-4】 建立关于course表的c_no列的惟一非聚集索引,示例,CREATE CLUSTERED INDE
5、X s_no_id ON information(s_no),CREATE UNIQUE NONCLUSTERED INDEX c_no_id ON course(c_no),创建索引,示例 【例5-5】 建立关于score表的s_no列和c_no列的复合非聚集索引,使用T-SQL创建索引,CREATE NONCLUSTERED INDEX s_c_no_id ON score(s_no,c_no),索引,查看和删除索引 使用SSMS 使用T-SQL,学习要点,使用SSMS Step1: 选择数据表(需创建索引)右键“所有任务”“管理索引”,step2,查看和删除索引,使用SSMS Step2
6、: “管理索引”对话框 选择列所在的数据库和数据表(视图) 选择索引 单击“删除”按钮,查看和删除索引,查看和删除索引,查看和删除索引,使用T-SQL 查看索引 删除索引 索引优化向导(Index Tuning Wizard),查看和删除索引,使用,查看索引 基本语句格式: 【例5-6】查看information 表的索引 返回结果,使用T-SQL,T-SQL,sp_helpindex objname = name,sp_helpindex information,返回所有索引信息,使用,删除索引 基本语句格式: 【例5-7】删除 course 表的 c_no_id 索引,使用T-SQL,T-
7、SQL,DROP INDEX 表名.索引名 ,.n,删除一个或多个当前数据库中的索引,DROP INDEX course.c_no_id,此命令无法删除由CREATE TABLE 或ALTER TABLE 命令创建的PRIMARY KEY 或UNIQUE 约束索引,注意:,使用,索引优化向导(Index Tuning Wizard) 目的 为了创建或选择可能是最好的数据库的一组索引 对将在数据库上执行的查询进行索引的优化 示例,使用T-SQL,T-SQL,【例5-8】使用查询优化向导,CREATE NONCLUSTERED INDEX idxS_no ON information(s_no)
8、CREATE NONCLUSTERED INDEX idxS_name ON information(s_name) CREATE NONCLUSTERED INDEX idxS_sex ON information(s_sex),假设已经在表中创建了以下索引:,当执行以下的查询时,使用索引优化向导来 分析表中索引的使用情况,SELECT I.s_no,s_name,grade,semester FROM information I,score S WHERE I.s_no=S.s_no,过程说明,索引优化向导,过程说明 Step1: 打开查询分析器窗口打开student数据库 在表上创建索引
9、在查询分析器窗口中输入查询,step2,【例5-8】,过程说明 Step2: “查询”菜单“索引优化向导” 弹出“欢迎使用索引优化向导”对话框,Step3,【例5-8】,过程说明 Step3: 索引优化向导“选择服务器和数据库”对话框,Step4,【例5-8】,去除此勾,添加此勾,选择此项,过程说明 Step4: “指定工作负荷”对话框 选择“SQL查询分析器选择”,Step5,【例5-8】,过程说明 Step5: “选择要优化的表”对话框 选择“information”表,Step6,【例5-8】,过程说明 Step6: “索引建议”对话框 得出建议单击“分析”,step7,【例5-8】,过
10、程说明 Step7: 单击“分析”按钮显示分析报告,step8,【例5-8】,过程说明 Step8: 如果需要显示其他报表,可从“报表”下拉列表中选择,step9,选择列表项,【例5-8】,过程说明 Step9: 点击“关闭”按钮后,回到“索引建议”对话框,单击“下一步”按钮,显示“调度索引更新作业”对话框,step10,勾选此项,【例5-8】,过程说明 Step10: 单击“下一步”按钮,最后的对话框被显示。单击“完成”按钮将应用你所作出的选择,step11,【例5-8】,过程说明 Step11: 显示最后对话框。单击“完成”按钮将应用你所作出的 选择,过程说明,【例5-8】,视图,视图概述
11、 视图不是真实存在的基础表,而是一张虚表 通过视图看到的数据只是存放在基本表中的数据 对视图的操作与对表的操作一样 可以对其进行查询、修改(有一定的限制)和删除,学习要点,视图,创建 使用SSMS 使用T-SQL,学习要点,创建视图,使用SSMS Step1: 选定需要创建视图的数据库右击该数据库快捷菜单中选择“新建”、“视图”,step2,创建视图,使用SSMS Step2: 右击关系图窗格 单击“添加表”,step3,创建视图,使用SSMS Step3-1: )在“表”或“视图”选项卡中单击需要添加到新视图中的表或视图单击“添加”按钮,step3,创建视图,使用SSMS Step3-2:
12、从关系图窗格中数据表(视图)中选择需要的列,step3,创建视图,使用SSMS Step3-3: 右击关系图窗格单击“运行” 可以查看结果集,step3,创建视图,使用SSMS Step3-4: 右击关系图窗格 单击“保存” 输入新视图的名称 确定保存视图定义,创建,创建视图,使用T-SQL 基本语句: 语句说明: 列名如未在Create view后指明,则由查询语句中 列字段组成(必须指明列名的三种情况) 查询语句通常不允许含有ORDER BY子句 DISTINCT短语,创建视图、示例,CREATE VIEW 视图名 ( 列名 ,.n ) AS 查询语句 WITH CHECK OPTION
13、,可以是任意复杂的SELECT语句,必须明确指明组成视图的所有列名 其中某个目标列不是单纯的列名,而是列表达式或聚合函数; 多表连接时,选出了几个同名的列作为视图的字段; 需要在视图中为某个列启用新的名字,返回,创建视图,示例: 【例5-11】创建一个关于学生成绩的视图 【例5-9】创建一个关于学生信息的视图。,next,CREATE VIEW stu_info_view AS SELECT s_no,s_name,s_sex,s_address FROM information,CREATE VIEW grade_view AS SELECT B.s_no,s_name,c_name,gra
14、de FROM information A,score B,course C WHERE A.s_no=B.s_no AND C.c_no=B.c_no,创建视图,示例: 【例5-10】创建有关“软件031”班级学生信息的视图,并保证在进行修改、插入和删除时,仍然保证该视图中只有“软件031”班级的学生,next,CREATE VIEW rj031_info_view AS SELECT s_no,s_name,s_sex,s_address FROM information WHERE s_class软件031 WITH CHECK OPTION,创建视图,示例: 【例5-12】创建一个反映
15、学生年龄的视图,使用T-SQL,CREATE VIEW age_view(s_no,s_name,s_age) AS SELECT s_no,s_name,Year(GetDate()-Year(s_birth) FROM information,视图,修改 使用SSMS 使用T-SQL,学习要点,修改视图,使用SSMS 修改视图定义 重命名视图,修改视图,修改视图,修改视图定义 Step1: 启动SQL Server,登录到指定的服务器打开视图的所在数据库 单击视图 右栏选择视图名(需修改) 选择“设计视图”选项,step2,1,2,3,4,修改视图,修改视图定义 Step2: 在弹出的关系
16、图窗格中,从数据表(视图)中选择需要添加或删除的列 单击“保存”命令,SSMS,修改视图,重命名视图 Steps: 启动SQL Server,登录到指定的服务器打开视图的所在数据库 单击视图 右栏选择视图名(需修改) 选择“重命名”选项,1,2,3,4,SSMS,修改视图,使用T-SQL 使用T-SQL修改视图 使用sp_rename重命名视图,修改视图,修改视图,使用T-SQL修改视图 基本语句 示例 【例5-13】 【例5-14】,使用T-SQL,ALTER VIEW 视图名 ( 列名 ,.n ) AS 查询语句 WITH CHECK OPTION ,修改视图,【例5-13】 修改关于学生信息的视图stu_info_view,使之仅包含学生的学号、姓名和性别等基本信息,示例,ALTER VIEW stu_info_vi