数据库知识点梳理

1. 基本概念

a 数据库管理系统(DBMS):由一个互相关联的数据的集合和一组用来访问这些数据的程序组成,是一种操纵和管理数据库的软件,用于建立、使用和维护数据库,是位于用户和操作系统之间的数据管理软件。

b 数据库(DB):按照数据结构来组织、存储和管理的数据的集合,也就是数据库管理系统中的数据的集合

c 数据库系统(DBS):为适应数据处理的需要而发展起来的一种较为理想的数据处理系统,是一个为实际可运行的存储、维护和应用系统提供数据的软件系统。DBS通常由软件、数据库和数据管理员组成(也可以说成由数据库、数据库管理系统、应用系统、数据库管理员和用户组成)。软件主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统。数据管理员分四类:系统分析员和数据库设计人员;应用程序员;最终用户;数据库管理员DBA。数据库系统的核心是数据库管理系统

目前常见的数据库系统有IBM的DB2、甲骨文的Oracle、微软的SQL和Access、Sybase的Sybase、MySQL AB公司的MySQL等
DBS=计算机硬件平台+系统软件和应用软件+人员

d 数据模型:描述数据、数据联系、数据语义以及一致性约束的概念的集合。数据模型是现实世界数据特征的抽象。数据库系统的核心和基础是数据模型(有点不懂)

数据模型=数据结构[静态特征]+数据操作[动态特征]+完整性约束[完整性约束条件]


2. 三层模式和两层映射

三层模式:

内模式(存储模式):和数据库物理存储有关,描述数据是怎样存储的,唯一,物理级,物理层

模式(概念模式、逻辑模式):用来隔离物理层的不同, 在逻辑上描述数据库,唯一,概念级,逻辑层

外模式(子模式、用户模式):用于向用户展示,不唯一,用户级,视图层

两层映射:

外模式/模式映射:当模式发生改变时,只要改变其映射关系,可以使外模式保持不变。(逻辑性)

模式/内模式映射:当内模式发生改变时,只要改变模式/内模式映射,可以保持模式不变。(物理性)

应用程序如果不依赖于物理模式,它们就被称为是具有物理数据独立性。


3. 数据库设计

指定需求文档——>概念设计——>逻辑设计——>物理设计

概念设计阶段决定数据库中应该包括哪些属性、如何组织到表中去。一般采用实体-联系模型和规范化算法来实现。


4. 数据库语言

数据定义语言(DDL:Data-definition Language):和关系模型相关的命令,定义关系模式、删除关系、以及修改关系模式等命令。

数据操纵语言(DML:Data-manipulate Language):涉及表的增删查改操作。

数据控制语言(DCL:Data-control Language):高级数据库操纵相关,设计权限,事务等命令。


5. 表概念

关系模型:用二维表表示实体及实体之间的联系。

在关系模型中,表指代关系,元组指代行,表中的列指代元组属性。

关系模式和关系实例:关系模式指关系的逻辑设计,关系实例指它在特定时刻的内容。关系模式用 表名(属性名1,属性名2,,,)表示,关系实例表示一个确定的关系。两者的关系就像类和对象的关系。

超码:关系中可以唯一表示一个元组,一个或多个属性的集合。如果ID是一个超码,那么包含ID的任何超集都是超码。

候选码:如果一个超码的任何真子集都不是超码,那么这样的超码就是候选码,候选码是超码,超码不一定是候选码。

主码:被数据库设计者选中的,用来区分不同元组的候选码。所以主码一定是候选码,但候选码不一定是主码,候选码都可以做主码,但是没有被设计者选中,所以只是候选项。

外码:若关系 r1 中的某个属性 t 是另一个关系模式 r2 的主码,则属性 t 在该关系 r1 中就被称作参照 r2 的外码。

域:指关系中某个属性的取值的集合。


6. 完整性约束

实体完整性约束:关系的主键不能为空,也不能重复。

参照完整性约束:参照关系中的外键必须等于被参照关系中某个元组的特定属性(不一定是主键),如果属性是被参照关系的主键,则称参照关系中的属性为被参照关系的属性的外码。references子句指定的属性列表必须声明为被参照关系的候选码,要么使用primary key约束,要么使用unique约束(数据库系统概念6th P131)。

域完整性约束:字段(属性)的取值合理,没有超出取值域。

用户自定义完整性约束:用户根据应用环境的要求和实际的需要,对某一具体应用所涉及的数据提出约束性特定属性条件。用户定义完整性主要包括字段有效性约束和记录有效性。


7. SQL语言

DDL:create、alter、drop

