一、inner join:在表中存在至少一个匹配时,INNER JOIN 关键字返回行。等同join
SELECT SNAME,CNO,DEGREE FROM student INNER JOIN score on student.SNO=score.SNO ORDER BY SNAME
二、left join从左表student那里返回所有的行,即使在右表score中没有匹配的行。
SELECT SNAME,CNO,DEGREE FROM student LEFT JOIN score on student.SNO=score.SNO ORDER BY SNAME
三、right join:从右表 score 那里返回所有的行,即使在左表student中没有匹配的行
SELECT SNAME,CNO,DEGREE FROM student right JOIN score on student.SNO=score.SNO ORDER BY SNAME
四、full join:只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。MySQL不支持full join,可通过 left join+union+right join实现
SELECT SNAME,CNO,DEGREE FROM student LEFT JOIN score on student.SNO=score.SNO UNION SELECT SNAME,CNO,DEGREE FROM student RIGHT JOIN score on student.SNO=score.SNO ORDER BY SNAME
UNION:
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。