关于关系代数连接运算的介绍请查看下面链接
连接运算格式
链接运算由两部分构成:连接类型和连接条件
连接类型可分为:
- INNER JOIN 内连接
- LEFT OUTER JOIN 左外连接
- RIGHT OUTER JOIN 右外连接
- FULL OUTER JOIN 全外连接
连接条件可分为
- NATURAL 自然连接(去掉重复属性)
- ON 连接条件(保留重复属性)
- USING 属性名1,属性名2… (保留指定重复属性)
具体的组合有以下几种形式
注意:MYSQL没有全外连接
- table1 INNER JOIN table2 ON 链接条件
SELECT *
FROM teacher INNER JOIN courseON teacher.tn = course.tn
上面的SQL语句中做了等值内连接,我们看到tn属性是重复的
- table1 INNER JOIN table2 USING (公共属性名)
SELECT *
FROM teacher INNER JOIN courseUSING (tn)
以USING中的属性作为连接条件(属性值相等才连接),并去掉重复属性(tn)
- table1 LEFT JOIN table2 ON 链接条件
SELECT *
FROM teacher LEFT OUTER JOIN courseON teacher.tn = course.tn
左外连接会保留table1中的元组在结果集中不丢失,使用ON条件,不去掉重复元组
- table1 LEFT JOIN table2 USING (tn)
效果与上图一致,只是去掉重复属性(tn)SELECT *
FROM teacher LEFT OUTER JOIN courseUSING (tn)
- table1 RIGHT JOIN table2 USING (tn)
保留table2中的元组SELECT *
FROM teacher RIGHT OUTER JOIN courseUSING (tn)
- table1 NATURAL LEFT/RIGHT OUTER JOIN table2
这个就是自然连接了,自然连接只能用在外连接当中,并且使用自然连接是两个表中的公共属性都需要进行等值判断SELECT *
FROM teacher NATURAL LEFT OUTER JOIN course