专题5.3+视图与索引1
《数据库原理及应用》教学课件 第五章视图与索引

22
5.1 视图
5.1.3 修改与更新视图
03 用SQL命令更新视图
由于视图是一张虚表,所以对视图的更新最终会变成对数据表的更 新,相关语法格式均与数据表的更新操作一致。
在完成以下例题前,读者可按前文步骤创建一个计算机系学生的视 图V_S,其中包括学号、姓名及性别。
【例5-5】 向视图 V_S 插入一条记录(12004,吴艮,女)。
INSERT INTO V_S(SNo,SN,Sex) VALUES ('12004','吴艮','女')
23
5.1 视图
5.1.3 修改与更新视图
【例5-6】 将视图V_S中的学生“吴艮”的性别改为“男”。
UPDATE V_S SET SEX='男' WHERE SN='吴艮'
【例5-7】 删除视图V_S中同学“吴艮”的记录。
27
5.1 视图
5.1.4 查询视图
可将上页例子转换为如下语句:
SELECT S.SNo,SN,AVG(Grade) AS AVGGrade FROM S,SC WHERE SN='冯明 GROUP BY S.SNo,SN
由此可以看出,当对数据表的查询比较复杂时,可以先建立一个视图,只对视图进行查询,从 而简化查询过程。
(4)SCHEMABINDING 表示视图与引用表的定义绑定,设置此选项后,引用表将不能随 意更改表结构,如列的数据类型等,如果必须更改,则需要先删除与之绑定的视图。
9
5.1 视图
5.1.2 创建与删除视图
(5) VIEW_METADATA 表示返回视图自身的元数据,设置此选项后,返回视图的每一列 的定义,而不是所引用数据表的列定义。
视图和索引操作课件讲义.pptx

6.2.1 课堂案例1——使用OEM管理视图
案例学习目标 掌握Oracle中应用OEM创建视图、修改视图、查看视图和删除视图的方 法和基本步骤 。
案例知识要点 视图的定义、OEM创建视图、OEM修改视图、OEM查看视图和OEM删 除视图 。
2020/9/27 Or acle 数 据库 管理 与 应用 实例 教 程
6.2.1 课堂案例1——使用OEM管理视图
案例完成步骤
1(.1使)用进O入EOME创M建后视,图依次选择“方案添题”加文、“标字视图”,进
入“视图” 页面
教
(2)单击“创建”按钮,进入“创建视图”页面
师
演
示
讲
解
添加标 题文字
6.2.1 课堂案例1——使用OEM管理视图
案例完成步骤
4.使用OEM删除视图
添加标
(1)在指定方案的“视图”页面中题,文选择字要编辑的视
图,单击“删除”按钮,进入“确认删除”页面
(2)单击“是”按钮,将删除指定的视图
教
师
演
示
讲
解
添加标 题文字
2020/9/27 Or acle 数 据库 管理 与 应用 实例 教 程
2020/9/27 Or acle 数 据库 管理 与 应用 实例 教 程
6.2.2 课堂案例2——使用PL/SQL管理视图
案例完成步骤
1(.【1使)例用创2-P建1】L简/S经单Q常L视创需图建要。视了图解“热点”添题商品加文的标字商品号
(g_ID)、商品名称(g_Name)、类别号(t_ID)、商
演
图,单击“编辑”按钮,进入“编辑视图”页面
数据库的索引与视图

B-Tree索引
▪ B+Tree:每一个叶子节点都包含指向下一个叶子节点的指针,从 而方便叶子节点的范围遍历。存放于索引页面中
▪ B-Tree通常意味着所有的值都是按顺序存储的,并且每一个叶子 页到根的距离相同,很适合查找范围数据。
采用一定的哈希算法,把键值换算成新的哈希值, 检索时不需要类似B+树那样从根节点到叶子节点逐级查找,只需 一次哈希算法即可立刻定位到相应的位置,速度非常快
▪ 什么时候要用到视图
如果某个查询结果出现的非常频繁,也就是,要经常拿这个查询结果 来做子查询
视图
视图的作用
▪ 简化查询语句 ▪ 可以进行权限控制 ▪ 大数据分表时可以用到
视图
Tree索引高
存储 类型
索引失效
▪ Where子句的查询条件中有!= ▪ Where子句使用了mysql函数时,索引无效 ▪ 在使用like进行匹配查询,有左通配符%时,索引无效 ▪ 使用or语句来连接条件 ▪ 当索引列有大量重复时,sql查询可能不会去利用索引
存储 类型
视图
▪ 什么是视图
视图是由查询结果形成的一张虚拟表。
索引
为了使索引的使用效率更高,在创建索引的时候必须 考虑在哪些字段上创建索引和创建什么类型的索引
▪ 最适合建立索引的列,是出现在where子句中的列,而非select 关键字后面的列
▪ 考虑某列中值的分布。索引的列的基数越大,索引的效果越好 ▪ 使用短索引 ▪ 不要过度索引 ▪ 最左前缀匹配原则
设计 原则
存储 类型
B+树索引和哈希索引的明显区别
▪ Hash 索引仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询 ▪ Hash 索引无法被用来避免数据的排序操作 ▪ Hash 索引不能利用部分索引键查询 ▪ Hash 索引在任何时候都不能避免表扫描 ▪ Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-
索引与视图简介

