MySQL关联查询

在关系型数据库中,要进行多表查询,一般都会使用join连接。join连接的本质其实类似与集合的交并操作,Mysql实现关联查询常见的几种方式如下:

  1. 左连接
  2. 右连接
  3. 内连接
  4. 全连接
  5. 左外连接
  6. 右外连接
  7. 全外连接
    在这里插入图片描述
    本次测试表结构和数据:
    A:users
    在这里插入图片描述
    B:security
    在这里插入图片描述

1、左连接

左连接将左表A作为主表,右表B作为从表,左表作为外层循环,在右表中进行匹配,如果左表的记录在右表中没有匹配,则将该左表记录的右表项补空值;
在这里插入图片描述
语法关键字为 LEFT JOIN

select * from users left join security on users.id = security.id;

在这里插入图片描述

2、右连接

右连接将右表B作为主表,左表A作为从表,右表作为外层循环,在左表中进行匹配,如果右表的记录在左表中没有匹配,则将该右表记录的左表项补空值;
在这里插入图片描述
语法关键字为 RIGHT JOIN

select * from users right join security on users.id = security.id;

在这里插入图片描述

3、内连接

内连接将左表A和右表B对于条件相匹配的项进行组合,在结果中只会出现同时在左表和右表出现的项;
在这里插入图片描述
语法关键字为 INNER JOIN 或 JOIN(JOIN等价于INNER JOIN)

select * from users inner join security on users.id = security.id;

在这里插入图片描述

4、全连接

全外连接将左表A和右表B的所有记录进行匹配,如果在另外表项中不存在记录,则补空值;
在这里插入图片描述
语法关键字为 UNION 用来组合左连接和右连接

select * from users left join security on users.id = security.id union select * from users right join security on users.id = security.id;

在这里插入图片描述

5、左外连接

左外连接选择将左表A作为主表,右表B作为从表,循环遍历右表,查找与条件满足的项,如果在右表中没有匹配的项,则补空值,并且在结果集中选择只在左表中存在的数据;
在这里插入图片描述

左表A独有的数据

select * from users left join security on users.id = security.id where security.id is null;

在这里插入图片描述

6、右外连接

右外连接选择将右表作为主表,左表作为从表,循环遍历左表,查找与join条件满足的项,如果在左表中没有匹配的项,则补空值,并且在结果集中选择只在右表中存在的数据;
在这里插入图片描述
右表B独有的数据

select * from users right join security on users.id = security.id where users.id is null;

在这里插入图片描述

7、全外连接

全外连接将全连接中左右表相交的部分排除;
在这里插入图片描述
左表A和右表B独有的数据

select * from users right join security on users.id = security.id where users.id is null union select * from users left join security on users.id = security.id where security.id is null;

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL关联查询是一种在多个之间建立关联并检索相关数据的查询方式。MySQL关联查询的语法通常使用JOIN关键字将两个或多个连接在一起,根据指定的连接条件来获取相关的数据。 在MySQL中,关联查询可以通过使用内连接、外连接或交叉连接来实现不同类型的连接操作。内连接通过匹配两个之间的共同值来返回符合条件的数据。外连接可以返回不满足连接条件的记录,并将NULL值填充到相应的列中。而交叉连接则返回两个的所有可能组合。 关联查询可以在SELECT语句的FROM子句中使用子查询来实现更复杂的查询需求。子查询可以作为主查询的一部分,并且可以在WHERE子句、FROM子句、HAVING子句或SELECT子句中使用。 总结起来,MySQL关联查询是通过连接多个并根据指定的连接条件来检索相关数据的查询方式。它可以使用内连接、外连接或交叉连接,并且可以在主查询的不同位置嵌入子查询来实现更复杂的查询需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [《MySQL数据库关联查询](https://blog.csdn.net/qianfeng_dashuju/article/details/107099405)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

全栈游戏开发

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

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

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

打赏作者

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

抵扣说明:

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

余额充值