关系操作
关系模型给出了关系操作的能力说明,但没有给出具体语法要求,不同的关系数据库管理系统可以定义和开发不同的语言来实现这些操作。
基本的关系操作
- 关系模型中常用的关系操作包括查询(query)操作和插入(insert)、删除(delete)、修改(update)操作两大部分。
- 其中最主要的部分是查询操作,查询操作可分为选择(select)、投影(project)、连接(join)、除(divide)、并(union)、差(except)、交(intersection)、笛卡尔积等。
- 选择、投影、并、差、笛卡尔积是五中基本操作,其他操作可以用基本操作定义和导出。
- 关系操作的特点是集合操作方式,即
操作的对象和结果都是集合
。
关系数据语言的分类
- 关系代数语言
- 抽象的查询语言,用对关系的运算来表达查询要求。
- 关系演算语言
- 抽象的查询语言,用谓词来表达查询要求。
- 元组关系演算语言。
- 域关系演算语言。
- 结构化查询语言(Structured Query Lunguage, SQL)
- 是关系数据库的标准语言。
- 不仅具有丰富的查询功能,而且具有数据定义和控制功能。
- 具有关系代数和关系演算双重特点的语言。
关系代数
运算对象、运算符、运算结果是运算的三大要素。
关系代数的运算按运算符的不同可分为传统的集合运算
和专门的关系运算
两类。
- 传统的集合运算将关系看为元组的集合,运算以行的角度来进行。
- 专门的关系运算不仅涉及行,而且涉及列。
传统的集合运算
是二目运算,包括并、差、交、笛卡尔积4中运算。
设关系R和关系S具有相同的目n(即两个关系都具有n个属性),且相应的属性取自同一个域,t是元组变量, t ∈ R t \in R t∈R表示t是R的一个元组。
- 并(union),关系R与关系S的并记作
- R ∪ S = { t ∣ t ∈ R ∨ t ∈ s } R\cup S=\{t|t\in R \vee t\in s\} R∪S={ t∣t∈R∨t∈s}
- 其结果关系为n目关系,由属于R或属于S的元组构成。
- 差(except),关系R与关系S的差记作
- R − S = { t ∣ t ∈ R ∧ t ∈ S } R-S=\{t|t\in R\wedge t\in S\} R−S={ t∣t∈R∧t∈S}
- 其结果关系为n目关系,由属于R而不属于S的所有元组组成。
- 交(intersection),关系R与关系S的交记作
- R ∩ S { t ∣ t ∈ R ∨ t ∈ S } R\cap S\{t|t\in R \vee t\in S\} R∩S{ t∣t∈R∨t∈S}
- 其结果关系为n目关系,由既属于R又属于S的元组组成。
- 关系的交可以用差来表示,如 R ∩ S = R − ( R − S ) R\cap S = R-(R-S) R∩S=R−(R−S)。
- 笛卡尔积(cartesian product),两个分别为n目和m目的关系R和S的笛卡尔积是一个(n+m)列的元组的集合,记为
- R × S = { t r t s ⌢ ∣ t r ∈ R ∧ t s ∈ S } R\times S=\{ \stackrel\frown{t_rt_s}|t_r\in R\wedge t_s\in S \} R×S={ trts⌢∣tr∈R∧ts∈S}
- 元组的前n列是关系R的一个元组,后m列是关系S的一个元组。
- 若R有 k 1 k_1 k1个元组,S有 k 2 k_2 k2个元组,则关系R和关系S的笛卡尔积有 k 1 × k 2 k_1 \times k_2 k1×k2个元组。
专门的关系运算
专门的关系运算包括选择、投影、连接、除运算等,为了便于叙述,引入下列记号。
- 设关系模式为 R ( A 1 , A 1 , . . . , A n ) R(A_1, A_1, ..., A_n) R(A