第6章 视图和索引 课件(共26张PPT)-《数据库应用技术-SQL Server》同步教学(人民邮电版)

资源下载
  1. 二一教育资源

第6章 视图和索引 课件(共26张PPT)-《数据库应用技术-SQL Server》同步教学(人民邮电版)

资源简介

(共26张PPT)
第6章 视图和索引
本章目标
◎本章内容
■6.1 视图的概念
■6.2 定义视图
■6.3 视图的维护
■6.4 通过视图操纵表数据
■6.5 索引
◎本章目标
■掌握创建视图的方法
■掌握管理视图的方法
■掌握通过视图修改数据的方法
■理解索引的概念
■掌握创建索引的两种方式
6.1 视图的概述
6.1.1 视图的基本概念
视图是一种数据库对象,是从一个或多个基表(或视图)导出的虚表。
视图可以是一个数据表的一部分,也可以是多个基表的联合;
视图也可以由一个或多个其他视图产生。
基表(base table):独立存在的表。
视图(View)——虚拟表。在SQL中只存储视图的定义,不存放视图所对应的记录
6.1 视图的概述
6.1.2 视图的优点
(1)视图能够简化用户的操作。
(2)视图使用户能从多种角度看待同一数据。
(3)视图对重构数据库提供一定程序的逻辑独立性。
(4)视图能够对机密数据提供安全保护。
(5)使用视图可以重新组织数据
6.2 定义视图
6.2.1使用SQL Server Management Studio创建视图
【例6-1】为数据库“学生选课”创建一个视图,该视图基于“课程”表和“教师”表,能够查看所有课程的课程名、学时、学分以及讲授每门课程的教师姓名和职称。
6.2 定义视图
6.2.2 使用T-SQL语句创建视图
在SQL Server 2008中,使用CREATE VIEW 语句创建视图。
语法格式如下:
CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]
[ WITH [ ,...n ] ]
AS
select_statement
[ WITH CHECK OPTION ]
::=
{ [ ENCRYPTION ] [ SCHEMABINDING ] [ VIEW_METADATA ] }
视图名
视图中所使用的列名
搜索语句
6.2 定义视图
【例6-2】使用CREATE VIEW 语句,在“学生选课”数据库中创建一个基于教师表的视图“教师_view”,该视图要求查询输出所有教师的姓名、性别、职称。并要对该视图进行加密,不允许查看该视图的定义语句。
创建这个视图对应的SQL语句如下:
USE 学生选课
GO
CREATE VIEW 教师_view
WITH ENCRYPTION
AS
SELECT 姓名,性别,职称FROM 教师
GO
6.2 定义视图
【例6-3】使用CREATE VIEW 语句,在“学生选课”数据库中创建一个基于学生表和选课表的视图“成绩_view”,该视图要求查询输出所有不及格学生的学号,姓名,课程名,成绩。
USE 学生选课
GO
CREATE VIEW 成绩_view
AS
SELECT 学生.学号 AS 学生学号,姓名,课程名,成绩
FROM 学生 INNER JOIN 选课 ON 学生.学号=选课.学号
INNER JOIN 课程 ON 选课.课程号=课程.课程号
WHERE 成绩<60
GO
6.3 视图的维护
6.3.1 查看视图的定义信息
1、查看视图的基本信息
在SQL Server Management Studio中,可以查询视图的基本信息。
也可以使用系统存储过程sp_help来显示视图的名称、拥有者能创建时间等信息。
6.3 视图的维护
6.3.1 查看视图的定义信息
2、查看视图的文本信息
sp_helptext可以查看视图、用户定义函数、存储过程、触发器等对象的定义信息。
sp_helptext的语法格式为:
sp_helptext [@objname=]'name'[,[@columnname=]computed_column_name]
表示要查看定义信息的对象名
表示计算列的列名
6.3 视图的维护
6.3.2 查看视图与其他对象的依赖关系
查看视图与其他数据库对象之间的依赖关系
可以使用系统存储过程sp_depends查看。
【例6-7】查看“课程_view”视图的依赖关系。
sp_depends 课程_view
6.3 视图的维护
6.3.3 修改和删除视图
修改和删除视图有两种方式:
1.使用图形工具修改和删除视图
2.使用T-SQL语句修改和删除视图
使用T-SQL语句修改视图的定义用ALTER VIEW语句,ALTER VIEW语句的语法与CREATE VIEW的语法类似.
删除一个视图后,虽然它所基于的表和数据不会受到任何影响,但是依赖于该视图的其他对象或查询将会在执行时出现错误。
6.4 通过视图操纵表数据
6.4.1 通过视图修改数据
通过视图修改数据,视图必须定义在一个表上并且不包括聚合函数或在SELECT语句中不包括GROUP BY子句。在修改视图时,需要注意通过视图修改数据的准则:
如果在视图定义中使用了 WITH CHECK OPTION 子句,则所有在视图上执行的数据修改语句都必须符合定义视图的 SELECT 语句中所设置的条件。
SQL Server 必须能够明确地解析对视图所引用基表中的特定行所做的修改操作。不能在一个语句中对多个基础表使用数据修改语句。
对于基础表中需更新而又不允许空值的所有列,它们的值在 INSERT 语句或 DEFAULT 定义中指定
在基础表的列中修改的数据必须符合对这些列的约束。
分布式分区视图(远程视图)不能使用键集驱动游标更新。
不能对视图中的 text、ntext 或 image 列使用 READTEXT 语句和 WRITETEXT 语句。
6.4 通过视图操纵表数据
6.4.2 使用INSERT插入数据
使用视图插入数据与在基表中插入数据一样,都可以通过INSERT语句来实现。插入数据的操作是针对视图中的列的插入操作,而不是针对基表中的所有的列的插入操作。
【例6-11】在数据库“学生选课”中,基于“学生”表创建一个名为“学生_view”的视图。该视图包含学号、姓名、性别等列信息。
USE 学生选课
GO
CREATE VIEW 学生_view
AS
SELECT 学号,姓名,性别
FROM 学生
GO
6.4 通过视图操纵表数据
6.4.3 使用UPDATE更新数据
在视图中更新数据与在基表中更新数据一样。但是当视图是来自多个基表中的数据时,与插入操作一样,每次更新操作只能更新一个基表中的数据。在视图中同样使用UPDATE语句进行更新操作,而且更新操作也受到与插入操作一样的限制条件。
【例6-12】将前面视图“学生_view”中姓名为“张三”学生的性别更新为“0”。
USE 学生选课
GO
UPDATE 学生_view
SET 性别=0
WHERE姓名='张三'
GO
6.4 通过视图操纵表数据
6.4.4 使用DELETE删除数据
通过视图删除数据与通过基表删除数据的方式一样,在视图中删除的数据同时在基表中也被删除。当一个视图连接了两个以上的基表时,对数据的删除操作则不允许的。
DELETE FROM 学生_view WHERE 姓名='张三'
【例6-13】删除视图“学生_view”中姓名为“张三”的信息。
6.5 索引
6.5.1 索引概述
索引是数据库规划和系统维护的一个关键部分。可以为SQL Server(以及其他的数据库系统)提供查找数据和定位数据物理位置的快捷方式。通过添加正确的索引可以大大减少查询执行时间。
通过使用索引,可以大大提高数据库的检索速度,改善数据库的性能,其具体表现如下:
(1)通过创建唯一性索引,可以保证数据记录的唯一性。
(2)可以大大加快数据的检索速度。
(3)可以加快表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。
(4)在使用ORDEY BY 和GROUP BY子句进行数据检索时,可以显著减少查询中分组和排序的时间。
(5)使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。
6.5 索引
6.5.2 索引的分类
  (1)聚集索引
  (2)非聚集索引
  (3)唯一性索引
