“内连接、左外连接、右外连接、完全连接、交叉连接”的理解
内连接
相当于我们数学上学习过的交集,取左右两张表都存在的字段
用inner join
连接两个表,其中inner可以省略,分为等值连接(连接条件中的值相等)、非等值连接(连接条件中通过非等于号得出结果)、自连接(连接的两个表是同一个),只有满足连接条件的记录才会被包含在查询结果中
左外连接:
LEFT JOIN
左边表中的数据都出现,右边没有数据以NULL填充
用left outer join
连接两个表,其中outer可以省略,一般写成left join
,左表中的数据会被完全匹配,即使右表中没有数据和它对应,如果是这种情况,就用null补充右表中的数据
右外连接:
RIGHT JOIN
右边表中的数据都出现,左边没有数据以NULL填充
注意:在工作中,常用的是:小表 left join 大表,小表驱动大表
用right outer join
连接两个表,其中outer可以省略,一般写成right join
,右表中的数据会被完全匹配,即使左表中没有数据和它对应,如果是这种情况,就用null补充左表中的数据
完全连接:
用full join
连接两个表,两个表中的数据都会被完全匹配出来,如果另外一个表中没有数据与它对应,那就显示null进行匹配,MySQL数据库不支持这种写法,所以就别用MySQL数据库去验证了
交叉连接:
“交叉连接不带WHERE子句,它返回被连接的两个表所有数据行的笛卡尔积,返回结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。”,交叉连接用cross join
连接两个表,例如select * from A cross join B
,其实这种写法相当于select * from A,B