1.索引索引是一个单独的,物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标志这些值的数据页的逻辑指针清单.索引是依赖于表建立的,它提供了数据库中编排表中数据的内部方法.一个表的存储是由两部分组成的,一部分是用来存放表的数据页面,另一部分存放索引页面.索引就存放在索引页面上.从某种程度上,可以把数据库看作一本书,把索引看作书的目录,通过目录查找书中的信息,显然较没有目录的书方便,快捷.按照上面的解释看书的目录这个比喻:>>它实际存,占据了书的内容,纸张>>它指向实际存在的内容。
比如要找第一章,那么目录后面的页码便为我们提供了一个快捷的方法。
当然对数据库来说,这些都是透明的我们不能看到的。
但的确提高了数据库返回给我们查询结果的效率。
另外,我们要将它与查询常用到的order by区分开。
前几天公司里新员工培训曾遇到有的同学j混淆了。
所谓order by只不过是将返回的结果按要求排好顺序,方便我们的使用。
它对所在的查询语句返回给我们结果是效率或其它方面(除去我们对结果的应用)是没有任何用处的。
另外有一种唯一索引,也就是主键(简单理解就是一个表中,如果在某列上建立了唯一索引,则该列不可以有两个一样的记录出现).但唯一索引有时会使我们插入/修改数据效率降低---或说就是降低了。
只是数据量小时不明显。
因为每次插入/修改都会检查完所有记录,看是否有该值存在。
>>>>就像要求每个身份证号只能一人使用,那么分配一个身份证号时就要检查一下是否已经有人在用这个身份证号(当然我们现实中可能已经排好了,我们用到哪个,下一个会用哪个)2.视图首先看一下一些标准的说法视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式。
可以将视图看成是一个移动的窗口,通过它可以看到感兴趣的数据。
视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。
那些用于产生视图的表叫做该视图的基表。
数据库之 索引和视图

1、索引的概念 2、索引的创建与管理 3、视图的概念 4、视图的创建与管理
1、索引的概念
索引是为了加速对表中数据行的检索而创建的一种分散的 存储结构,索引是针对一个表而建立的。 数据库中的索引是一个列表,在这个列表中包含了某个表 中一列或者若干列值的集合,以及这些值的记录在表中存 储位置的物理地址。
CREATE VIEW <视图名>[ ( <字段名1> , <字段名2>[ , … n ] ) ] AS <查询语句> [ WITH CHECK OPTION ]
参数说明:
字段名:视图中包含的列,可以有多个列名;若使用与源表或视图中相 同的列名时,则不必给出列名。 查询语句:用来创建视图的SELECT语句。可在SELECT语句中查询多 个表或视图,以表明新创建的视图所参照的表或视图,但对SELECT语 句有以下的限制:
(1)创建聚簇索引
(2)创建非聚簇索引
(3)创建惟一索引
(4)创建复合索引
2.4 使用企业管理器删除索引
3、视图的概念
视图可以看作是从一个或多个表(或视图)导出的表。 视图与表(有时为了与视图区别,也称表为基本表)不同, 视图是一个虚表,即视图所对应的数据不进行实际存储。数 据库中只存储视图的定义,对视图的数据进行操作时,系统 根据视图的定义去操作与视图相关联的基本表。 视图一经定义后,就可以像表一样被查询、修改、删除和更 新。
(2)使用视图的注意事项
只有在当前数据库中才能创建视图。 视图的命名必须遵循标识符命名规则,不能与表同名;而 且某一数据库中的视图名是惟一的,即使是以不同的用户 名义创建的。 不能把规则、默认值或触发器与视图相关联。 不能在视图上建立任何索引,包括全文索引。
索引和视图

