说明
总结<数据库系统与原理设计>书中知识点及名词解释用于考研备考,按章划分,较难易混知识点以二级标题特别标注,方便在目录中查找到。
**计算机复试—这有详细的
第一章 数据 系统概论
- 数据:描述事物的符号记录
- 记录:计算机中表示和存储数据的一种格式或方法,这样的数据时有结构的。因此,表格描述的数据称为结构化数据。
- 非结构化数据:不方便用数据库二维逻辑来表现的数据。包括所有格式的办公文档、文本、图片、标准通用标记语言下的子集XML、HTML、各类报表、图像和音频/视频信息等。
- 半结构化数据
- 数据处理:是指对各种数据进行采集、存储、检索、加工传播和应用等一系列活动的总和。
- 数据管理:对数据进行有效的分类、组织、编码、存储、检索和应用,他是数据处理的中心问题
- 数据管理技术经历了三阶段:人工管理阶段、文件系统阶段、数据库管理系统阶段。
人工管理阶段:数据时面向应用程序,数据需要应用程序自己定义和管理。无法共享利用,因此存在大量冗余数据。
文件系统阶段:按文件名访问,按记录进行存取。
特点:1)实现了文件内的数据结构化**,即一个数据是按记录进行组织,这样的数据是有结构的,数据的语义是明确的。但整体仍是无结构的。2)程序和数据之前由文件系统提供的存取方法进行转换。由于数据在物理存储结构上的改变不一定反映在程序上,因此应用程序与数据之间有了一定的物理独立性。
弊端:
1)数据共享性差,数据冗余和不一致;数据冗余是指相同的数据可能在不同的地方(文件)重复存储。
2)数据独立性差;
3)数据孤立,数据获取困难;
4)完整性问题;数据完整性是指数据的正确性、有效性和相容性,也称为一致性约束。
5)原子性问题;
6)并发访问异常;
7)安全性问题。
数据库管理系统阶段:数据库管理系统是由一个相互关联的集合和一组用以访问、管理和控制这些数据的程序组成。这数据集合即数据库。数据设计数据库管理系统的目的是为了有效地管理大量的数据,并解决文件系统中存在的问题。
与文件系统相比,数据库管理系统特点:
1)数据结构化;
2)数据的共享度高,冗余度低,易扩充;
3)数据独立性高;
4)数据由数据库管理系统统一管理和控制。数据控制功能:数据的安全性保护;数据的完整性检查;并发控制;数据库恢复。
- 数据模型:一个描述数据结构、数据操作以及数据约束的数学形式体系(即概念及其符号表示系统)。
分层:1、概念/信息模型;2、逻辑模型;3、物理模型
组成要素:1、数据结构描述数据库的组成对象(实体)以及对象之间的联系;2、数据操作;3、数据约束
- 根据数据抽象(物理层、逻辑层、视图层)的不同级别,可以将数据模型划分为:
概念模型:概念层次的数据模型;
逻辑模型:用来描述数据库数据的整体逻辑;
物理模型:用来描述数据的物理存储结构和存取方法。 - 对应数据抽象三类别,有数据库的三级模式:内模式(存储模式)、模式(逻辑模式)、外模式(子模式、用户模式)。
关系数据模型常用术语
关系:一个关系对应一张二维表,每一个关系有一个名称即关系名。
元组:表中的一行称为一个元组。
属性:表中的一列称为一个属性,每一个属性有一个名称即属性名。
码:(码键或键)表中的某个属性或属性组,可以唯一标识表中的一行。
域:属性的取值范围。
分量:元组中的一个属性组。
外码:表中某属性或属性组,用来描述本关系中的元组(实体)与另一个关系中的元组之间的关系。
关系模式:通过关系名和属性名列表对关系进行描述。
- 数据库系统:在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统、应用系统、数据库管理员和最终用户构成。
第二章 关系模型与关系代数
关系数据库是表的集合,即关系的集合。非正式的说,一个表是一个实体集,一行就是一个实体,它由共同表示一个实体的有关联的若干属性的值所构成。- 域:一组具有相同数据类型的值的集合。
- 笛卡尔积:两个分别为n目和m目的关系r和关系s的笛卡尔积是一个n+m目元组的集合。
- 关系 【关系是笛卡尔积的有限子集,所以也是一个二维表。表*每行对应关系的一个元组,每列对应关系的一个域。由于域可以相同,为例区别每列起名为 属性。n 目 关系共有n个属性。n=1:单元关系;n=2:二元关系】
基本要求:每个属性的域必须是原子的(域中每个值都被看做是 不可再分的单元)。
码
1)超码:对于关系r的一个或多个属性的集合A,如果属性集A可以唯一地标识关系r中的一个元组,则称属性集A为关系r的一个超码。
2)候选码:最小的超码。
3)主码:若一个关系有多个候选码,可以选定其中一个候选码作为该关系的主码。
4)外码:p39(关系r中属性F的范围对应于关系s中主码K,则F是关系r参照关系s的外码)一个含有主码和外码依赖的数据库模式可以通过数据库模式导航图中,外码实现两个关系之间的多对一(或一对一)联系或一个关系内部的多对一(或一对一)联系。(箭头由n指向1)
多对多联系一般通过其他(一个或多个)关系放在中间实现
多个候选码时如何选择主码?
1)尽量选属性长度最短的;
2)尽量选包含单个属性的码,而不是复合候选码;
3)选择在数据库系统生命周期内属性值最少变化的候选码;
4)选择在数据库系统生命周期内更可能包含唯一值的候选码.
- 选择、投影、集合并、集合差、笛卡尔积是5种基本关系操作。
- 传统的集合运算:并、查、交、笛卡尔积
- 关系运算:选择、投影、连接、除
关系是个二维表,水平的操作(行)—选择;纵向(列)的操作—投影。
投影要去除重复元组
连接:自然连接、等值连接。自然连接是特殊的等值连接,要求两个关系具有公共属性集,并在公共集上进行连接,同时去重复列。满足结合律。
外码引用关系可用自然连接(或等值连接)表示。
自然连接VS等值连接
【转自】
- 区别:等值连接不要求两个关系中进行比较的分量是相同的属性组,而只要可以进行相等比较即可,是从行进行的一种运算。而自然连接要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,是从行和列进行的一种运算。
- 联系:等值连接是关系的广义笛卡尔积的子集。自然连接是一种特殊的等值连接。即两 者都是两个关系连接之后的产物。
- 象集:Bx表示关系集r中属性集A上取值为x的所有元组在属性集B上的投影。(属性-列,元组-行)
- 外连接:不能连接的元组也保留在结果关系中,全置null。左外连接:只把左关系中不能连接的元组保留。右外连接类似。
除运算
百科
找R、S 共同属性的不重复元组(行)看做整体K,选择R中包含K的 非S与R相同属性的属性(列) 即为R÷S。
第三章 SQL查询语言
基本概念
- 基本表:数据库中独立存在的表。SQL中一个关系对应一个基本表,一个(或多个)基本表对应一个存储文件;一个表可以带若干索引,索引也存放于存储文件中。
- 视图:从一个或几个基本表中导出的表,是虚表,存定义不存数据。
- 查询表
- 存储文件:数据库中存放关系的物理文件,其逻辑结构组成关系数据库的内模式,物理结构对用户透明。
投影运算(选列:SELECT)
1、SELECT A
FROM Class
2、/*去除重复列*/
SELECT DISTINCT A
FROM Class
3、SELECT *
FROM Class
4、/*A取别名aaa,AS可省略!后面代码几乎都省略了*/
SELECT A AS aaa
FROM Class
5、/*Lower()将大写字母改为小写*/
SELECT Lower(A),B/16 AS hhh
FROM Class
选择运算(选行:WHERE)
1、比较运算
2、范围查询:BETWEEN ...AND
3、集合查询:IN('001','002')
4、空值查询:IS null
5、字符匹配查询:LIKE
通配符:%--任意长度;_ --一个字符
WHERE className LIKE '%16/_%' ESCAPE '/'
/*ESCAPE后是换码符,即紧跟在/后面的不是通配符而是符号。*/
6、逻辑查询:AND OR NOT
7 还有后面提到的存在量词运算符:EXISTS
函数getdate()获取当前系统的日期,year()用于提取日期中的年份。
排序运算(ORDER BY)
ORDER BY className
/*默认升序,要降序要在后加DESC*/
聚合查询
SQL统计功能通过聚合函数实现,分类功能通过分组子句实现。
聚合函数:
count()
sum()
avg()
max()
min()
DISTINCT去除列名重复的元组。
分组聚合:
1、GROUP BY 子句对查询的结果按某一列或某几列进行分组,值相同的一组。
2、HAVING 子句对分组的结果进行选择。必须与GROUP BY 配合使用。
连接查询
前面写过等值连接与自然连接的区别,SQL中不直接支持自然连接,完成自然连接的方法是在等值连接的基础上消除重复列。
非等值连接使用的比较少。
自连接:
FROM Class a, Class b/*给Class表别名a,b*/
WHERE a.classNo=b.classNo
左外连接:
FROM Class a LEFT OUTER JOIN Student b ON a.classNo=b.classNo
右外连接类似:
FROM Class a RIGHT JOIN Student b ON a.classNo=b.classNo
全外连接:
FROM Class a FULL JOIN Student b ON a.classNo=b.classNo
嵌套子查询
子查询中不可使用ORDER BY子句,该句仅用于最后的输出结果排序.
分为相关子查询和非相关子查询.非相关子查询指子查询结果不依赖于上层查询.
- 使用IN(p88)
由于SELECT的结果是元组的集合,因此可以嵌套到IN子句中. - 使用比较运算符
<=ALL 小于等于子查询结果中的每个值
<=ANY <=SOME 小于等于子查询结果中的某个值 - 使用存在量词EXISTS
SQL 仅提供量词(存在量词)运算 ,使用谓词EXISTS,全称量词转化通过NOTEXISTS实现.
WHERE子句中的EXISTS用来判断子查询结果集合中是否存在元素,EXISTS大量用于相关子查询中.
查询过程:
1首先取外层查询的第一个元组
2依据该元组的值,执行子查询
3如果子查询结果非空,将外层查询的元组放入结果集中;否则舍弃
4取外层查询的下一个元组,返回2步重复过程,直至外层查询所有元组处理完毕
5将结果集合中的元组作为一个新关系输出
注:子查询的目标列通常是*因为EXISTS只判断子查询结果集中是否存在元素.
例:查询选修了所有课程的学生姓名-即查询这样的学生,不存在没有选修的课程
SELECT studentName
FROM Student x
WHERE NOT EXISTS
(SELECT* FROM Course c
WHERE NOT EXISTS /*判断学生x.studentNo是否选修c.courseNo*/
(SELECT* FROM Score
WHERE studentNo=x.studentNo AND courseNo=c.courseNo)
)
理解:(任意c)P(x,c)=非(存在c(非P(x,c)))
在c表中,找不到一个课程,它不在Score表中被x这个学生选过
集合运算
并:UNION
交:INTERSECT
差:EXCEPT
执行运算时要求参与运算的查询结果列数一样,对应列的数据类型必须一致.
SQL查询一般格式
共6个子句,其中SELECT FROM是必须的,其他必须按如下*****:
(p101)
SELECT [ALL|DISTINCT]<目标列表达式 别名>...
FROM<表名 别名>...
WHERE<条件表达式>...
GROUP BY <列名1>...
HAVING <条件表达式>...
ORDER BY <列名表达式>[ASC|DESC]...
WHERE中条件表达式中可使用的谓词运算符见前文选择运算的7个运算符.
第四章-第五章知识点详解
第七章-第十二章知识点详解
转载:https://blog.csdn.net/weixin_43629813/article/details/113379514