内连接,外连接,左连接,右连接,全连接

测试数据:

CREATE TABLE `a_table` (

`a_id` int(11) DEFAULT NULL,

`a_name` varchar(10) DEFAULT NULL,

`a_part` varchar(10) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into a_table values(1,"老潘","总裁部"),(2,"老王","秘书部"),(3,"老张","设计部"),(4,"老李","运营部");

select * from a_table;

create table `b_table` (

`b_id` int(11) DEFAULT NULL,

`b_name` varchar(10) DEFAULT NULL,

`b_part` varchar(10) DEFAULT NULL

)ENGINE = INNODB DEFAULT CHARSET = utf8;

insert into b_table values(2,"老王","秘书部"),(3,"老张","设计部"),(5,"老刘","人事部"),(6,"老黄","生产部");

select * from b_table;

内连接 :

inner join...on

join...on

cross join...on

以上三种都是内连接语法

mysql> select * from a_table;

+------+--------+-----------+

| a_id | a_name | a_part |

+------+--------+-----------+

| 1 | 老潘 | 总裁部 |

| 2 | 老王 | 秘书部 |

| 3 | 老张 | 设计部 |

| 4 | 老李 | 运营部 |

+------+--------+-----------+

4 rows in set (0.00 sec)

mysql> select * from b_table;

+------+--------+-----------+

| b_id | b_name | b_part |

+------+--------+-----------+

| 2 | 老王 | 秘书部 |

| 3 | 老张 | 设计部 |

| 5 | 老刘 | 人事部 |

| 6 | 老黄 | 生产部 |

+------+--------+-----------+

4 rows in set (0.00 sec)

# 内连接

mysql> select * from a_table a inner join b_table b on a.a_id=b.b_id;

+------+--------+-----------+------+--------+-----------+

| a_id | a_name | a_part | b_id | b_name | b_part |

+------+--------+-----------+------+--------+-----------+

| 2 | 老王 | 秘书部 | 2 | 老王 | 秘书部 |

| 3 | 老张 | 设计部 | 3 | 老张 | 设计部 |

+------+--------+-----------+------+--------+-----------+

2 rows in set (0.02 sec)

# 同时可以使用以下的三种方法:

mysql> select * from a_table, b_table where a_table.a_id = b_table.b_id;

mysql> select * from a_table a cross join b_table b on a.a_id=b.b_id;

mysql> select * from a_table a join b_table b on a.a_id=b.b_id;

组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。

左连接(左外连接)

left join ... on ...

mysql> select * from a_table;

+------+--------+-----------+

| a_id | a_name | a_part |

+------+--------+-----------+

| 1 | 老潘 | 总裁部 |

| 2 | 老王 | 秘书部 |

| 3 | 老张 | 设计部 |

| 4 | 老李 | 运营部 |

+------+--------+-----------+

4 rows in set (0.00 sec)

mysql> select * from b_table;

+------+--------+-----------+

| b_id | b_name | b_part |

+------+--------+-----------+

| 2 | 老王 | 秘书部 |

| 3 | 老张 | 设计部 |

| 5 | 老刘 | 人事部 |

| 6 | 老黄 | 生产部 |

+------+--------+-----------+

4 rows in set (0.00 sec)

# 左连接

mysql> select * from a_table a left join b_table b on a.a_id=b.b_id;

+------+--------+-----------+------+--------+-----------+

| a_id | a_name | a_part | b_id | b_name | b_part |

+------+--------+-----------+------+--------+-----------+

| 2 | 老王 | 秘书部 | 2 | 老王 | 秘书部 |

| 3 | 老张 | 设计部 | 3 | 老张 | 设计部 |

| 1 | 老潘 | 总裁部 | NULL | NULL | NULL |

| 4 | 老李 | 运营部 | NULL | NULL | NULL |

+------+--------+-----------+------+--------+-----------+

4 rows in set (0.04 sec)

说明:left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。 左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。

右连接(右外连接)

right join ... on ...

mysql> select * from a_table;

+------+--------+-----------+

| a_id | a_name | a_part |

+------+--------+-----------+

| 1 | 老潘 | 总裁部 |

| 2 | 老王 | 秘书部 |

| 3 | 老张 | 设计部 |

| 4 | 老李 | 运营部 |

+------+--------+-----------+

4 rows in set (0.00 sec)

mysql> select * from b_table;

+------+--------+-----------+

| b_id | b_name | b_part |

+------+--------+-----------+

| 2 | 老王 | 秘书部 |

| 3 | 老张 | 设计部 |

| 5 | 老刘 | 人事部 |

| 6 | 老黄 | 生产部 |

+------+--------+-----------+

4 rows in set (0.00 sec)

mysql> select * from a_table a right join b_table b on a.a_id=b.b_id;

+------+--------+-----------+------+--------+-----------+

| a_id | a_name | a_part | b_id | b_name | b_part |

+------+--------+-----------+------+--------+-----------+

| 2 | 老王 | 秘书部 | 2 | 老王 | 秘书部 |

| 3 | 老张 | 设计部 | 3 | 老张 | 设计部 |

| NULL | NULL | NULL | 5 | 老刘 | 人事部 |

| NULL | NULL | NULL | 6 | 老黄 | 生产部 |

+------+--------+-----------+------+--------+-----------+

4 rows in set (0.00 sec)

说明:right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。 与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。

union

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

mysql> select * from a_table;

+------+--------+-----------+

| a_id | a_name | a_part |

+------+--------+-----------+

| 1 | 老潘 | 总裁部 |

| 2 | 老王 | 秘书部 |

| 3 | 老张 | 设计部 |

| 4 | 老李 | 运营部 |

+------+--------+-----------+

4 rows in set (0.00 sec)

mysql> select * from b_table;

+------+--------+-----------+

| b_id | b_name | b_part |

+------+--------+-----------+

| 2 | 老王 | 秘书部 |

| 3 | 老张 | 设计部 |

| 5 | 老刘 | 人事部 |

| 6 | 老黄 | 生产部 |

+------+--------+-----------+

4 rows in set (0.00 sec)

mysql> select * from a_table union select * from b_table;

+------+--------+-----------+

| a_id | a_name | a_part |

+------+--------+-----------+

| 1 | 老潘 | 总裁部 |

| 2 | 老王 | 秘书部 |

| 3 | 老张 | 设计部 |

| 4 | 老李 | 运营部 |

| 5 | 老刘 | 人事部 |

| 6 | 老黄 | 生产部 |

+------+--------+-----------+

6 rows in set (0.00 sec)

一张表中显示了两张表的数据(不重复的数据),先查询的表,其结果放在前面。

union all

mysql> select * from a_table;

+------+--------+-----------+

| a_id | a_name | a_part |

+------+--------+-----------+

| 1 | 老潘 | 总裁部 |

| 2 | 老王 | 秘书部 |

| 3 | 老张 | 设计部 |

| 4 | 老李 | 运营部 |

+------+--------+-----------+

4 rows in set (0.00 sec)

mysql> select * from b_table;

+------+--------+-----------+

| b_id | b_name | b_part |

+------+--------+-----------+

| 2 | 老王 | 秘书部 |

| 3 | 老张 | 设计部 |

| 5 | 老刘 | 人事部 |

| 6 | 老黄 | 生产部 |

+------+--------+-----------+

4 rows in set (0.00 sec)

mysql> select * from a_table union all select * from b_table;

+------+--------+-----------+

| a_id | a_name | a_part |

+------+--------+-----------+

| 1 | 老潘 | 总裁部 |

| 2 | 老王 | 秘书部 |

| 3 | 老张 | 设计部 |

| 4 | 老李 | 运营部 |

| 2 | 老王 | 秘书部 |

| 3 | 老张 | 设计部 |

| 5 | 老刘 | 人事部 |

| 6 | 老黄 | 生产部 |

+------+--------+-----------+

8 rows in set (0.00 sec)

一张表中显示了两张表的所有数据,先查询的表,其结果放在前面。

mysql内外三种连接_mysql之内连接,外连接(左连接,右连接),union,union all的区别...相关推荐

  1. mysql内外三种连接,Mysql的内外连接方式

    Mysql有很多种连接方式,其中有两大主要连接方式:内连接和外连接,其中外连接又可以分为左外连接和右外连接: 对于这三种连接方式,如何判断何时使用一直困扰着我,这里就做一下自己的总结: 1.内连接:I ...

  2. 数据库内、外、左、右连接详解

    写在前面: 数据库连接操作非常重要,明确连接操作有助于更好地掌握SQL语句查询操作. 数据库连表方式: 内连接 :inner join 外连接 :outer join 左外连接 :left outer ...

  3. java连接MySQL几种方法_Java连接MySQL数据库三种方法

    好久没有更新博客了!今天利用周目时学习了一下数据库mysql.介绍一下数据库的三种连接方式! 开发工具:Myeclipse MySQL5.6 MySQL连接驱动:mysql-connector-jav ...

  4. 精华推荐 | 【MySQL技术专题】「主从同步架构」全面详细透析MySQL的三种主从复制(Replication)机制的原理和实战开发(原理+实战)

    前提概要 随着应用业务数据不断的增大,应用的响应速度不断下降,在检测过程中我们不难发现大多数的请求都是查询操作.此时,我们可以将数据库扩展成主从复制模式,将读操作和写操作分离开来,多台数据库分摊请求, ...

  5. 了解mysql的三种不同安装方式的区别

    学习目的:了解mysql的三种不同安装方式的区别 学习内容: mysql 的安装有三种:分别是源码安装.二进制安装.rpm安装. 源码安装的优势:linux操作系统开放源代码,因此在其上面安装的软件大 ...

  6. mysql添加两种数据类型_MySQL入门(二) 数据库数据类型详解

    序言 今天去健身了,感觉把身体练好还是不错的,闲话不多说,把这个数据库所遇到的数据类型今天统统在这里讲清楚了,以后在看到什么数据类型,咱度应该认识,对我来说,最不熟悉的应该就是时间类型这块了.但是通过 ...

  7. mysql 的三种循环操作 while do ... end while 循环 loop ... end loop 循环 repeat ... end repeat 循环

    mysql 的三种循环操作 while do ... end while 循环 loop ... end loop 循环 repeat ... end repeat 循环 blog.csdn.net/ ...

  8. 路由 php mysql_Php 连接 MySQL 的三种方式

    PHP与MySQL的连接有三种API接口 分别是:PHP的MySQL扩展 .PHP的mysqli扩展 .PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案. P ...

  9. node连接MySQL的三种方式

    以下我们将说明node连接数据库的三种方式,并进行利弊说明,以挑选出最适合项目的连接方式. 1.使用mysql包的提供的接口进行连接 例如: connection.query('SELECT * FR ...

最新文章

  1. hook NtTerminateProcess进行应用的保护
  2. 三种方法实现CSS三栏布局
  3. c语言单链表_C语言笔试题—单链表逆序
  4. SQL基本语句及用法
  5. ES6新特性之class类的基本语法
  6. 听红宝书译者谈Web视角下的前端开发
  7. 数据恢复-SQL被注入攻击程序的应对策略(ORA-16703)
  8. php布尔类型代码,PHP数据类型之布尔型的介绍
  9. 极简代码(二)—— 转置 list of lists
  10. Linq无聊练习系列7----Insert,delete,update,attach操作练习
  11. Shiro 放行Swagger
  12. 【PID优化】基于蝙蝠 粒子群 花卉授粉算法和布谷鸟搜索算法实现热交换器的PI控制器优化
  13. 求偏导c语言,求偏导是什么?有什么用法?请举例说明。
  14. python函数——Bunch配置加载
  15. AopAutoConfiguration matched的异常
  16. 轻量化规划调度引擎——OptaPlanner简介
  17. C语言之用循环来打印各种各样的图案
  18. 南阳oj入门题-A+B Problem
  19. 人工智能——搜索策论2
  20. Linux/macOS 命令符列表

热门文章

  1. springboot导入项目依赖报错_如何解决spring boot 项目导入依赖后代码报错问题
  2. C++判断函数执行效率方法封装
  3. DTrace Tools
  4. tcmalloc内存分配器分析笔记:基于gperftools-2.4
  5. 编译原理:利用yacc/bison进行语法分析
  6. vue接收jsp发送的post请求_vue与后台交互之post用法
  7. nodejs图片读取
  8. oc引导windows蓝屏_Win10开机蓝屏无法启动?不急,教你一招轻松解决,无需重装系统...
  9. 堆积柱形图显示总数_送你一份堆积柱形图小点心,请收下~
  10. firefox驱动_零适配 + 全兼容!龙芯电脑推出办公外设利旧通用解决方案:运行原生 Windows 驱动程序...