数据库系统概论|第三章:关系数据库标准语言SQL—课程笔记7
前言
在前面文章的介绍中,已经介绍了数据定义、数据更新、数据查询,关于SQL语句的标准语言已经基本上介绍完毕,本文接下来将介绍另外两种便于操作的操作模式——视图与索引。其大致的语句代码与前文其实并无大的区别,在了解基本语句之外,还应该了解视图与索引所发挥的作用,这也十分重要。
本文结束之后,关于SQL的基本语言已经全部介绍完毕,大家可以进行简单的系统整理哦
注:本文中所涉及的数据库前文中已经介绍(指路:数据库系统概论|第三章:关系数据库标准语言SQL—课程笔记1)
一、视图的特点
- 视图是虚表,是从一个或几个基本表(或视图)导出的表。
- 视图只存放视图的定义,不存放视图对应的数据。
- 基表中的数据发生变化,从视图中查询出的数据也随之改变。
【视图更像是一个数据窗口,仅仅去了解我们需要了解的数据而已】
二、视图的基本操作
1.建立视图
建立视图需要运用CREATE VIEW语句,同时后面加视图的名字,AS后面增加子查询的相关操作与语句
CREATE VIEW V_Student
AS
SELECT Student.*, Cno, Grade
FROM Student, SC
WHERE Student.Sno = SC.Sno
上述代码建立了一个学生成绩视图,该视图的名字叫作V_Student,AS后面增加子查询,子查询中使用了多表连接,将Student表与SC表通过Sno进行了连接。
CREATE VIEW V_AVG_Grade
AS
SELECT Sno, CONVERT(Decimal(5,2),AVG(CONVERT(Decimal(5,2),Grade))) AS AVG_Grade
FROM SC
GROUP BY Sno
上述代码建立了一个学生平均成绩视图,该视图的名字叫作V_AVG_Grade,AS后面增加子查询,子查询中较为复杂,利用聚集函数AVG求出了平均成绩,并利用GROUP BY语句将每个学生进行分组,以方便求取每个学生的平均成绩,同时运用了CONVERT函数转换数据类型,将平均成绩保留位两位小数。
【注:组成视图的属性列名必须全部省略或者全部点明,这便是AS AVG_Grade出现的意义】
2.删除视图
删除视图的语句较为简单,直接使用DROP语句即可
DROP VIEW V_AVG_Grade
上述代码即为删除视图V_AVG_Grade
3.查询视图
查询视图的语句与查询表的语句基本上一样,同样使用SELECT与WHERE语句
SELECT Grade
FROM V_Student
WHERE Sname ='李勇' AND Cname = '数据库'
上述代码即为查找视图V_Student中利用同学的数据库课程的成绩
三、视图的作用
1. 视图能够简化用户的操作,
2. 视图使用户能以多种角度看待同一数据,
3. 视图对重构数据库提供了一定程度的逻辑独立性,
4. 视图能够对机密数据提供安全保护,
5. 适当的利用视图可以更清晰的表达查询。
四、索引概述
建立索引的目的其实很简单,就是为了加快查询速度,索引能够快速定位到需要查询的内容。
索引的作用
- 使用索引可以明显地加快数据查询的速度
- 使用索引可以保证数据的惟一性
- 使用索引可以加快连接速度
五、索引的基本操作
1.建立索引
建立索引的基本语句还是CREATE语句,但是在建立索引的过程中,可以分别建立UNIQUE唯一索引(表示此索引的每一个索引值只对应唯一的数据记录),CLUSTER聚簇索引(一个基本表中最多只能建立一个聚簇索引)
CREATE UNIQUE INDEX Stusno ON Student(Sno)CREATE UNIQUE INDEX Coucno ON Course(Cno)CREATE UNIQUE INDEX SCno ON SC(Sno ASC, Cno DESC)
上述三行代码分别建立了三个表的索引:
CREATE UNIQUE INDEX代表着建立唯一索引,后面接索引的名字(如Stusno),ON后面连接表名以及括号内的属性列名
- Student表按学号升序建立唯一索引
- Course表按课程号升序建立唯一索引
- SC表按学号升序和课程号降序建立唯一索引
2.删除索引
删除索引的基本语句还是利用DROP语句
DROP INDEX Student.Stusno
上述代码代表删除Student表中的Stusno索引【注意:编写时一定要注明索引所在的表名】