提问:
执行上面这个语句,下面查询出来的表左边全是空值是什么原因?
回答:
SQL查询的基本原理:
单表查询:根据where条件过滤表中的记录,然后根据select指定的列返回查询结果。
两表连接查询:使用on条件对两表进行连接形成一张虚拟结果集;然后根据where条件过滤结果集中的记录,再根据select指定的列返回查询结果。
多表连接查询:先对第一个和第二个表按照两表连接查询,然后用用连接后的虚拟结果集和第三个表做连接查询,以此类推,直到所有的表都连接上为止,最终形成一张虚拟结果集,然后根据where条件过滤虚拟结果集中的记录,再根据select指定的列返回查询结果。
多表连接的结果通过三个属性决定:
方向性:在外连接中写在前边的表为左表、写在后边的表为右表。
主附关系:主表要出所有的数据范围,附表与主表无匹配项时标记为null,内连接时无主附表之分。
对应关系:关键字段中有重复值的表为多表,没有重复值的表为一表。
这是多表连接时,针对左连接、右连接哪个表为主表的典型问题。
什么是 LEFT JOIN 子句?
在左连接子句右表中连接两个或多个表,并返回左表中的所有行和匹配的记录,或者返回null如果没有找到任何匹配的记录。它也被称为左外连接。因此,Outer 是与 Left Join 一起使用的可选关键字。
2.什么是RIGHT JOIN 子句?
该右连接从句连接两个或多个表,然后从右侧表返回所有的行,只有从其他表到的符合规定的那些结果连接条件。如果从左侧表中找到不匹配的记录,则返回 Null 值。它也被称为右外连接。因此,Outer 是与 Right Join 一起使用的可选子句。