最新华南师范大学数据库系统复习.docx
《最新华南师范大学数据库系统复习.docx》由会员分享,可在线阅读,更多相关《最新华南师范大学数据库系统复习.docx(18页珍藏版)》请在冰豆网上搜索。
![最新华南师范大学数据库系统复习.docx](https://file1.bdocx.com/fileroot1/2022-10/15/96497bb2-c872-4c39-a6a6-2e6504fbcd08/96497bb2-c872-4c39-a6a6-2e6504fbcd081.gif)
最新华南师范大学数据库系统复习
考试范围:
1、第一到第七章。
包括教材、课件、实验(基本内容,只要做过实验就没问题)
2、“熟记”部分,一定要熟记
3、“查询习题讲解”课件中的题型及方法(跟第二次实验讲评一起的方法PPT)
4、掌握蓝色部分的应用题型和解题方法(对应章节的课件中有)
第一章数据库系统概述
1.四个概念:
什么是数据?
什么是数据库?
什么是数据库管理系统(DBMS)?
什么是数据库系统(DBS)?
答:
数据:
以描述事物属性的符号;数据库:
一个相互联系的数据的集合;数据库管理系统DBMS:
存取和管理这些数据的一套程序;数据库系统DBS:
由数据库、数据库管理系统、计算机系统组成。
2.熟记数据库系统的组成。
数据库、硬件、软件(DBMS,OS,数据库应用程序,应用程序开发工具),人员(数据库管理员,应用程序员,最终用户)
DBS=数据库+数据库管理系统+计算机系统
3.理解数据库管理员DBA是对数据库进行集中控制和管理的最重要人员。
4.实例和模式的对比(内容/状态vs结构,变化vs稳定)
模式:
数据库中表的结构(属性),相对稳定。
实例:
数据库中表的具体内容(元组),时时变化。
5.三级模式:
物理模式(又称内模式),逻辑模式(又称模式),和子模式(又称外模式)的含义是什么?
一个数据库有几个物理模式,逻辑模式和子模式?
三级模式间的两极映射,以及是由谁(DMBS)完成这种映射功能的?
两级映射的作用(好处)是带来以下两种数据独立性。
物理模式:
整体数据库的物理结构,描述全体数据在硬盘等介质上如何存储。
一个数据库只有一个内模式。
逻辑模式:
整体数据库的逻辑结构,描述所有数据的结构和数据间联系,屏蔽了向下的物理模式,即与数据的物理存储细节和硬件环境无关。
一个数据库只有一个模式。
子模式:
一部分数据库的逻辑结构(特定用户能看到的部分),一部分数据库的逻辑结构(特定用户能看到的部分)。
外模式=用户视图=(逻辑)模式的子集
两级映射:
内模式/模式映像,外模式/模式映像
6.两种数据独立性:
什么是逻辑数据独立性?
什么是物理数据独立性?
用户或者应用程序面向的到底是哪一级数据库模式?
物理数据独立性:
当数据库的物理存储结构改变时(如存储位置改变),应用程序不必变化。
内模式/模式映射保证了物理数据独立性。
逻辑数据独立性:
当数据库的整体逻辑结构改变时(如字段的增减,字段名修改),应用程序不一定要改变。
外模式/模式映射保证了逻辑数据独立性。
用户/应用程序面向的是:
外模式
7.熟记数据模型的定义,组成部分(三要素):
数据结构,数据操作,数据完整性约束
数据模型是用于描述数据、数据联系、数据语义和数据约束的一套工具与方法。
8.概念数据模型用于数据库设计,是对客观世界的第一层抽象。
常见例子是E-R模型。
9.例举各种用于数据库的数据模型:
层次、网状、关系、对象、半结构化等。
第二章关系模型与关系运算
1.数据模型的三要素?
关系模型的三要素?
数据模型三要素:
数据结构、数据操作、数据完整性约束
关系模型三要素:
关系、关系操作、关系完整性约束
2.关系的组成:
什么是属性?
什么是元组?
什么是分量?
属性:
关系的一列
元组:
关系的一行
分量:
行和列的交叉(某个元组的某个属性值)
3.理解关系有哪些基本性质?
列的同质性:
同一列中的分量(值)必须具有相同的类型,因为它们来自同一个域。
异列同域性:
不同列可以来自同一个域,但属性名不能相同
元组相异性:
关系里的任意两行不能相同,因为关系是一个元组集合
行列无序性:
关系的行或列是顺序无关的。
属性值原子性:
每一个属性值(分量)都必须是原子的(不可分),不允许出现组合数据,更不允许“表中有表”。
4.关系有哪四种键?
数量(是否有多个)?
什么是外部键?
外部键的属性名可以和所对应的主键不同。
外部键可以指向同一个关系的主键。
例如:
学生(学号,姓名,班长学号...)。
外部键从E-R图的什么概念转化而来?
超键:
关系中能够唯一标识每个元组的属性或者属性组,数量可能有多个。
候选键:
把超键中多余的属性去掉后,剩余的就是候选键,数量可能有多个。
主键:
从候选键选出一个作为主键,数量只能一个。
外部键:
关系R1中的单个属性或属性集合,对应关系R2的主键,可能有多个。
5.关系模式和关系实例的对比。
关系模式比较稳定。
而关系实例随时间而变化,原因是元组不断被插入/删除/更新
6.查询语言分类:
过程化和非过程化语言的区分和理解——看课件。
过程化:
用户要指定①what:
查询什么②how:
怎么查询,用什么方法、过程?
非过程化:
用户只要指定查询什么,而“怎么查询”的问题留给系统处理——系统会自动寻找(近似)最优的查询方法/查询执行计划,即查询优化。
关系代数是过程化的,SQL和关系演算是非过程化的
7.关系操作分为查询和更新操作。
表示关系操作的语言:
关系代数,关系演算(又分为元组关系演算和域关系演算)。
关系代数是过程化的,关系演算是非过程化的。
8.掌握关系代数的各种运算(包括符号)。
其中最基本的运算(不可替代)是哪些?
基本运算:
选择σ,投影∏,笛卡儿积X,集合并⋃,集合差-,更名ρ
附加运算:
集合交⋂,自然连接(同名属性相等,去掉重复同名属性),除÷(“…所有…”的查询,一般用除运算表示),赋值←
扩展运算:
广义投影∏(下标可有计算表达式),外连接,聚集运算
聚集函数:
avg,sum,count,max,min(-distinct)
聚集运算:
G1,G2,...,GnGF1(A1),F2(A2),…,Fm(Am)(E)
一元运算:
输入为一个关系
二元关系:
输入为两个关系
9.查询优化的三种技术:
物理优化,规则优化,代价估算优化。
规则优化的三种启发式规则:
选择优先,投影优先,笛卡尔积合并。
物理优化:
利用某些存储数据结构,如索引、聚簇、排序文件等进行优化
规则优化:
只考虑查询语句本身,根据某些启发式规则进行优化,例如“先选择、先投影和后连接”
代价估算优化:
对多个候选查询计划,逐个进行代价估算(需要访问一些数据字典信息,如表的大小),从而选取代价最小的
10.应用题型:
用关系代数表达查询问题(查询习题课件)
第三章关系数据库语言SQL
1.SQL的全名(中英文)。
SQL是非过程化的语言。
理解SQL的特点(基本功能特征)。
SQL的全名:
结构化查询语言StructuredQueryLanguage
特点:
综合统一性(功能的统一、操作过程的统一)、高度非过程化、面向集合的操作方式
2.熟记SQL的四种功能。
这些功能分别由哪些语句(动词)实现?
DDL(数据定义):
create,alter,drop
DML(数据操纵):
select(数据查询)insert、update、delete(数据修改)
DCL(数据控制):
grant,revoke
3.SQL对数据库三级模式的规定:
每级模式由什么组成?
物理模式:
描述所有数据是如何在硬盘等介质上存储的,存储文件。
(逻辑)模式:
描述所有数据的结构及所有数据间的联系,基表。
子模式:
描述某个特定用户能看到的那一部分数据的结构及它们之间的联系,视图。
4.理解SQL中的系统数据类型,char/varchar/numeric等。
char(n):
长度固定为n的字符串
varchar(n):
可变长度的字符串,最大长度为n
numeric(p,q):
总共不多于p位,小数点右边不多于q位的定点数
5.掌握SQL的各个数据定义语句(特别是新建表,建视图,修改表,删除表的语句)。
1)createtableStudent
(Snochar(8)notnull,
SNamevarchar(8)notnull,
Sexchar
(1)default‘M’,
Primarykey(Sno,SName),
//Foreignkey(Sno)referencesS(Sno)
Check(Sex=’M’orSex=’F’)
)
2)altertableStudentaddAgeintnotnull
3)altertableStudentmodifyAgesmallint
4)droptableStudent
5)createindexindex_on_ageStudent(Age)
6)createviewBook_Not_Borrow(Book_Num,Book_Writer)as
(selectBook.Name,Writer.Name
fromeBook,Writer,Borrow
where……
)
6.掌握SQL的Select数据查询语句。
1)计算次序:
From(笛卡儿积)→Where(选择)→Groupby→Having→Select(投影)→Orderby
2)select姓名 asname,0.05*工资astax
selectdistinct部门
select选修.姓名from选修,选修as王
3)where中可以出现:
<、<=、>、>=、=、<>、and、or、not、between下and上、in(集合)、notin(集合)、like(匹配串)
4)GroupBy属性1,属性2,…:
作用:
Where子句筛选元组后,对它们分组,分组依据:
属性1,属性2。
用法:
出现统计词,比如“平均,最高,总和,…”的问题
Select子句的作用发生变化:
对分组进行统计,Select中出现的属性只能是:
分组属性、聚集函数
Select课程,Avg(成绩)as平均成绩,Max(成绩)as最高成绩
From选修
GroupBy课程
5)HavingQ(分组限定条件):
作用:
出现在groupby子句后面,不能单独使用,GroupBy分好组后,按条件Q作筛选,Q中出现的属性只能是:
分组属性、聚集函数(Having用于分组,Where用于元组)。
HavingAvg(成绩)>85
6)OrderBy属性1[asc|desc],属性2[asc|desc],…:
出现在最最后面,作用:
在Select子句得出结果后,先按属性1的值,升序(asc)或降序(desc)排列,缺省是升序;属性1的值相等时,再按属性2值升序或降序排列…
OrderBy成绩desc,姓名
7)From子句中用子查询构造派生关系:
复杂的查询分解成若干步->把上一步的查询结果变成一个派生关系->在下一步查询中使用,例如求平均一间宿舍的人数?
(先求各间宿舍的人数,再求平均)
8)Where子句中用子查询构造条件:
a.whereA[not]in(子查询),意义:
A是否出现在子查询的结果中?
(是为真,否则为假),可以多个元组,但只能有一个属性
Where课程in(Select课程From课程计划Where专业=‘网络')
b.whereA(比较运算,>,<,=,…)some|all(子查询),意义:
some:
A与子查询结果中的一个值满足,比较时为真;all:
A与子查询结果中的所有值都满足,比较时为真
Where年龄<=all(Select年龄From学生),可以多个元组,但只能有一个属性
c.whereA[not]exists(子查询),意义:
子查询结果存在(至少一条)记录,可包含多个属性。
exists和in的差别:
exists可包含多个属性,in只能有一个属性,