【注意】:Oracle数据库支持full join,mysql是不支持full join的,但仍然可以同过左外连接+ union+右外连接实现

初始化SQL语句:

  1.  
    /*join 建表语句*/
  2.  
    drop database if exists test;
  3.  
    create database test;
  4.  
    use test;
  5.  
     
  6.  
    /* 左表t1*/
  7.  
    drop table if exists t1;
  8.  
    create table t1 (id int not null,name varchar(20));
  9.  
    insert into t1 values (1,'t1a');
  10.  
    insert into t1 values (2,'t1b');
  11.  
    insert into t1 values (3,'t1c');
  12.  
    insert into t1 values (4,'t1d');
  13.  
    insert into t1 values (5,'t1f');
  14.  
     
  15.  
    /* 右表 t2*/
  16.  
    drop table if exists t1;
  17.  
    create table t2 (id int not null,name varchar(20));
  18.  
    insert into t2 values (2,'t2b');
  19.  
    insert into t2 values (3,'t2c');
  20.  
    insert into t2 values (4,'t2d');
  21.  
    insert into t2 values (5,'t2f');
  22.  
    insert into t2 values (6,'t2a');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

1、笛卡尔积

两表关联,把左表的列和右表的列通过笛卡尔积的形式表达出来。

mysql> select * from t1 join t2;
  • 1

2、左连接

两表关联,左表全部保留,右表关联不上用null表示。

mysql> select * from t1 left join t2 on t1.id = t2.id;
  • 1

3、右连接

右表全部保留,左表关联不上的用null表示。

mysql> select * from t1 right join t2 on t1.id =t2.id;
  • 1

4、内连接

两表关联,保留两表中交集的记录。

mysql> select * from t1 inner join t2 on t1.id = t2.id;
  • 1

5、左表独有

两表关联,查询左表独有的数据。

mysql> select * from t1 left join t2 on t1.id = t2.id where t2.id is null;
  • 1

6、右表独有

两表关联,查询右表独有的数据。

mysql> select * from t1 right join t2 on t1.id = t2.id where t1.id is  null;
  • 1

7、全连接

两表关联,查询它们的所有记录。

oracle里面有full join,但是在mysql中没有full join。我们可以使用union来达到目的。

  1.  
    mysql> select * from t1 left join t2 on t1.id = t2.id
  2.  
    -> union
  3.  
    -> select * from t1 right join t2 on t1.id = t2.id;
  • 1
  • 2
  • 3

8、并集去交集

两表关联,取并集然后去交集。

  1.  
    mysql> select * from t1 left join t2 on t1.id = t2.id where t2.id is null
  2.  
    -> union
  3.  
    -> select * from t1 right join t2 on t1.id = t2.id where t1.id is null;
  • 1
  • 2
  • 3

mysql中的几种join 及 full join问题的更多相关文章

  1. MySQL中的两种临时表

    MySQL中的两种临时表 伯乐在线2016-07-06 05:16:52阅读(4556)评论(3) 声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场.举报 ...

  2. MySQL 中的两种临时表

    来源:阿里云RDS - 数据库内核组 链接:http://mysql.taobao.org/monthly/2016/06/07/ 外部临时表 通过CREATE TEMPORARY TABLE 创建的 ...

  3. 浅谈SQL Server中的三种物理连接操作(HASH JOIN MERGE JOIN NESTED LOOP)

    简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge J ...

  4. mysql中的几种日志了解

    前言 MySQL中有以下日志文件,分别是: 1:重做日志(redo log) 2:回滚日志(undo log) 3:二进制日志(binlog) 4:错误日志(errorlog) 5:慢查询日志(slo ...

  5. mysql中的四种常用的引擎

    MySQL常用的引擎有:InnoDB存储引擎.MyISAM存储引擎.MEMORY存储引擎.Archive存储引擎 InnoDB存储引擎 InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID) ...

  6. 关于MySQL中的三种日期类型

    Mysql中我们经常用来存储日期的数据类型有三种:Date.Datetime.Timestamp. Date数据类型用来存储没有时间的日期.Mysql获取和显示这个类型的格式为"YYYY-M ...

  7. 【mysql】mysql中单列索引、联合索引、Join联表查询建立索引 和 EXPLAIN的分析使用

    2.创建联合索引,从坐到右分别为:userid.openId.name   2. #### --------------  多表联合查询 update 2019/03/13  ------------ ...

  8. mysql中select五种子句和统计函数

    select 五种子句顺序 where 条件 group by 分组 having 把结果进行再次筛选 order by  排序 limit  取出条目 统计函数  max(列名)  求最大 min( ...

  9. MySQL中四种隔离级别的演示

    事务的隔离是并发操作中需要理解清楚的问题.MySQL中共有4种不同的隔离级别,这4种隔离级别分别是: 隔离级别类型 影响结果 READ UNCOMMITTED(未提交读) 事务将会读取到未提交的数据, ...

随机推荐

  1. ansible 循环与条件判断when

    普通循环 with_itemes 变量组 { item } 循环变量 示例 - name: 覆盖配置文件 copy: src=/root/{{ item }} dest=/root/test/{{ i ...

  2. sudo权限管理

    sudo权限管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 好久没有更新关于命令的博客了,这也是这周工作,开发问了我一个问题,说caiq这个用户为什么不能用sudo权限,于是百 ...

  3. 函数和常用模块【day06】:random模块(三)

    本节内容 1.简述 2.random模块 3.string模块 4.生成随机数 一.简述 我们经常会使用一些随机数,或者需要写一些随机数的代码,今天我们就来整理随机数模块:random模块 二.ran ...

  4. Hbase记录-Hbase介绍

    Hbase是什么 HBase是一种构建在HDFS之上的分布式.面向列的存储系统,适用于实时读写.随机访问超大规模数据的集群. HBase的特点 大:一个表可以有上亿行,上百万列. 面向列:面向列表(簇 ...

  5. HDU - 3521 An easy Problem(矩阵快速幂)

    http://acm.hdu.edu.cn/showproblem.php?pid=3521 题意 对于矩阵A,求e^A的值. 分析 这个定眼一看好像很熟悉,就是泰勒展开,可惜自己的高数已经还给老师了 ...

  6. Codeforces 954 E. Water Taps

    http://codeforces.com/problemset/problem/954/E 式子变成Σ xi*(ti-T)=0 sum0表示>=T的ai*ti之和 sum1表示<T的ai ...

  7. SQL语句(一)SQL和数据库数据表的创建

    SQL的组成 (1) 数据定义语言DDL(Data Definition Language) 用于数据库和数据表的创建.修改和删除等操作 CREATE (create) 创建数据库.数据表 ALTER ...

  8. android 加载图片

    package mydemo.mycom.demo2; import android.graphics.Bitmap; import android.graphics.BitmapFactory; i ...

  9. python yield from

    def kk(): print (1) yield print (2) return 3 k=kk() def hello(k): print("Hello world!") r ...

  10. img格式镜像转ISO格式

    在做汇编学习时,需要用比较老的Windows XP来进行调试学习,因此找了最老的Windows XP(CN_WINXP_PRO_ISO,无SP版本 ),下载后发现镜像文件格式是img的,而virtua ...