五、JOIN

一、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

原文地址:https://www.cnblogs.com/soberkkk/p/12564085.html