本章目标
掌握视图的优点 掌握视图的创建和使用 掌握索引的有点 掌握索引的创建
1
视图的概念及优点
概念:
视图是从不同的视角查看数据库中一个或多个表中数据的方法。视图是 一种虚拟表,它的数据并不真正存储,仅保存视图定义
优点:
对最终用户的好处 • 结果更容易理解。 对开发人员的好处 • 简化查询 • 限制数据检索提高安全性
2
创建视图
创建视图的方法有两种:使用SSMS和T-SQL语句
使用SSMS创建视图
使用T-SQL语句创建视图
语法: CREATE AS VIEW view_name
<select 语句>
示例:创建视图,显示人民邮电出版社出版的价格大于20元的书籍信息
3
示例代码
CREATE VIEW v_BookInfo AS SELECT BookID, BookName, Author, ISBN, PublishDate, Price, [Content], CategoryName, PublisherName FROM BookInfo a INNER JOIN Category b ON a.CategoryID = b.CategoryID INNER JOIN Publisher c ON a.PublisherID = c.PublisherID WHERE (c.PublisherName = '人民邮电出版社') AND (Price > 20) 4
பைடு நூலகம்
使用视图
CREATE VIEW v_SalesInfo AS SELECT erName 用户,a.SalesDate 销售日期, c.BookName 书名 ,b.Quantity 数量, b.Price 价格, b.Discount 折扣, b.Price*b.Discount 销售价格 FROM SalesMaster a inner join SalesDetails b ON a.SalesMasterID=b.SalesMasterID inner join BookInfo c ON b.BookID=c.BookID inner join UserInfo d ON erID=erID --使用视图查询2012年1月1日 李玲的详细销售信息 SELECT * FROM v_SalesInfo WHERE 销售日期='2012-1-1' AND 用户='李玲'
视图与索引

视图与索引1.视图视图(View)作为一种数据库对象,为用户提供了一个可以检索数据表中的数据方式。
用户通过视图来浏览数据表中感兴趣的部分或全部数据,而数据的物理存储位置仍然在表中。
视图是一个虚拟表,并不代表任何物理数据,只是用来查看数据的窗口而已。
视图并不是以一组数据的形式存储在数据库中,数据库中只存储视图的定义,而不存储视图对应的数据,这些数据仍存储在导出视图的基本表中。
当基本表中的数据发生变化时,从视图中查询出来的数据也随之改变。
视图中的数据行和列都是来自于基本表,是在视图被引用时动态生成的。
使用视图可以集中、简化和制定用户的数据库显示,用户可以通过视图来访问数据,而不必直接去访问该视图的基本表。
视图由视图名和视图定义两个部分组成。
视图是从一个或多个表导出来的表,它实际上是一个查询结果,视图的名字和视图对应的查询存储在数据字典中。
视图的优点1.数据安全性。
对不同的用户定义不同的视图,使用户只能看到与自己有关的数据。
数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。
通过视图,用户可以被限制在数据的不同子集上。
2.查询简单化。
为复杂的查询建立一个视图,用户不必输入复杂的查询语句,只需针对此视图做简单的查询即可。
那些被经常使用的查询可以被定义为视图,从而使用户不必为以后的操作每次都指定全部的条件。
3.逻辑数据独立性。
视图可以使应用程序和数据库表在一定程度上独立。
如果没有视图,应用一定是建立在表上的。
有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。
对于视图的操作,例如,查询只依赖于视图的定义,当构成视图的基本表需要修改时,只需要修改视图定义中的子查询部分,而基于视图的查询不用改变。
视图的缺点1.性能。
SQL Server必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,SQL Server也把它变成一个复杂的结合体,需要花费一定的时间。
索引与视图1

