join,中文在《数据库系统工程师教程》中翻译为连接,在《SQL server 编程必知必会》中翻译为联结。为避免不一致,本文不进行翻译,直接引用英文原词JOIN.
关系模式,元组,属性等术语出现于关系代数里,而表,行,列等术语出现于SQL语言。本文统一使用更直接的SQL语言中的术语。
Join是关系运算中相当重要的运算符。其本质是把多个表中的行进行连接。而如何连接各个表中的行就成为不同join的分类依据。
参与join的表中,一般都包含能比较的列属性。如何对这些属性列进行比较就是不同join的标准。
设参与Join的两个表为R(A,B,C),S(D,E,A)。
(1)根本不进行任何比较
这就是笛卡尔乘积,即对于每个表中的每一行,其他表中的任意行都与其进行连接。
在关系代数中记做:RXS
在SQL中,为select * from R, S
(2) θ Join
对于R中的每一行的参与比较的列与S表中的每一行对应的列进行比较,看是否满足 θ。θ可以为大于,小于,等其他任何逻辑运算符。
例如要比较的是R.A和S.A,标准是R.A > S.A。
关系代数中记为:R(呵呵还不会输入)S
SQL中:select * from R inner join S on R.A > S.A
运算原理为:对于R