【注意】: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. getComponent()与getSource()

    Component[] items = 父控件.getComponents(); 获取父控件里的控件,返回Component类的数组.如panel中的许多buttone.getSource() 获取发 ...

  2. mac java jdk 安装删除

    安装: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载安装双击安装 卸载: ...

  3. python自动化运维之路~DAY2

    python自动化运维之路~DAY2 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符编码与转码 1.什么是编码. 基本概念很简单.首先,我们从一段信息即消息说起,消息以人类 ...

  4. 多目标遗传算法 ------ NSGA-II (部分源码解析) 实数、二进制编码的变异操作 mutation.c

    遗传算法的变异操作 /* Mutation routines */ # include <stdio.h> # include <stdlib.h> # include < ...

  5. 缓存穿透、雪崩、热点与Redis

    (拼多多问:Redis雪崩解决办法) 导读:互联网系统中不可避免要大量用到缓存,在缓存的使用过程中,架构师需要注意哪些问题?本文以 Redis 为例,详细探讨了最关键的 3 个问题. 一.缓存穿透预防 ...

  6. 14. Spring Boot的 thymleaf公共页抽取

    5).CRUD-员工列表实验要求:1).RestfulCRUD:CRUD满足Rest风格:URI: /资源名称/资源标识 HTTP请求方式区分对资源CRUD操作   普通CRUD(uri来区分操作) ...

  7. JavaScript之小工具之日志log()[兼容]

    function log(){ try{ console.log.apply(console,arguments); }catch(e){ try{ opera.postError.apply(ope ...

  8. luogu P2508 [HAOI2008]圆上的整点

    传送门 推荐去bzoj看个视频了解一下 不要妄想视频直接告诉你题解 但是视频告诉了你后面要用的东西 首先我们要求的是\(x^2+y^2=n^2(x,y\in Z)\)的\((x,y)\)对数,可以转化 ...

  9. yo install generator-gulp-react遇到UNMET PEER DEPENDENCY问题

    最近在用yeoman下载下来的框架配置react环境 yo install generator-gulp-react安装框架包 遇到了 UNMET PEER DEPENDENCY问题 找不到依赖的gu ...

  10. HTML5中<template>标签的详细介绍

    HTML5中<template>标签的详细介绍(图文) 这篇文章主要介绍了HTML5中的template标签,是HTML5入门中的重要知识,需要的朋友可以参考 一.HTML5 templa ...