数据库部分的复习(预习)用的是机械工业出版社的书
数据库系统概念(豆瓣)
本文主要是对前三章(引言、关系模型、SQL、中级SQL)内容的概要,比较简单的内容就跳过了。
第一章 引言
数据抽象
一个可用的数据库系统可以抽象成以下三个层次
- 物理层
最低层次的抽象,是复杂的底层结构,描述数据实际上是怎样存储的。比如数据在硬盘中的实际存储方式。 - 逻辑层
比物理层层次稍高的抽象,描述数据库中储存什么数据以及数据之间的关系,面向应用逻辑。逻辑层不必理解底层复杂的物理层的实现,称为物理数据独立性。比如数据库中的普通数据表。 - 视图层
最高层次的抽象,描述数据库的某个部分。类似数据库中的视图。
实例、模式
某一时刻在数据库中的数据的集合称为数据库的实例,而数据库的总体设计称为数据库模式。
可以理解为,前者表示结构+数据,后者表示结构。
根据上面的抽象层次,有物理模式、逻辑模式(最重要)、子模式(视图层),分别在各个层描述数据库的设计。
第二章 关系模型介绍
关系数据库由表构成,用关系指代表,用元组指代行,属性指代表中的列。
关系实例表示一个关系的特定实例,关系中的值的所有可能的取值的集合叫做域。
码 key
超码 superkey
一个关系中属性集的子集,通过这个子集中的属性可以唯一确定一个元组。
候选码 candidate key
上面的子集中会有多余的属性,即用更少的属性就可以唯一确定一个元组,比如学生表,用学号一个属性就可以确定一个学生。这样的最少的可以确定一个元组的属性集叫做候选码。
主码 primary key
在候选码的基础上,比如学生表中,既可以通过学号确定唯一性,也可以通过身份证号确定唯一性,所以这两个属性都分别是候选码,主码就是选其中一个候选码,用于区分关系中不同的元组。
外码 foreign key
关系r1中的一个属性可能包含另一个关系r2的主码,这个属性叫做外码,r1叫做外码依赖的参照关系,r2叫做外码依赖的被参照关系。
第三章 SQL
SQL(结构化查询语言)包括以下几个部分:
- 数据定义语言(DDL):定义、删除、修改关系模式
- 数据操纵语言(DML):CRUD
- 完整性: 数据必须满足完整性约束
- 视图定义
- 事务控制
- 嵌入式SQL和动态SQL:使用编程语言调用SQL
- 授权:访问权限
基本数据类型
- char:固定长度的字符串
- varchar:可变长度的字符串
- int
- smallint: 小整数类型
- numeric:定点数,表示固定小数的数值类型
- real、double precision:浮点数和双精度浮点数,精度和机器相关
- float:精度至少为n位的浮点数
- date:表示日期
- time:表示时间
- timestamp:表示日期+时间
自然连接 natural join
自然连接会把两张表中相同属性合并
集合运算
并运算union
|
|
以上结果集中会自动去除重复,如果需要保留重复,使用union all
交运算intersect (all)
差运算except (all)
空值null
涉及空值的任何运算都为unknown,表示其值位false或true不确定,所以表达式true and unknown
的结果还是unknown。
聚集函数
- 平均值:avg
- 最小值:min
- 最大值:max
- 总和:sum
- 计数:count
分组 group by
这个使用的时候注意一下,分组之后,select之后不能写没有在group by 中的属性,因为分组后有多个结果,不知道要显示哪个,所以会报错。
having子句
配合分组使用,在分组后添加筛选条件。
嵌套子查询
select num1 from tb1 where num1>some(select num2 from tb2);
其中的some
表示num1比后面那个集合中任意一个元素大也就是比最小的大就可以了。另外有all
表示比后面集合中最大的元素大。
子查询还可以写在from后面。
空关系测试
用exist
表示结果是否为空,为空就是false。
内连接、左外连接、右外连接、全外连接
https://blog.youkuaiyun.com/u012219371/article/details/85056526