创建索引应注意以下几个问题:
只有表的拥有者才能在表上创建索引。
每个表上只能创建一个聚集索引。
每个表上最多能创建249个非聚集索引。
一个索引的宽度最大不能超过900字节,在char等类型的列上创建索引时应考虑 这一限制。
数据类型为text、ntext、image或bit的列上不能创建索引。
一个索引中最多包含的列数为16。
6.5 索引
6.5.3 创建索引
SQL Server 2008中提供了三种创建索引的方法:
1.使用SQL Server Management Studio创建索引
6.5 索引
6.5.3 创建索引
2.使用表设计器创建索引
6.5 索引
6.5.3 创建索引
3.使用CREATE INDEX创建索引
【例6-16】对“教师”表的“联系方式”列创建名称为“教师_联系方式”的非聚集索引。对“学生”表的“学号”列和“姓名”列建立唯一的非聚集索引“IX_学号姓名”
USE 学生选课
GO
CREATE NONCLUSTERED INDEX 教师_联系方式
ON 教师(联系方式)
GO
CREATE UNIQUE NONCLUSTERED INDEX IX_学号姓名
ON 学生(学号,姓名)
GO
6.5 索引
6.5.4 查看索引
索引信息包括索引统计信息和索引碎片信息,通过查询这些信息分析索引性能,可以更好地维护索引。
索引统计信息是查询优化器用来分析和评估查询、确定最优查询计划的基础数据。
①使用DBCC SHOW_STATISTICS命令来查看指定索引
②使用SQL Server Management Studio 图形化工具查看统计信息
③系统存储过程查看索引信息
6.5 索引
6.5.5 修改索引
修改索引的方法有两种,使用方便的图形化工具和使用T-SQL语句,修改索引使用ALTER INDEX 语句,修改索引的操作主要包括:禁用索引、重新生成索引、重新组织索引。
ALTER INDEX 语句的基本语法形式如下所示:
1. 重新生成索引
ALTER INDEX index_name ON table_or_view_name REBUILD
2. 重新组织索引
ALTER INDEX index_name ON table_or_view_name RGORGANIZE
3. 禁用索引
ALTER INDEX index_name ON table_or_view_name DISABLE
6.5 索引
6.5.6 删除索引
T-SQL使用DROP INDEX语句删除索引。语法格式如下:
DROP INDEX

