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

笛卡尔积图解[通俗易懂]所谓笛卡尔积,通俗点说就是指包含两个集合中任意取出两个元素构成的组合的集合. 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

要检索的行数

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Jenkins安装_ansible jenkins

    Jenkins安装_ansible jenkins前言jenkins的环境搭建方法有很多,本篇使用docker快速搭建一个jenkins环境。环境准备:mac/Linuxdockerdocker拉去jenkins镜像先下载jenkins镜

    2022年7月28日
    4
  • oracle数据库添加用户至dba_oracle取消用户dba权限

    oracle数据库添加用户至dba_oracle取消用户dba权限首先用管理员身份进入数据库SQLPLUSSYSTEM/密码sqlplussystem/diwaycom创建用户CREATEUSER用户名IDENTIFIEDBY密码;createuserdiwayidentifiedbydiwaycom;将刚创建的用户解锁ALTERUSER用户名ACCOUNTUNLOCK/LOCK;Alteruserdiwayaccount…

    2022年9月26日
    0
  • 某Java大佬在地表最强Java企业(阿里)面试总结

    面试题真的是博大精深,也通过这个面试题学到了很多东西,很多笔者也不是很懂,如有描述错误的地方还望大佬赐教HashMap和Hashtable的区别Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口。Hashtable中的方法是Synchronize的,而HashMap中的方法在缺省情况下是非Synchronize的。HashMap把Hashtable的contains方法去掉了,改成containsValue和contains.

    2022年4月7日
    43
  • 真封神虚拟服务器,服务器端文件详细介绍即修改(三)

    真封神虚拟服务器,服务器端文件详细介绍即修改(三)我们每星期加三个修改教程,废话不多说开始吧。1.打开服务器端,修改等级在version\chinese_gb\config的game_rule.ini可以设置最高等级和宝宝最高等级包括传送最高多钱。PK设置等等。这个相信大家一看就明白了。2.language这个文件夹属于指令的唯一能用的是W端可以读公告系统也就是点卡系统用公告修改器修改下能发公告这里就不多说了工具都是做好…

    2022年7月24日
    10
  • ubuntu下使用pip卸载包时出现Cannot uninstall scipy

    ubuntu下使用pip卸载包时出现Cannot uninstall scipyubuntu系统下使用pipuninstallscipy命令卸载包时,遇到报错信息为:ERROR:Cannotuninstall‘scipy’.Itisadistutilsinstalledprojectandthuswecannotaccuratelydeterminewhichfilesbelongtoitwhichwouldleadtoonlyapartialuninstall.最终发现通过以下方式可以解决:在/根目录下搜索“scip

    2022年10月17日
    0
  • cv.copyMakeBorder(imwrite opencv)

    文章目录参考依据设置边界框参数实例参考依据OpenCV-Python官方教程:https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_core/py_basic_ops/py_basic_ops.html设置边界框如果你想给你的图片设置边界框,就像一个相框一样的东西,你就可以使用cv2.copyMake…

    2022年4月14日
    80

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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