1. 连接条件
SELECT student.id AS id, NAME, dept_name, tot_cred, course_id, sec_id, semester, YEAR, grade
FROM student JOIN takes ON student.id = takes.id
on条件可以表示任何SQL谓词,这也是on比自然连接更丰富的地方。
2.外连接
2.1首先分析 自然连接(也称作内连接)
SELECT *
FROM student NATURAL JOIN takes
会删除相同的属性列。缺点,会丢失一些元组,该元组在student上有,但对应的在takes上没有与任何元组匹配,也就是他没有选课,那么在结果集中就不会出现,如果有需求想要这样的结果集出现,也就是我们更偏重某一方面的完整性,那么就需要外连接这种操作。
2.2左外连接
SELECT *
FROM student NATURAL LEFT OUTER JOIN takes
结果集会包含这样的元组(\N表示null)
id name dept_name tot_cred course_id sec_id semester year grade70557 Snow Physics 0 \N \N \N \N \N
2.3右外连接
与左外连接是平行对称的关系。
2.4全外连接
是左外连接和右外连接的结合。