文章目录
数据库的类型
我们一般会把数据库简单区分成关系型数据库(SQL)和非关系型数据库(NoSQL)。
关系型数据库:MySQL、MariaDB、PostgreSQL、Oracle、SQL Server。比较有意思的是关系型数据库的logo很多都是动物。
非关系型数据库:一般只需要知道两个——Redis和MongoDB。Redis是键值类型(Key-Value)的数据库,类似JAVA里的Collection类的Map,默认情况下Redis很难进行类似SQL里的
where
和级联select
操作;MongoDB被称作文档型数据库,介于SQL和Redis之间,它没有表(Table)的结构,你想怎么插入就怎么插入,但是可以进行级联条件查询等操作。
关系型数据库的关系
记 R ( A 1 , A 2 , . . . ) R(A_1,A_2,...) R(A1,A2,...)为关系模式,其中 R R R为关系名, A 1 A_1 A1等为组成该关系的属性名集合。
关系模式的详细表示为 R ( U , D , D O M , F ) R(U,D,DOM,F) R(U,D,DOM,F)—— U U U即为 A 1 , A 2 A_1,A_2 A1,A2; D D D为 U U U中属性来自的域; D O M DOM DOM为属性 U U U向域 D D D的映射集合; F F F为依赖关系,如主键、外键等。但根据考试经验,这玩意一般用不到。
可以简单把 R R R理解成一个表, A 1 A_1 A1等为属性列的名字。如一个学生信息表:学生信息表(学号,性别,生日,专业,姓名...)
。这样的理解方式有助于后面对连接操作的理解。
表里的每个值被称为元组,即所谓的“行”。
关系代数
关系代数是关系型数据库所完备的一类数学逻辑。其基本运算符有:
集合/逻辑运算符 | 含义 | 比较运算符 | 含义 |
---|---|---|---|
∪ \cup ∪ / ∨ \lor ∨ | 并/或 | > > > | 大于 |
∩ \cap ∩ / ∧ \land ∧ | 交/与 | < | 小于 |
× \times × | 笛卡尔积 | ≤ \leq ≤ | 小等于 |
- | 差 | ≥ \geq ≥ | 大等于 |
¬ \neg ¬ | 非 | = | 等于 |
特殊操作还有四个:
运算符 | 含义 | 运算符 | 含义 |
---|---|---|---|
σ \sigma σ (读作"“希格玛”") | 选择 | π \pi π 或 ∏ \prod ∏ | 投影 |
⋈ \Join ⋈ (读作"join") | (自然)连接 | ÷ \div ÷ | 除 |
涉及到连接,除了自然连接 ⋈ \Join ⋈,就必须提到几种扩展连接方式:
运算符 | 含义 | 运算符 | 含义 |
---|---|---|---|
⋈ C {\Join}_C ⋈C | θ \theta θ连接(条件连接) | ⋈ o \mathop {\Join} \limits^{o} ⋈o | 自然连接 |
⋈ o L {\mathop {\Join} \limits^{o}}_L ⋈oL | 左外连接 | ⋈ o R {\mathop {\Join} \limits^{o}}_R ⋈oR | 右外连接 |
这几种连接方式将在后面和笛卡尔积做集中区分。
理解关系代数符号
从一道例题出发:
① 投影
要理解 π A 1 , A 4 ( σ A 2 < ′ 201 7 ′ ∧ A 4 = ′ 9 5 ′ ( R ⋈ S ) ) \pi_{A_1,A_4}(\sigma_{A_2<'2017'\land A_4='95'}(R\Join S)) πA1,A4(σA2<′2017′∧A4=′95′(R⋈S)) 就要先从投影说起。
π \pi π 或 ∏ \prod ∏ 被称为投影操作&#