笛卡尔积(笛卡尔积图解)
所谓笛卡尔积,通俗点说就是指包含两个集合中任意取出两个元素构成的组合的集合.
MySQL的多表查询(笛卡尔积原理)
先确定数据要用到哪些表。
将多个表先通过笛卡尔积变成一个表。
然后去除不符合逻辑的数据(根据两个表的关系去掉)。
最后当做是一个虚拟表一样来加上条件即可。
应用场合
在某些情况下用于寻找连续日期中残缺的数据,可以先用笛卡尔积做一个排列组合,然后和目标表进行关联,以查询少了哪些数据。
例如:在一张考勤记录表中,记录了100个人在2018年8月的考勤信息,理论上这些人应该每天都有记录。但是实际上有的人在某些天上面的数据缺少了,然而不论是一天一天的查询,还是一个一个人的查询,都比较麻烦。
在这种情况下,可以针对每个人每一天做一个笛卡尔积处理。去除与实际表的关联,就很容易找出确实数据了。
左,右连接,内,外连接
l 内连接:
要点:返回的是所有匹配的记录。
2. select * from aa,bb where aa.x = ba.x ////内连接
l 外连接有左连接和右连接两种。
要点:返回的是所有匹配的记录 外加 每行主表外键值为null的一条记录。辅表所有列为null值。
select * from aa left join bb on aa.x=bb.x order by aa.x //左外连接或称左连接
select * from aa right join bb on aa.x=bb.x order by aa.x //右外连接或称右连接