项目四 索引和视图(课件)-《MySQL数据库》同步教学(电子工业版)
2024-06-27
|
24页
|
110人阅读
|
1人下载
普通
内容正文:
项目四 索引和视图
任务1 索引
任务2 视图
任务1 索引
任务引入
小白在创建大型数据库时发现信息比较混乱,要是能像书的目录一样通过搜索索引找到特定的值就好了。那么,怎么在数据库中创建索引?怎么查看和删除索引?数据库中的索引分成哪几类呢?
知识准备
一、索引简介
可以利用索引快速访问数据库表中的特定信息。索引是对数据库表中一个或多个列的值进行排序的结构。
索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排序次序排列这些指针。数据库使用索引的方式与使用书的目录很相似:通过搜索索引找到特定的值,然后跟随指针到达包含该值的行。
在数据库关系图中,可以为选定的表创建、编辑或删除索引/键属性页中的每个索引类型。当保存附加在此索引上的表或包含此表的数据库关系图时,索引同时被保存。
二、索引类型
可以依据索引的顺序和数据库的物理存储顺序是否相同而将索引分为两类:聚集索引(Clustered Index)和非聚集索引(Non-clustered Index)。而这都使用的是B-树索引。
惟一索引(Unique Index)可以确保索引列不包含重复的值。组合索引是使用表中的不止一列对数据进行索引的索引。
1.B-树索引结构
2. 聚集索引和非聚集索引
(1)聚集索引
B-树的数据结构
聚集索引的数据结构
在创建聚集索引之前,应该先了解数据是如何被访问的。可考虑将聚集索引用于下面几种情况。
包含大量非重复值的列。
使用下列运算符返回一个范围值的查询:BETWEEN、>、>=、<和<=。
被连续访问的列。
返回大型结果集的查询。
(2)非聚集索引
3.惟一索引和组合索引
三、查看索引
在 MySQL 中,可以使用 SHOW INDEX 语句查看表中创建的索引。
案例——查看book_sort表中的索引文件。
运行结果如图所示。
四、创建索引
CREATE INDEX 语句用于在表中创建索引。在表中创建索引,以便更加快速高效地查询数据。
案例——建立普通索引
在reader表的reader_sex字段上建立普通索引。
运行结果如图所示。
案例——建立唯一索引。
在book表的book_name字段上建立唯一索引。
运行结果如图所示。
五、删除索引
删除索引是指将表中已经存在的索引删除掉。不用的索引建议进行删除,因为它们会降低表的更新速度,影响数据库的性能。
可以使用 DROP INDEX 语句或 ALTER TABLE 语句来对索引进行删除。这里主要介绍使用DROP INDEX语句删除索引。
案例——删除reader表中的索引。
运行结果如图所示。
任务2 视图
任务引入
小白想将数据库中的几个表导出为视图,然后通过视图查询数据和修改数据。那么,怎么在数据库中创建视图?怎么在视图中进行数据查询?怎么通过视图修改数据?怎么修改和删除视图呢?
知识准备
一、视图概述
视图是一个虚拟表,是从数据库中一个或多个表中导出来的表,其内容由查询定义。同真实表一样,视图包含一系列带有名称的列和行数据。但是,数据库中只存放了视图的定义,而并没有存放视图中的数据。这些数据存放在原来的表中。使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。因此,视图中的数据是依赖于原来的表中的数据的。一旦表中的数据发生改变,显示在视图中的数据也会发生改变。
对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。视图的作用归纳为如下几点。
1.简单性
看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。
2.安全性
(1)在表中增加一个标志用户名的列。
(2)建立视图,使用户只能看到标有自己用户名的行。
(3)把视图授权给其他用户。
3.独立性
(1)如果应用建立在数据库表上,当数据库表发生变化时,可以在表上建立视图,通过视图屏蔽表的变化,从而使应用程序可以不动。
(2)如果应用建立在数据库表上,当应用发生变化时,可以在表上建立视图,通过视图屏蔽应用的变化,从而使数据库表不动。
(3)如果应用建立在视图上,当数据库表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而使应用程序可以不动。
(4)如果应用建立在视图上,当应用发生变化时,可以在表上修改视图,通过视图屏蔽应用的变化,从而使数据库可以不动。
二、视图的创建
CREATE VIEW语句创建一个新视图,或者替换现有视图。
1.创建基于单表的视图
默认情况下,创建的视图和基本表的字段是一样的,也可以通过指定视图字段的名称来创建视图。也可以通过指定字段来创建视图。
案例——创建v_book_sort视图。
基于book_sort表创建名为v_book_sort的视图。
(1)创建视图。
(2)查询视图。
案例——创建vn_reader视图。
基于reader表创建女性读者视图,名为vn_reader的视图。
(1)创建视图。
(2)查询视图。
创建视图 查询视图
创建视图 查询视图
案例——创建v_fee视图。
基于fee表创建读者借书视图,名为v_fee的视图。
(1)创建视图。
(2)查询视图。
2.创建基于多表的视图
在MySQL中不仅可以基于单表创建视图,还可以跨表创建视图。
案例——创建v_borrow视图。
创建名为v_borrow的视图,显示读者的读者的借书时间。
(1)创建视图。
(2)查询视图。
创建视图 查询视图
创建视图 查询视图
创建视图时需要注意以下几点:
(1)运行创建视图的语句需要用户具有创建视图(create view)的权限,若加了[or replace]时,还需要用户具有删除视图(drop view)的权限;
(2)select语句不能包含from子句中的子查询;
(3)select语句不能引用系统或用户变量;
(4)select语句不能引用预处理语句参数;
(5)在存储子程序内,定义不能引用子程序参数或局部变量;
(6)在定义中引用的表或视图必须存在。但是,创建了视图后,能够舍弃定义引用的表或视图。要想检查视图定义是否存在这类问题,可使用check table语句;
(7)在定义中不能引用temporary表,不能创建temporary视图;
(8)在视图定义中命名的表必须已存在;
(9)不能将触发程序与视图关联在一起;
(10)在视图定义中允许使用order by,但是,如果从特定视图进行了选择,而该视图使用了具有自己order by的语句,它将被忽略。
三、视图的查看
1.查看数据库所有视图名
案例——查看library
数据库中的表和视图。
案例——查看library数据库中的视图。
2.查看视图结构信息
DESCRIBE 可以用来查看视图
案例——查看v_borrow的视图信息。
3.查看视图状态信息
案例——查看vn_reader的视图状态信息。
4.查看视图定义
案例——查看v_fee的视图详细定义。
四、视图数据的查询与更新
1.查询视图数据
视图一经定义之后,就可以如同查询数据表一样,使用 SELECT 语句查询视图中的数据,语法和查询基础表的数据一样。
案例——查询视图信息
查询vn_reader视图中女性成人读者信息。
2.添加数据
案例——在v_book_sort视图中添加数据。
(1)添加数据。
(2)查询视图。
3.修改数据
案例——在v_book_sort视图中修改数据。
(1)修改数据。
(2)查询视图。
4.删除数据
在视图中添加数据 查询视图
在视图中添加数据 查询视图
案例——在v_book_sort视图中删除数据。
(1)修改数据。
(2)查询视图。
五、修改和删除视图
1.修改视图
修改视图是指修改数据库中已存在的表的定义。当基本表的某些字段发生改变时,可以通过修改视图来保持视图和基本表之间一致。
可以使用 ALTER VIEW 语句来对已有的视图进行修改。
在视图中添加数据 查询视图
案例——修改视图
修改读者视图,查看读者姓名、类型以及登记日期。
(1)创建视图。
(2)查询视图。
2.删除视图
删除视图是指删除数据库中已存在的视图。
案例——删除读者视图。
修改视图 查询视图
删除视图
项目总结
习题
1. 什么是索引?索引分为哪两种?各有什么特点?
2. 如何创建唯一索引?
3. 什么是视图?使用视图的优点和缺点是什么?
4. 将创建视图的基表从数据库中删除掉,视图也会一并删除吗?
5. 修改视图中的数据会受到哪些限制?
项目实战
实战一 创建索引并查看
(1)在worker表的wname字段上建立索引。
(2)查看worker表中的索引文件。
(3)删除worker表中的索引。
建立索引 查看worker表中的索引文件 删除索引
实战二 创建视图并在视图中查询数据
(1)创建男性职工视图。
(2)查询男性职工视图。
(3)查询市场部的男性职工信息。
(4)删除男性职工视图。
$$
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。