内连接:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。
外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。
使用逗号分割两张表进行查询(employee e,dept e),mysql经过优化默认就等效与内链接,内连接使用关键字 【inner join】 或 【join】 来连接两张表。内连接中,【驱动表】是系统优化后自动选取的,会将执行计划中【扫描次数少】的表选做【驱动表】。
对于【外连接】中的两个表,即使【驱动表】中的记录在【被驱动表】中找不到与之匹配的记录,也要将该记录加入到最后的结果集中,针对不同的【驱动表的选择】,又可以将外连接分为【左外连接】和【右外连接】。
左外连接
:左边表数据行全部保留,右边表保留符合连接条件的行
右外连接
:右边表数据行全部保留,左边表保留符合连接条件的行。
对于两种连接的使用
如查找两张表同时存在的数据,用内连接;如需筛选的是一张表存在另一张表不存的数据可使用外连接(包含左外连接和右外连接)。