- INNER JOIN:如果表中有至少一个匹配,则返回行
- LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
- RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
- FULL JOIN:只要其中一个表中存在匹配,则返回行
INNER JOIN:内连接
注:INNER JOIN 与 JOIN 是相同的
若有如下两个表,表名分别为People和Department
那么可以用INNER JOIN 将两个表连接起来进行查询
select P.PeopleName,D.DepartmentName from People P INNER JOIN Department D ON P.DepartmentID=D.DepartmentID;
查询结果为:
LEFT JOIN:左连接
select P.PeopleName,D.DepartmentName from People P LEFT JOIN Department D ON P.DepartmentID=D.DepartmentID;
当People表中存在有数据DepartmentID是Department中没有的DepartmentID时,进行以上操作,仍然能查出People表中的数据
RIGHT JOIN:右连接
select P.PeopleName,D.DepartmentName from People P RIGHT JOIN Department D ON P.DepartmentID=D.DepartmentID;
当Department表中存在有数据DepartmentID是People中没有的DepartmentID时,进行以上操作,仍然能查出Department表中的数据
FULL JOIN 结合了 LEFT JOIN 和 RIGHT JOIN 的结果
UNION 操作符
注:UNION 不能用于列出两个表中所有的country。如果查询出来的值有重复值,UNION 只会选取不同的值。如果要查询出所有的值,那么要使用 UNION ALL 来选取重复的值!
若有如下两个表Employee表和People表,
那么执行以下查询语句,能得到以下结果
select PeopleName,DepartmentId from People union select EmployeeName,DepartmentId from Employee