先用企业管理器创建,然后在用查询分析器创建
有很多时候,使用两列或多列比单独的列更适合作为搜索键,比如客户的姓+名。这个时候我们需要创建组合索引。我们来看一下实际应该如何做。
演示:创建组合索引
CREATE NONCLUSTERED INDEX IX_ID
讨论:聚集索引和非聚集索引的特点分别是什么?
2.创建索引
2.1在建表时创建索引
2.2在已存在的表上创建索引
2.3使用向导创建索引
(索引的创建非常简单,我只要简单的提示一下,基本上学生都会会的,我提示之后为了让课堂气氛活跃,我会将每组让学生抽号的方式决定让哪组演示,因为做对了要给组加分,所以学生积极性应该比较高。当学生完成以后,我自己再将每类索引在
4、索引的类型
索引是个新的概念,为了讲清什么是索引,我会通过学生手上的书本以及我们小时候不离手的新华字典作为课题的引入。为了提高学生的兴趣。我会提几个问题让学生讨论:
1、我们拿到一本书要看书上某一部分的内容,大家首先会怎么做,然后再怎么做?
2、如果没有这个书的目录,我们查找书上的内容又会怎么办?通过学生的讨论从而得出索引的概念以及索引的作用。
通过演示和举例在创建索引
CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED]
INDEX index_name
ON table_name (column_name…)
[WITH FILLFACTOR=x]
CREATE NONCLUSTERED INDEX IX_writtenExam
四、归纳总结
经过本章的学习,我们了解了下列的知识和内容。
创建索引和带有唯一键或组合键的索引视图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
02 索引的分类
聚集索引 数据表物理顺序与索引顺序一致 一个表中只能创建一个聚集索引
非聚集索引 非聚集索引完全独立于数据行的结构。 可以有多个,最多创建249个。
注意:
一般而言,创建非聚集索引前需先创建聚集索引
02 索引的分类
聚集索引和非聚集索引的区别
索引类型 存取速度 索引的数量
在T-SQL中指定索引查询
例6:在StSex列上建立了ixsex索引(降序), 使用以下方式指定按某个索引查询。 SELECT stname,StSex,ClName FROM StInfo WITH (INDEX(ixsex))
05 专题小结
视图 视图是一个虚拟表,并不包含任何的物理数据,即视图所对应的数
5.3
索引的创建与管理
索引的概念 索引的分类 索引的创建 索引的管理
01 索引的概念
索引
是对数据库表中一个或多个字段的值进行排序而创建的一种 分散存储结构。
是对数据表中一个或多个字段的值与表中的行之间的对照表
院系代码
“院系”表
社会科学院 建筑设计院 经济管理院 传播技术院 基础科学院 临床医学院 计算机学院 机电工程院
例如,查询Sales数据库employee表中编号为 “E002”的员工的信息,执行如下SQL语句:
SELECT * FROM employee WHERE 员工编号='E002’
员工编号列无索引,顺序查找; 员工编号列有索引,按索引指定位置查找。
02 索引的分类
按组织方式分 聚集索引 非聚集索引
使用对象资源管理器创建索引
例1 在stinfo表上为学号建立唯一索引istid
03 索引的创建
使用表设计器创建索引
例2在cinfo表上为课程名称建立唯一索引
03 索引的创建
使用命令方式创建索引
使用CREATE INDEX语句可以为表创建索引。 语句格式: CREATE [UNIQUE] [ CLUSTERED | NONCLUSTERED ] INDEX 索引名 ON 表或视图 ( 列 [ASC | DESC ] ) [ ,… ]
李中兴 周建良 王克勤 陈磊 张艳 刘伟业 肖大成 赵立东
01 索引的概念 SQL Sever中数据的访问方法: 表扫描法 当访问未建索引的表内数据时,从表的起始处逐行查找,直到符合条 件为止。
使用索引 当使用索引访问建有索引的表内数据时,系统会通过索引来查找行的 存储位置,效率非常高。
01 索引的概念
据库系统会自动为指定的列创建唯一索引。
03 索引的创建
系统自动创建索引
在创建UNIQUE约束或PRIMARY KEY约束时,系统自动为这些列创建 索引,此表如果没有聚集索引的话,默认建立的是聚集索引。
用户创建索引
使用对象资源管理器创建索引 使用表设计器创建索引 使用命令方式创建索引
03 索引的创建
例4 删除stinfo表的索引istid
04 索引的管理
命令方式删除索引
语句格式:
DROP INDEX 表名.索引名
例5 删除stinfo表的ixstsex索引
DROP INDEX StInfo.ixstsex
索引的应用
自动应用索引查询 已在stname列上建立索引ixstname
SELECT stname FROM StInfo
要对索引进行更新
04 索引的管理
索引的查看
在对象资源管理器或表设计器可以直观地查看索引信息
索引的重建
对stinfo表的索引重建
索引的修改
可通过“对象资源管理器”实现
注意:
不能通过此方法修改作为PRIMARY KEY或UNIQUE约束 而创建的索引,必须修改约束。
04 索引的管理
索引的删除
索引会减慢插入、更新和删除语句的执行速度。如果发现索引阻碍整体 性能或不再需要索引,则可将其删除。
注意:ntext、text、image不能创建索引。
03 索引的创建立唯一索引ixname
CREATE UNIQUE INDEX ixname ON TInfo( TName)
索引的特点
优点: 加快数据访问速度 保证数据记录的唯一性
缺点: 带索引的表在数据库中需要更多的存储空间 操纵数据的命令需要更长的处理时间,因为它们需
据不进行实际存储,数据库中只存放视图的定义,这些数据仍存放 在定义视图的基本表中。
索引 是对数据库表中一个或多个字段的值进行排序而创建的一种分散存
储结构。即通过指针来建立元素间的联系和存取路径 根据索引的存储结构不同,将其分为聚集索引和非聚集索引两类。
聚集索引
快
一表一个
所需空间 少
非聚集索引
慢
一表可以多个 多
02 索引的分类
唯一索引 建立索引的字段值不能重复,也就是在表中不允许两
行具有相同的值。
非唯一索引 表中多行可以共享同一键值。
注意: 聚集索引和非聚集索引都可以是唯一的。 创建主键(PRIMARY KEY)或唯一性(UNIQUE)约束时,数