查询语言
用户用来从数据库中请求获取信息的语言
“纯”查询语言(奠定了人民使用查询语言的基础)
- 关系代数-SQL的基础
- 元组关系演算
- 域关系演算
关系代数
在某种程度上是过程化语言
六个基本运算
- select 选择
- project 投影
- union 并
- set difference 差(合集差)
- cartesian product 笛卡尔积
- rename 更名(重命名)
用户输入一个或两个关系,并得到新的关系
附加运算
- set intersection 交
- natural join 自然连接
- division 除
- assignment 赋值
选择运算
关系-表,元组-行,属性-列
选择运算就是在表(关系)中,选择出条件(元组中属性)满足的行(元组)。
定义:σp(r)={t|t∈r and p(t)}
p是由逻辑连词与、或、非连接起来的公式。逻辑连词的运算对象可以是比较运算符的表达式。
例:(a<4)&&(b>3)
投影运算
目的:将表中重复的元组删除。
并运算
目的:将两个有相同属性(且排列顺序相同)的表合并,将重复的元组取出,将不同的变成一个表。
差运算
目的:将两个有相同属性(且排列顺序相同)的表中出现相同的元组删除,使两个表中都没有这些元组
广义笛卡尔积
定义:rxs={{t q}|t∈r and q∈s}
假设r(R)的属性和s(S)的属性没有交集
如果属性有交集,那么必须重命名这些有交集的属性
例:r和s中都有B,可以重命名为r.B和s.B
复合运算
可以使用多种运算符构建表达式
更名运算
允许我们使用其他名字指代关系
表达:()内的是查找条件,下标是查找目标
附加运算
虽不能增加关系代数的表达能力,但却可以简化一些常用的查询。
交运算
目的:从两个有相同属性(且排列顺序相同)的表中找出相同的元组。
r∩s=r-(r-s)
自然连接
将两表中相同属性的元组进行笛卡尔积,在得到的新元组进行投影,删除多余的相同的属性。
注意:
1.r,s必须含有同名属性
2.连接两个关系中同名属性值相等的元组
3.消去重名属性
theta连接
由用户来指定,是自然连接的扩展
除运算
使用于“对所有的”此类短语的查询
多项选择:满足一个属性的多个值的另一个属性。
赋值运算(<-)
赋值运算可以把查询表达为一个顺序程序,该程序包括:
- 一系列赋值
- 一个其值被作为查询结果显示的表达式
赋值必须是赋给一个临时关系变量。
总结:
并、差、交为双目、等元运算
笛卡尔积、自然连接、除为双目运算
投影、选择为单运算对象
优先级(由高到低)
- 投影
- 选择
- 笛卡尔积
- 连接、除
- 交
- 并、差