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

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


相关推荐

  • IDEA2021.1 安装教程

    IDEA2021.1 安装教程工欲善其事必先利其器。一、下载IDEA官方下载地址:https://www.jetbrains.com/zh-cn/idea/download/二、安装IDEA注:安装IDEA之前需要我们机器上有JDK环境!!!双击打开安装即可:三、IDEA快速入门双击打开IntelliJIDEA2021.1.1×64:1、使用IDEA创建一个普通javase项目。2、使用IDEA创建一个maven项目。.

    2022年6月15日
    169
  • html简单登录页面代码[通俗易懂]

    html简单登录页面代码[通俗易懂]图片必须是在Imges下的否则显示不出来(复制代码的话把图片换成你的图片就好了)代码如下<html><head><title>tes

    2022年6月13日
    27
  • BigDecimal类的简单使用方法

    BigDecimal类的简单使用方法

    2021年12月14日
    50
  • 谷歌为什么被中国赶出去_护士失误事件

    谷歌为什么被中国赶出去_护士失误事件

    腾讯科技讯(中涛)北京时间12月22日消息,美国知名IT杂志《eWeek》网络版今天刊文称,虽然谷歌多项产品在2010年期间取得了市场成功,但同样也出现了不少市场失误。不仅如此,由于谷歌知名度的提高,该公司还遭到了欧盟等监管部门的反垄断调查。《eWeek》为此评出了谷歌2010年十大产品失误和开局不利事件,其中包括谷歌街景收集用户上网隐私信息受指责、Buzz社交网络服务遭批评、没能成功收购美国团购网站Groupon等等。
    《eWeek》认为,在谷歌创建以来的12年当中,20

    2022年10月9日
    3
  • python-PyPDF2

    python-PyPDF2作用:处理PDF文档提取文本,旋转页面,叠加页面1.pdfFileObj=open(‘meetingminutes.pdf’,’rb’)#打开pdf文档2.pdfReader=PyPDF2.PdfFileReader(pdfFileObj)#获取pdf文档数据3.pdfReader.numPages#获取页数4.pageObj=pdfReader.getPage(0)#获取指定页码的内…

    2022年6月23日
    30
  • shell:修改变更值[通俗易懂]

    shell:修改变更值[通俗易懂]#catconfd-general-config.confETCD_SERVER_HOSTIP=192.168.3.103ETCD_SERVER_PORT=2379innernetworksegement=192.168.3pgconn=10.47.245.110:13306,10.47.245.110:23306kafkaconn=10.47.223.223:9090,10…

    2022年7月11日
    26

发表回复

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

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