第三章 关系数据库标准语言SQL
SQL概述
SQL定义:结构化查询语言是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义、控制四个方面,是一个通用的功能极强的关系数据库标准语言
SQL特点
- 综合统一。集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体
- 高度非过程化
- 面向集合的操作方式
- 以同一种语法结构提供多种使用方式
- 语言简洁、易学易用
连接
连接也叫 θ \theta θ连接 A ⋈ A . a θ B . b B A\mathop{\Join}\limits_{A.a \ \theta \ B.b}B AA.a θ B.b⋈B
R表
A | B | C |
---|---|---|
a1 | b1 | 5 |
a1 | b2 | 6 |
a2 | b3 | 8 |
a2 | b4 | 12 |
S表
B | E |
---|---|
b1 | 3 |
b2 | 7 |
b3 | 10 |
b3 | 2 |
b5 | 2 |
两种常用的连接
-
等值连接
- θ \theta θ是等号
- 两个表按照a和b相等连接,保留重复属性
-
自然连接
- 两个表按照相同的属性相等连接,不保留重复属性
- R natural join S
B | A | C | E |
---|---|---|---|
b1 | a1 | 5 | 3 |
b2 | a1 | 6 | 7 |
b3 | a2 | 8 | 10 |
b3 | a2 | 8 | 2 |
外连接
如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接(OUTER JOIN)
R full join S
A | B | C | B(1) | E |
---|---|---|---|---|
a1 | b1 | 5 | b1 | 3 |
a1 | b2 | 6 | b2 | 7 |
a2 | b3 | 8 | b3 | 10 |
a2 | b3 | 8 | b3 | 2 |
a2 | b4 | 12 | ||
b5 | 2 |
左外连接
如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFT OUTER JOIN或LEFT JOIN)
R left join S
A | B | C | B(1) | E |
---|---|---|---|---|
a1 | b1 | 5 | b1 | 3 |
a1 | b2 | 6 | b2 | 7 |
a2 | b3 | 8 | b3 | 10 |
a2 | b3 | 8 | b3 | 2 |
a2 | b4 | 12 |
右外连接
如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHT OUTER JOIN或RIGHT JOIN)。
R right join S
A | B | C | B(1) | E |
---|---|---|---|---|
a1 | b1 | 5 | b1 | 3 |
a1 | b2 | 6 | b2 | 7 |
a2 | b3 | 8 | b3 | 10 |
a2 | b3 | 8 | b3 | 2 |
b5 | 2 |