mysql语法中的join_MySQL JOIN 语法说明与 图解
一、MySQL JOIN 分类
JOIN 按照功能大致分为如下三类:
INNER JOIN(内连接):取得两个表中存在连接匹配关系的记录。
LEFT JOIN(左连接):取得左表(table1)完全记录,即是右表(table2)并无对应匹配记录。
RIGHT JOIN(右连接):与 LEFT JOIN 相反,取得右表(table2)完全记录,即是左表(table1)并无匹配对应记录。
二、图解关系
INNER JOIN:用于取得两个表中存在连接匹配关系的记录。
mysql> select * from a inner join score on a.sn=score.sn;
+----+---------+-------+----+-------+-------+
| id | name | sn | id | sn | score |
+----+---------+-------+----+-------+-------+
| 1 | mashen | 10086 | 1 | 10086 | 90 |
| 2 | haishen | 10087 | 2 | 10087 | 59 |
| 3 | haoge | 10088 | 3 | 10088 | 77 |
+----+---------+-------+----+-------+-------+
3 rows in set (0.24 sec)
mysql> select * from a join score on a.sn=score.sn;
+----+---------+-------+----+-------+-------+
| id | name | sn | id | sn | score |
+----+---------+-------+----+-------+-------+
| 1 | mashen | 10086 | 1 | 10086 | 90 |
| 2 | haishen | 10087 | 2 | 10087 | 59 |
| 3 | haoge | 10088 | 3 | 10088 | 77 |
+----+---------+-------+----+-------+-------+
3 rows in set (0.00 sec)
Inner join
产生的结果集中,是A和B的交集。
当2个关联表字段相同时候 也可以用using(sn),这样using 里的字段显示一次.....
mysql> select * from a join score using(sn);
+-------+----+---------+----+-------+
| sn | id | name | id | score |
+-------+----+---------+----+-------+
| 10086 | 1 | mashen | 1 | 90 |
| 10087 | 2 | haishen | 2 | 59 |
| 10088 | 3 | haoge | 3 | 77 |
+-------+----+---------+----+-------+
LEFT JOIN:产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代
mysql> select * from a left join score on a.sn=score.sn;
+----+-----------+-------+------+-------+-------+
| id | name | sn | id | sn | score |
+----+-----------+-------+------+-------+-------+
| 1 | mashen | 10086 | 1 | 10086 | 90 |
| 2 | haishen | 10087 | 2 | 10087 | 59 |
| 3 | haoge | 10088 | 3 | 10088 | 77 |
| 8 | left join | 11122 | NULL | NULL | NULL |
+----+-----------+-------+------+-------+-------+
4 rows in set (0.00 sec)
##产生在A表中有而在B表中没有的集合,在业务求新增的时候经常使用到的语法:
mysql> select * from a left join score on a.sn=score.sn where score.id is null;
+----+-----------+-------+------+------+-------+
| id | name | sn | id | sn | score |
+----+-----------+-------+------+------+-------+
| 8 | left join | 11122 | NULL | NULL | NULL |
+----+-----------+-------+------+------+-------+
1 row in set (0.01 sec)
##产生在b表中有而在a表中没有的集合,就是INNER JOIN
mysql> select * from a left join score on a.sn=score.sn where score.id is not null
+----+---------+-------+------+-------+-------+
| id | name | sn | id | sn | score |
+----+---------+-------+------+-------+-------+
| 1 | mashen | 10086 | 1 | 10086 | 90 |
| 2 | haishen | 10087 | 2 | 10087 | 59 |
| 3 | haoge | 10088 | 3 | 10088 | 77 |
+----+---------+-------+------+-------+-------+
RIGHT JOIN:产生表B的完全集,而A表中匹配的则有值,没有匹配的则以null值取代,与left join 相反.
mysql> select * from a right join score on a.sn=score.sn
-> ;
+------+---------+-------+----+-------+-------+
| id | name | sn | id | sn | score |
+------+---------+-------+----+-------+-------+
| 1 | mashen | 10086 | 1 | 10086 | 90 |
| 2 | haishen | 10087 | 2 | 10087 | 59 |
| 3 | haoge | 10088 | 3 | 10088 | 77 |
| NULL | NULL | NULL | 4 | 10089 | 77 |
| NULL | NULL | NULL | 5 | 10090 | 70 |
+------+---------+-------+----+-------+-------+
5 rows in set (0.00 sec)
##产生在b表中有而在a表中没有的集合,没有匹配显示null
mysql> select * from a right join score on a.sn=score.sn where a.id is null;
+------+------+------+----+-------+-------+
| id | name | sn | id | sn | score |
+------+------+------+----+-------+-------+
| NULL | NULL | NULL | 4 | 10089 | 77 |
| NULL | NULL | NULL | 5 | 10090 | 70 |
+------+------+------+----+-------+-------+
mysql语法中的join_MySQL JOIN 语法说明与 图解相关推荐
- mysql inner join_MySQL JOIN 语法说明与 INNER JOIN 语法用法实例
MySQL JOIN 语法概述 SQL(MySQL) JOIN 用于根据两个或多个表中的字段之间的关系,从这些表中得到数据. JOIN 通常与 ON 关键字搭配使用,基本语法如下: ... FROM ...
- markdown语法中的空格_Markdown语法简明教程
Copub 系统采用 Markdown 语法,本文可供快速入门.本文包含以下内容: 分段与分行 标题 文字样式 段落对齐 程序代码 分隔线 项目列表 表格 图像与链接 引用与说明 注释 编注 图题与表 ...
- mysql select语法_MySQL SELECT语法(一)SELECT语法详解
SELECT的语法如下: SELECT[ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT ...
- 如何查询MySQL表中的数据,这些操作你得明白!
前言 本节比较重要,对数据表数据进行查询操作,其中可能大家不熟悉的就对于INNER JOIN(内连接).LEFT JOIN(左连接).RIGHT JOIN(右连接)等一些复杂查询. 通过本节的学习,可 ...
- mysql left join_MySQL LEFT JOIN 语法用法与实例
MySQL LEFT JOIN 语法 SQL(MySQL) LEFT JOIN 会取得左表(table1)全部记录,即使右表(table2)并无对应匹配记录.LEFT JOIN 基本语法如下: ... ...
- 浅析Mysql Join语法以及性能优化
在讲MySQL的Join语法前还是先回顾一下联结的语法,呵呵,其实连我自己都忘得差不多了,那就大家一起温习吧,这里我有个比较简便的记忆方法,内外联结的区别是内联结将去除所有不符合条件的记录,而外联结则 ...
- mysql join null_Mysql Join语法以及性能优化
一.Join语法概述 join 用于多表中字段之间的联系,语法如下: 代码如下: FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona tabl ...
- [转]Mysql Join语法解析与性能分析
转自:http://www.cnblogs.com/BeginMan/p/3754322.html 一.Join语法概述 join 用于多表中字段之间的联系,语法如下: ... FROM table1 ...
- mysql join性能_Mysql Join语法解析与性能分析
一.Join语法概述 join 用于多表中字段之间的联系,语法如下: ... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1 ...
最新文章
- 阿里、腾讯美国员工基本年薪曝光,资深算法工程师24万美元,高级研究员26万美元
- Linux深入学习专业书
- java socket 缓冲_关于socket的发送缓冲区网上有诸多的讨论,这里个人小结一下,希望对以后有些帮助。首先,看下面一段代码,...
- 图片上传,CheckBox等用户控件的应用代码
- SSAS知识回放之订单数据分析
- JavaScript基础教程之flag的用法
- 有关“凸”方面的概念:凸(集/函数/优化/二次规划)
- 人人都能写游戏系列(三)Unity 3D平衡球游戏
- 图文详解双向链表原理
- http服务器究竟做了什么(一)
- NET 3行代码实现文字转语音功能
- python pydicom读取dicom文件信息的几种方式
- 福州大学计算机科学非全,福大数计/软件学院2020年招收非全日制专业硕士研究生调剂方案...
- maven项目中,添加依赖后,出现Dependency 'xxxx‘ not found解决过程
- SR研究(1)RCAN论文阅读上
- java 搜索 下拉列表框_用java编写随用户输入自动弹出下拉列表匹配项目,类似百度搜索...
- springboot中使用freemarker根据flt模板导出word、pdf文档
- Linux学习笔记之软件安装
- js 的对象--如何定义一个对象
- Nodejs koa2读取服务器图片返回给前端直接展示