一 准备工作
1.1 新建表: 用户a表
1.2 插入一些数据后,查询结果为:
mysql > select * from a;
1.3 新建表: 产品b表
1.4 插入一些数据后,查询结果为:
mysql > select * from b;
二 查询语句
2.1 inner join 测试
mysql > SELECT a.*, b.* FROM a AS a INNER JOIN b AS b ON a.PRODUCT_ID = b.PRODUCT_ID;
点评:
inner join (内连接),可以简写为 join ;又称等值连接;
只显示两个表中联结字段相等的行.这个和用select查询多表是一样的效果,
即 a表与b表内连接或b表与a表内连接 结果是一样的。
2.2 left join测试
情况一: a表与b表左连接
mysql > SELECT a.*, b.* FROM a AS a LEFT JOIN b AS b ON a.PRODUCT_ID = b.PRODUCT_ID;
情况二: b表与a表左连接
mysql > SELECT a.*, b.* FROM b AS b LEFT JOIN a AS a ON b.PRODUCT_ID = a.PRODUCT_ID;
点评:
左外连接:
left join(左连接) :以左表为基础,显示左表中的所有记录,不管是否与关联条件相匹配,而右表中的数据只显示与关联条件相匹配的记录,不匹配的记录以NULL字符填充.
left join 是left outer join的简写,left join默认是outer属性的。
情况三: a表与b表右连接
mysql > SELECT a.*, b.*FROMa AS aRIGHT JOIN b AS b ON a.PRODUCT_ID = b.PRODUCT_ID;
情况四: b表与a表右连接
mysql > SELECT a.*, b.* FROM b AS b RIGHT JOIN a AS a ON b.PRODUCT_ID = a.PRODUCT_ID;
点评:
右外连接:
right join(右连接) :以右表为基础,显示右表中的所有记录,不管是否与关联条件相匹配,而左表中的数据只显示与关联条件相匹配的记录,不匹配的记录以NULL字符填充。
2.2 full join测试
mysql >SELECT a.*, b.* FROM b AS b FULL JOIN a AS a ON b.PRODUCT_ID = a.PRODUCT_ID;
特别注意: FULL JOIN 与版本有关,由于我的数据库版本不支持full join函数,所以 就不测了;
点评:
全外连接:
full join(全连接) :显示多个表中的所有的记录,不匹配关联条件的列以NULL字符填充。
另外如果MYSQL数据库想看见全连接的效果可以采用left join +union + right join 的方式实现;
如:
mysql >
SELECT a.*, b.* FROM a AS a LEFT JOIN b AS b ON a.PRODUCT_ID = b.PRODUCT_ID
UNION
SELECT a.*, b.*FROM a AS a RIGHT JOIN b AS b ON a.PRODUCT_ID = b.PRODUCT_ID;