一、等值连接
- 使用”=”关系将表连接起来的查询,其查询结果中列出被连接表中的所有列,包括其中的重复列。
SELECT XSB.* , CJB.*
FROM XSB , CJB
WHERE XSB.学号 = CJB.学号;
二、自然连接
- 数据库应用中最常用的是“自然连接”,它在目标列中去除相同的字段名。
- 进行自然连接运算要求两个表有共同属性(列),自然连接运算的结果表是在参与操作的两个表的共同属性上进行等值连接后,再去除重复的属性后所得的新表。
SELECT XSB.* , CJB.课程号, CJB.成绩
FROM XSB , CJB
WHERE XSB.学号 = CJB.学号;
等值连接和自然连接的区别:
- 等值连接中不要求相等属性值的属性名相同,而自然连接要求相等属性值的属性名必须相同,即两关系只有在同名属性才能进行自然连接。
- 等值连接不将重复属性去掉,而自然连接去掉重复属性,也可以说,自然连接是去掉重复列的等值连接。
三、内连接
- 指定了INNER关键字的连接是内连接,内连接按照ON所指定的连接条件合并两个表,返回满足条件的行。
- 内连接是系统默认的,可以省略INNER关键字。使用内连接后仍可使用WHERE子句指定条件。
SELECT 姓名, 成绩
FROM XSB JOIN CJB
ON XSB.学号 = CJB.学号
WHERE 课程号 = '206' AND 成绩>=80;
四、自连接
- 自连接作为一种特例,可以将一个表与它自身进行连接,称为自连接。
- 若要在一个表中查找具有相同列值的行,则可以使用自连接。
- 使用自连接时需为表指定两个别名,且对所有列的引用均要用别名限定。
// 找不同课程成绩相等的同学的信息
SELECT a.学号, a.课程号, b.课程号, a.成绩
FROM CJB a JOIN CJB b
ON a.成绩=b.成绩 AND a.学号=b.学号 AND a.课程号!=b.课程号;
五、外连接
- 左外连接(LEFT OUTER JOIN)
结果表中除了包括满足连接条件的行外,还包括左表的所有行。
SELECT XSB.* , 课程号
FROM XSB LEFT OUTER JOIN CJB
ON XSB.学号 = CJB.学号;
- 右外连接(RIGHT OUTER JOIN)
结果表中除了包括满足连接条件的行外,还包括右表的所有行。
SELECT XSB.* , 课程号
FROM XSB RIGHT OUTER JOIN CJB
ON XSB.学号 = CJB.学号;
- 完全外连接(FULL OUTER JOIN)
结果表中除了包括满足连接条件的行外,还包括两个表的所有行。
SELECT XSB.* , 课程号
FROM XSB FULL OUTER JOIN CJB
ON XSB.学号 = CJB.学号;
注:其中的OUTER关键字均可省略