【MySQL篇】多表查询

在实际开发当中,数据量往往会比较大,往往会涉及到多张表,也就意味着要从多张表中查询数据,这里会涉及到多表关系,此篇博客也是建立在了解了多表关系之后的。


前言

此篇为个人初期笔记
如有错误,请兄弟们指正。

多表查询就是在单表的基础上加上一个表,然后会出现一个问题,就是查询的数据和想要的数据不一致,这被称作笛卡尔积,我们现在的目的就是消除无效的笛卡尔积,在原先的语句基础上加上一个条件即可。

1.内连接

  • 查询俩张表交集部分的数据

a>隐式内连接

SELECT 字段列表 FROM 表1,表2 WHERE 条件…

b>显式内连接

SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON连接条件…

2.外连接

a>左外连接

  • 查询左表以及交际部分的数据

  • SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件;

b>右外连接

  • 查询右表以及交集部分的数据

  • SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件;

3.自连接

  • 俩张相同的表进行连接查询

  • SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件;

  • 自连接查询,可以是内连接,也可以是外连接。

4.联合查询

把多次查询的结果合并起来,形成一个新的查询结果集

  • union:去重
  • union all :不去重

注意:

  • 对联合查询的多张表的列数必须保持一致,字段类型也需要保持一致

5.子查询

a>概念

  • sql语句中嵌套sql语句
  • 子查询外部的语句可以是:INSERT / UPDATE / DELETE / SELECT

b>分类

  • 按查询结果
  1. 标量子查询

    使用的关键字:
    =、<、>、>、>=、<、<=

  2. 列子查询

    子查询返回的结果为多列
    使用的关键字:
    IN:多选一

    NOT IN:不能为这些值

    ANY :只要满足一个就行

    SOME:只要满足一个即可

    ALL:所有都得满足

  3. 行子查询

    子查询返回的结果为多行
    使用的关键字:
    =、<、>、IN、NOT IN

  4. 表子查询

    子查询返回的结果为多行多列

    IN

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小B学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值