.
也可以使用如下语法格式:
DROP INDEX ON

在删除索引时,要注意下面的一些情况:
当执行DROP INDEX 语句时,SQL Server释放被该索引所占的磁盘空间。
不能使用DROP INDEX语句删除由主键约束或唯一性约束创建的索引。要想删除这些索引,必须通过删除这些约束。
当删除表时,该表全部索引也将被删除。
当删除一个聚集索引时,该表的全部非聚集索引重新自动创建。
不能在系统表上使用DROP INDEX 语句。
本章小结
介绍了视图与索引的知识。管理视图包括建立视图和删除视图。在SQL Server 的T-SQL 语句中,CREATE VIEW 命令用于建立视图,DROP VIEW 命令用于删除视图。
CREATE VIEW 命令中的查询可以有多种形式,从而可以建立多种不同类型的视图。对于用户而言,不同类型视图的区别在于系统对更新视图时的某些限制上,除此之外,别无差别。
索引是一种特殊类型的数据对象,它可以用来提高表中数据的访问速度,而且还能够强制实施某些数据的完整性。
SQL Server中的索引类型包括3种,即唯一性索引、非聚集索引和聚集索引。其中,唯一性索引要求所有数据行中任意两行的被索引列不能存在重复值;聚集索引可以提高使用该索引的查询能力,在聚集索引中行物理存储顺序与索引顺序完全相同,每个表只允许建立一个聚集索引;非聚集索引不改变行的物理存储顺序。一个表可以建立多个非聚集索引。

展开更多......

收起↑

资源预览