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

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


相关推荐

  • 手机APP测试(测试点、测试流程、功能测试)

    手机APP测试(测试点、测试流程、功能测试)1、功能测试1.1启动APP安装完成后,是否可以正常打开,稳定运行APP的速度是可以让人接受,切换是否流畅网络异常时,应用是否会崩溃:在请求超时的情况下,如果程序逻辑处理的不好,就有可能发生

    2022年7月3日
  • 少儿编程scratch 教程下载(少儿编程scratch 教程)

    少儿编程管理系统的设计和所有网站设计一样,都是基于web端内网和外网的开发,而这里使用的工具是PHP。这里的外网就是学生端,是对外公开的。供学生观看教学视频,写作业和提交作业,创作作品和分享作品使用。内网就是教师端,不对外公开。供教师管理学生账号(修改信息,添加或删除),班级,作业(批量设置评语,批量提交作业给家长等),管理/山川课程和备课。(可以上传教学视频,可以上传学生文件,编辑课程介绍和插图、课件等。)学生端教师端系统为SaaS源码:可以拥有永久使用,没有门店和用户数量限制,数据加密.

    2022年4月13日
  • select into from 与 insert into select用法详解

    select into from 与 insert into select用法详解selectintofrom和insertintoselect都被用来复制表结构和表中数据,两者的主要区别为:selectintofrom要求目标表不存在,因为在插入时会自动创建。insertintoselectfrom要求目标表已存在数据库中。一、INSERTINTOSELECT语句  1、语句形式为:

    2022年7月15日
  • 将图片转换为Base64编码字符串、解析Base64编码字符串后生成图片「建议收藏」

    将图片转换为Base64编码字符串、解析Base64编码字符串后生成图片「建议收藏」代码publicclassTest{publicstaticvoidmain(String[]args){//测试1:将图片转换成base64编码字符串Stringcode=imgToCode(“C:\\Users\\mingming\\Pictures\\Screenshots\\1.png”);System.out.println(“生成的base64编码字符串是:”+code);//测试

    2022年7月13日
  • STM32CubeMX学习–(5)SPI读写W25Q128

    CUBE配置SPI配置引脚配置参数配置点击生成代码代码修改 uint8_tData1[4]={0x90,0x00,0x00,0x00}; uint8_tData2[2]={0x00,0x00}; uint8_tRxData[2]={0x00,0x00};/****************************/while(1){ HAL_GP…

    2022年4月13日
  • python中取整数的方法(python中取整符号)

    Python中的round()有两个参数,第一个参数是需要处理的数,第二个参数是数位精度,默认为0。round(3.4)##3round(3.5)##4而有时候会出现奇怪的情况,比如:round(3.24,1)#是四舍五入##3.2round(3.26,1)#是四舍五入##3.3round(3.25,1)#不是四舍五入##3.2######################…

    2022年4月12日

发表回复

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

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