笛卡尔积图解[通俗易懂]

笛卡尔积图解[通俗易懂]所谓笛卡尔积,通俗点说就是指包含两个集合中任意取出两个元素构成的组合的集合. MySQL的多表查询(笛卡尔积原理)先确定数据要用到哪些表。 将多个表先通过笛卡尔积变成一个表。 然后去除不符合逻辑的数据(根据两个表的关系去掉)。 最后当做是一个虚拟表一样来加上条件即可。 应用场合在某些情况下用于寻找连续日期中残缺的数据,可以先用笛卡尔积做一个排列组合,然后和目标表进行关联,以查询…

大家好,又见面了,我是你们的朋友全栈君。

所谓笛卡尔积,通俗点说就是指包含两个集合中任意取出两个元素构成的组合的集合. 

MySQL的多表查询(笛卡尔积原理)

  1. 先确定数据要用到哪些表。
  2. 将多个表先通过笛卡尔积变成一个表。
  3. 然后去除不符合逻辑的数据(根据两个表的关系去掉)。
  4. 最后当做是一个虚拟表一样来加上条件即可。

 应用场合

在某些情况下用于寻找连续日期中残缺的数据,可以先用笛卡尔积做一个排列组合,然后和目标表进行关联,以查询少了哪些数据。

例如:在一张考勤记录表中,记录了100个人在2018年8月的考勤信息,理论上这些人应该每天都有记录。但是实际上有的人在某些天上面的数据缺少了,然而不论是一天一天的查询,还是一个一个人的查询,都比较麻烦。

在这种情况下,可以针对每个人每一天做一个笛卡尔积处理。去除与实际表的关联,就很容易找出确实数据了。


 

                         AA                                                                                BB

      笛卡尔积图解[通俗易懂]                                                笛卡尔积图解[通俗易懂]

 

                              SELECT * FROM AA,BB ORDER BY a1,b1

                                                                                                                                                    CC

                                 笛卡尔积图解[通俗易懂]                           笛卡尔积图解[通俗易懂]

                                                                                                                            

                                                                     SELECT * FROM AA,BB,CC ORDER BY a1,b1,c1

                                                              笛卡尔积图解[通俗易懂]


左,右连接,内,外连接

l             内连接:

要点:返回的是所有匹配的记录。

  1. 2.         select * from aa,bb where aa.x = ba.x                                                 ////内连接

l             外连接有左连接和右连接两种。

要点:返回的是所有匹配的记录 外加 每行主表外键值为null的一条记录。辅表所有列为null值。

  1. select * from aa left join bb on aa.x=bb.x order by aa.x  //左外连接或称左连接
  2. select * from aa right join bb on aa.x=bb.x order by aa.x  //右外连接或称右连接

select子句顺序

子句

说明

是否必须使用

select

要返回的列或表示式

form

从中检索数据的表

仅在从表选择数据时使用

where

行级过滤

group by

分组说明

仅在按组计算聚集时使用

having

组级过滤

order by

输出排序顺序

limit

要检索的行数

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/157307.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 硬盘恢复分区_怎么把efi分区删掉

    硬盘恢复分区_怎么把efi分区删掉Windows系统在安装的时候,会自动为我们的磁盘划分一个恢复分区和一个EFI分区。如果后面不打算再用这些分区的时候,却发现无法删除。本文将提供解决方法。因为误操作会导致数据丢失,所以我将两种不同的解决方法分开成两篇文章以避免干扰:EFI分区/恢复分区不可删除?你需要使用命令行了(配合鼠标操作)EFI分区/恢复分区不可删除?你需要使用命令行了(全命令行操作)本文内容无法删…

  • R语言做文本挖掘 Part4文本分类

    R语言做文本挖掘 Part4文本分类

  • matlab画图透明度_css设置透明度

    matlab画图透明度_css设置透明度直接上代码b=bar(1:10);alpha(0.1)alpha-向坐标区的对象添加透明度,值越小越透明下有两图做example:参考资料:bar画的图怎么设置颜色为透明?

  • Pycharm-用鼠标滚轮放大缩小字体大小[通俗易懂]

    Pycharm-用鼠标滚轮放大缩小字体大小[通俗易懂]1,pycharm字体放大设置:①,File—>setting—>Keymap—>在搜寻框中输入:increase—>IncreaseFontSize(双击)—>在弹出的对话框中选择AddMouseShortcut②,在弹出的对话框中按住ctrl键,鼠标滚轮向上滑动后点击OK。2,Pycharm字体缩小设置:①,File—>setting—>Keymap—>在搜寻框中输入:decrease—>DecreaseFontSize(双击)—>在弹出的对

    2022年10月28日
  • tar命令的详解

    tar命令的详解

  • 优先队列的数据结构_低优先级队列一天只能一场

    优先队列的数据结构_低优先级队列一天只能一场目录一.PriorityQueuePriorityQueue简介继承关系PriorityQueue示例二.Comparable比较器Compara接口三.Comparator比较器Comparator接口四.底层原理一.PriorityQueuePriorityQueue简介PriorityQueue,即优先级队列。优先级队列可以保证每次取出来的元素都是队列中的最小或最大的元素<Java优先级队列默认每次取出来的为最小元素&gt.

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号