内连接只返回两表匹配的交集数据,如员工与部门均有对应记录;外连接保留主表全部记录,左连接以左表为准,右连接以右表为准,缺失匹配项用NULL填充。

内连接和外连接是MySQL中用于多表查询的两种主要方式,它们的核心区别在于返回数据的范围不同。
内连接只返回两个表中都有匹配记录的数据。如果某条记录在其中一个表中没有对应的匹配项,这条记录就不会出现在结果中。
举个例子:有两个表,一个是员工表(employee),一个是部门表(department)。用部门ID关联查询。如果某个员工的部门ID在部门表中找不到,那这个员工不会出现在查询结果里;同样,某个部门如果没有员工,在内连接下也不会显示。
外连接会返回匹配的数据,同时还会保留至少一个表中的不匹配记录。外连接分为左外连接(LEFT JOIN)、右外连接(RIGHT JOIN)和全外连接(FULL OUTER JOIN,MySQL不直接支持)。
左外连接(LEFT JOIN):
返回左表所有记录,即使右表没有匹配的也照常显示,没有匹配的部分用NULL填充。
比如上面的例子,使用LEFT JOIN会列出所有员工,哪怕他的部门不存在,也会显示员工信息,部门字段为NULL。
右外连接(RIGHT JOIN):
返回右表所有记录,即使左表没有匹配项。例如列出所有部门,包括那些还没有员工的部门。
内连接像取“交集”,只保留两边都有的数据;外连接更像是取“并集”的一部分,会保留主表的所有数据,不管有没有匹配。
选择哪种连接方式,取决于你是否需要保留那些没有匹配的记录。
基本上就这些,理解了数据保留逻辑,就能正确选用连接类型。
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号