sql语句的内联查询和外联查询介绍
工具/原料
mysql8.0.12
Navicat
方法/步骤
1、默认情况下,满足匹配条件的两个表中的行都包含在联接中。可以指定包含联接中一个表中的所有行或其中一个行,从而用Null填充缺少的匹配项。
2、office_locations表包括一些在员工表中根本没有引用的行。这意味着,不知什么原因,公司目前有一个办公室空无一人。下图的结果没有提到该位置。
3、在查询的JOIN子句中,如果改为指定"左外部联接",茸垂扌馔则结果将包括查询左侧的所有行,为右侧没有匹配的Nul填充Null,反之亦然,对于右外联张嫜较氅接。清单显示了一个具有正确外部联接的查询,用于匹配员工和office_location:SELECTemployees.name,office_locations.location_nameFROMemployeesRIGHTOUTERJOINoffice_locationsONemployees.office_location_id=office_locations.office_location_id
4、此查询返回每个location_name的条目,而不考虑该位置是否有趋濞曛逖员工:SELECTemployees.name,office_locations.location_n锾攒揉敫ameFROMemployeesleftOUTERJOINoffice_locationsONemployees.office_location_id=office_locations.office_location_id
5、也可以同时执行左右联接;在两个表中填写不匹配的null,并使用语法"FULLOUTERJOIN"。这不适用于员工和office_location之间的联接,因为office_location_id是一种外键关系:不可能让员工在数据库中不存在的位置工作。
6、下图显示了两个表上的联接之间的差异。