DML:insert、delete、select、update

DCL:grant、revoke


8. select

A 单表查询

select A1,A2,An

from table1

where 条件

在select 后加 distinct,表示去除重复,默认all(不去除重复),distinct 和 all 写在属性前面。

B 多表查询

最容易的理解方式:首先是from,然后是where,最后是select

多表查询主要是集中连接方式:

自然连接(natural join):得到在连接的关系模式中所有相同属性上取值相同的元组对。如果不想在所有属性上取值相同,只满足部分相同属性的取值相同,可以用t1 [natural] join t2 using(A1,A2),这样,如果t1.A1=t2.A1,并且t1.A2=t2.A2就满足条件,即使有t1.A3和t2.A3,也不要求t1.A3=t2.A3.

左连接(natural left outer join):保留左表中不满足自然连接的元组。

右连接(natural right outer join):保留右表中不满足自然连接的元组。

全外连接(natural full outer join):保留两个表中不满足自然连接的元组。


9. 嵌套子查询

A where子句中的子查询

B from子句中的子查询

C with子查询:可以定义临时关系

D 标量子查询:返回包含单个属性的单个元组的子查询。标量子查询结果仍然是关系,不过只返回对应的值。

E 相关子查询:使用了来自外层查询相关名称的子查询。


10 聚集函数

avg() : 平均值,输入必须是数字集。

min() : 最小值

max() : 最大值

sum() : 总和,输入必须是数字集。

count() : 计数

count() 可以用做count(distinct ID),但不能在count(*) 时使用distinct。


11. 特殊子句

A order by子句:可以往元组按照顺序显示,desc表示降序,asc表示升序,默认使用升序。

语法:order by salary desc, name asc (先按照salary降序排列,对salary相同的按照name升序排列,desc和asc写在属性后面。

B group by子句:在给定属性上取值相同的元组分在一个组中。

说明:任何没有出现在group by子句中的属性,如果没有出现在select子句中,那它就只能出现在聚集函数内部。

C having子句:对分组限定条件。

说明:

a。与group by子句类似,任何没有出现在having 子句中,但在select中没有被聚集(用聚集函数)的属性必须出现在group by子句中(也就是说,出现了group by或者having子句,select 中的属性要么是这两个子句中出现的,要么是用聚集函数计算的,因为group by和having都是针对的分组,select中的属性必须能组成一个分组,不能是单个的元组。

b。查询的理解也是先from,如果有where子句,则先用where子句将from 得到的关系进行筛选,然后再是group by分组,再是 having子句,将满足条件的分组留下,不满足的删掉,最后是select子句。


12. 修改语句

A 删除   delete from r where P;

B 插入   insert into r[A1, A2,,,]  values();插入时,字符或字符串都用 ’ ‘ ,数字类型直接写数字。

C 更新   update r set A1=data [where P];

delete、insert、update语句中都可以有where子句。


13. 其他关键字

as : 更名,oldName as newName,可以放在任何地方。

like : 字符串比较," _ "任意匹配一个字符,” %“ 匹配任意子串。

escape : 定义转义字符。


14. 空值

null的算法运算、比较运算、集合运算等操作得到的结果是不确定的,用unknown 表示(既不是 is null , 也不是 is not null )。关于unknown 的逻辑表达式总结为:

and : true and unknown的结果是unknown, false and unknown的结果是false, unknown and unknown 的结果是 unknown。

or : true or unknown 的结果是true, false or unknown 的结果是 unknown, unknown or unknown的结果是 unknown。

not :not unknown 的结果是 unknown。

null = null 的结果是 unknown,而不是true。


15. 对空值和布尔值的聚集

除了count(*) 外,所有的聚集函数都忽略输入集合中的空值。


16. 集合

union , intersect, except :分别表示并集、交集、差集。union运算自动去除重复,union all 可以保留重复,intersect 运算自动去除重复,intersect all 可以保留重复。except all 保留重复。

in (not in): 是否在(不在)集合中。

some : =some , <> some( 不等价于 not in , not in 表示任何都一个都不满足 ), =some(等价于 in),some后面接子查询语句。

all : =all, =all( 不等价于 in ) ,  <> all(等价于 not in ) 


17. 范式

1NF : 每个属性都是不可再分的

2NF : 在 1NF 的基础上,消除了非主属性对主码的部分函数依赖

3NF : 在 2NF 的基础上,消除了非主属性对主码的传递函数依赖

BCNF : 在 3NF 的基础上,消除了主属性对 主码的福安息的部分与传递函数依赖


你可能感兴趣的:(数据库理论)