酷站(www.ku0.com)-致力于为互联网从业者提供专业的网络资源资讯

热门关键词:  企业  as  baidu  c4rp3nt3r  美女

MySQL七种JOIN类型介绍

来源:转载 作者:秩名 人气: 发布时间:2021-10-22
本篇文章主要介绍了MySQL七种JOIN类型介绍,对大家的学习或者工作具有一定的参考学习价值,感兴趣的小伙伴们可以参考一下,也感谢大家对酷站(ku0.com)的支持。

在开始之前,我们创建两个表用于演示将要介绍的其中JOIN类型。

建表

CREATE TABLE `tbl_dept` (
   `id` INT(11) NOT NULL AUTO_INCREMENT,
   `deptName` VARCHAR(30) DEFAULT NULL,
   `locAdd` VARCHAR(40) DEFAULT NULL,
   PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
CREATE TABLE `tbl_emp` (
   `id` INT(11) NOT NULL AUTO_INCREMENT,
   `name` VARCHAR(20) DEFAULT NULL,
   `deptId` VARCHAR(11) NOT NULL,
   PRIMARY KEY (`id`),
   KEY `fk_dept_id` (`deptId`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

初始化数据

七种JOIN

1. A ∩ B

SELECT < select_list >
FROM TableA A
INNER JOIN TableB B # 共有
ON A.Key = B.Key

2. A ( = A ∩ B + A* )

SELECT < select_list >
FROM TableA A
LEFT JOIN TableB B
ON A.Key = B.Key

3. B ( = A ∩ B + B* )

SELECT < select_list >
FROM TableA A
RIGHT JOIN TableB B
ON A.Key = B.Key

4. A* ( = A - A ∩ B )

 

SELECT < select_list >
FROM TableA A
LEFT JOIN TableB B
ON A.Key = B.Key # ON时主表保留
WHERE B.Key IS NULL # 筛选A表数据

5. B* ( = B - A ∩ B )

SELECT < select_list >
FROM TableA A
RIGHT JOIN TableB B
ON A.Key = B.Key
WHERE A.Key IS NULL

6. A ∪ B

 

SELECT < select_list >
FROM TableA A
FULL OUTER JOIN TableB B ## FULL OUTER 仅oracle支持
ON A.Key = B.Key

 

7. A ∪ B - A ∩ B

SELECT < select_list >
FROM TableA A
FULL OUTER JOIN TableB B
ON A.Key = B.Key
WHERE A.Key IS NULL OR B.Key IS NULL

版权声明:本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 959677720#qq.cn(#换@) 举报,一经查实,本站将立刻删除。
原文链接:https://blog.csdn.net/qq_51026595/article/details/120895365

相关文章

  • Mysql实现数据同步到Elasticsearch的介绍

    Mysql实现数据同步到Elasticsearch的介绍

    一、同步原理 基于Mysql的binlog日志订阅:binlog日志是Mysql用来记录数据实时的变化,Mysql数据同步到ES中分为两种,分别是全量同步和增量同步,全量同步表示第一次建立好......
    11-24
  • MySQL数据库10秒内插入百万条数据的方法

    MySQL数据库10秒内插入百万条数据的方法

    首先我们思考一个问题: 要插入如此庞大的数据到数据库,正常情况一定会频繁地进行访问,什么样的机器设备都吃不消。那么如何避免频繁访问数据库,能否做到一次......
    10-31
  • MySQL数据库事务transaction示例介绍

    MySQL数据库事务transaction示例介绍

    1、什么是事务? 一个事务是一个完整的业务逻辑单元,不可再分。 比如:银行账户转账,从A账户向B账户转账10000,需要执行两条update语句: update t_act set balance=balance-......
    10-27
  • MySQL七种JOIN类型介绍

    MySQL七种JOIN类型介绍

    在开始之前,我们创建两个表用于演示将要介绍的其中JOIN类型。 建表 CREATE TABLE `tbl_dept` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `deptName` VARCHAR(30) DEFAULT NULL, `locAdd` VARCHAR(40) DEFAUL......
    10-22
  • MySQL索引下推的详细介绍

    MySQL索引下推的详细介绍

    前言: 索引下推(ICP)是针对MySQL使用索引从表中检索数据行的情况的优 在没有索引下推的情况下,MySQL通过存储引擎遍历索引来定位表中的数据行并将它们返回给MySQl服务......
    10-09
  • 解决MySql8.0查看事务隔离级别报错的问题

    解决MySql8.0查看事务隔离级别报错的问题

    ySql8.0 查看事务隔离级别报错 问题 数据库查看事务隔离级别 select @@global.tx_isolation,@@tx_isolation; 报错: mysql select @@global.tx_isolation,@@tx_isolation; ERROR 1193 (HY000): Unknown system ......
    10-09
  • mysql如何能有效防止删库跑路

    mysql如何能有效防止删库跑路

    大家肯定听说过,有些开发者由于个人失误,在delete或者update语句的时候没有添加where语句,导致整个表数据错乱。 mysql安全模式:mysql发现delete、update语句没有添加wher......
    10-05
  • Mysql binlog日志文件过大的解决方法

    Mysql binlog日志文件过大的解决方法

    磁盘突然报错使用率过大,排查原因,发现mysql的binlog文件占用过大 命令 ls -l -h mysql-binlog是MySQL数据库的二进制日志,用于记录用户对数据库操作的SQL语句((除了数据查......
    10-05
  • MySQL中limit对查询语句性能的影响

    MySQL中limit对查询语句性能的影响

    首先说明一下MySQL的版本: mysql select version();+-----------+| version() |+-----------+| 5.7.17 |+-----------+1 row in set (.00 sec) 表结构: mysql desc test;+--------+---------------------+------+-----+---......
    09-21
  • 为什么mysql自增主键不是连续的?

    为什么mysql自增主键不是连续的?

    提出这个问题,是因为在工作中发现 mysql 中的 user 表的 id 默认是自增的,但是数据库存储的结果却不是连续的。 user 表结构: CREATE TABLE `user` ( `id` bigint(20) unsigned NOT NU......
    09-05