前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >笛卡尔积图解[通俗易懂]

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

作者头像
全栈程序员站长
发布2022-09-08 10:38:04
2.5K0
发布2022-09-08 10:38:04
举报
文章被收录于专栏:全栈程序员必看

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

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

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.cn/157307.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 所谓笛卡尔积,通俗点说就是指包含两个集合中任意取出两个元素构成的组合的集合.
  • MySQL的多表查询(笛卡尔积原理)
    • 应用场合
      • 左,右连接,内,外连接
        • select子句顺序
        相关产品与服务
        云数据库 MySQL
        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档