我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql-joins具体用法说明

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql-joins具体用法说明

JOIN对于接触过数据库的人,这个词都不陌生,而且很多人很清楚各种JOIN,还有很多人对这个理解也不是很透彻。
假设我们有两个表,Table_A和Table_B。这两个表中的数据如下所示:


TABLE_A										|		 TABLE_B
 PK Value     	 				|   PK Value
---- ----------    				|   ---- ----------
 1 FOX     				|   1 TROT
 2 COP     				|   2 CAR
 3 TAXI     				|   3 CAB
 6 WASHINGTON    				|   6 MONUMENT
 7 DELL     				|   7 PC
 5 ARIZONA    				|   8 MICROSOFT
 4 LINCOLN    				|   9 APPLE
 10 LUCENT     				|   11 SCOTCH

Join 语法:


join_table:
 table_reference JOIN table_factor [join_condition]											//内连接
 | table_reference {LEFT|RIGHT|FULL} [OUTER] JOIN table_reference join_condition				//外连接
 | table_reference LEFT SEMI JOIN table_reference join_condition								//左半连接
 | table_reference CROSS JOIN table_reference [join_condition] (as of Hive 0.10)


table_reference:
 table_factor					//表
 | join_table						//join语句


table_factor:
 tbl_name [alias]				//表名[别名]
 | table_subquery alias			//子查寻[别名]
 | ( table_references )			//带空号的table_reference


join_condition:
 ON expression					//on开头的条件语句

1、Inner JOIN: (内连接)

在这里插入图片描述

这是最简单、最容易理解的连接,也是最常见的连接。此查询将返回左表(表A)中具有右表(表B)中匹配记录的所有记录。此连接写成如下:


SELECT <select_list> 
FROM Table_A A
INNER JOIN Table_B B
ON A.Key = B.Key

-- Inner JOIN
SELECT A.PK AS A_PK, A.Value AS A_Value,
  B.Value AS B_Value, B.PK AS B_PK
FROM Table_A A
INNER JOIN Table_B B
ON A.PK = B.PK

A_PK A_Value B_Value B_PK
---- ---------- ---------- ----
 1 FOX  TROT   1
 2 COP  CAR   2
 3 TAXI  CAB   3
 6 WASHINGTON MONUMENT  6
 7 DELL  PC   7

(5 row(s) affected)

2、Left JOIN: (左连接)

在这里插入图片描述

此查询将返回左表(表A)中的所有记录,而不管这些记录是否与右表(表B)中的任何记录匹配。它还将从正确的表中返回任何匹配的记录。此连接写成如下:


SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key

-- Left JOIN
SELECT A.PK AS A_PK, A.Value AS A_Value,
B.Value AS B_Value, B.PK AS B_PK
FROM Table_A A
LEFT JOIN Table_B B
ON A.PK = B.PK

A_PK A_Value B_Value B_PK
---- ---------- ---------- ----
 1 FOX  TROT   1
 2 COP  CAR   2
 3 TAXI  CAB   3
 4 LINCOLN NULL  NULL
 5 ARIZONA NULL  NULL
 6 WASHINGTON MONUMENT  6
 7 DELL  PC   7
 10 LUCENT  NULL  NULL

(8 row(s) affected)

3、Left Excluding JOIN: (左连接排除内连接结果)

此查询将返回左表(表A)中与右表(表B)中的任何记录都不匹配的所有记录。此连接写成如下:

在这里插入图片描述


SELECT <select_list> 
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
WHERE B.Key IS NULL

-- Left Excluding JOIN
SELECT A.PK AS A_PK, A.Value AS A_Value,
B.Value AS B_Value, B.PK AS B_PK
FROM Table_A A
LEFT JOIN Table_B B
ON A.PK = B.PK
WHERE B.PK IS NULL

A_PK A_Value B_Value B_PK
---- ---------- ---------- ----
 4 LINCOLN NULL  NULL
 5 ARIZONA NULL  NULL
 10 LUCENT  NULL  NULL
(3 row(s) affected)

4、Right JOIN: (右连接)

在这里插入图片描述

此查询将返回右表(表B)中的所有记录,而不管这些记录中是否有任何记录与左表(表A)中的记录相匹配。它还将返回左表中的任何匹配记录。此连接写成如下:


SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key

-- Right JOIN
SELECT A.PK AS A_PK, A.Value AS A_Value,
B.Value AS B_Value, B.PK AS B_PK
FROM Table_A A
RIGHT JOIN Table_B B
ON A.PK = B.PK

A_PK A_Value B_Value B_PK
---- ---------- ---------- ----
 1 FOX  TROT   1
 2 COP  CAR   2
 3 TAXI  CAB   3
 6 WASHINGTON MONUMENT  6
 7 DELL  PC   7
NULL NULL  MICROSOFT  8
NULL NULL  APPLE   9
NULL NULL  SCOTCH  11

(8 row(s) affected)

5、Right Excluding JOIN: (右连接排除内连接结果)

在这里插入图片描述

此查询将返回右表(表B)中与左表(表A)中的任何记录都不匹配的所有记录。此连接写成如下:


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

-- Right Excluding JOIN
SELECT A.PK AS A_PK, A.Value AS A_Value,
B.Value AS B_Value, B.PK AS B_PK
FROM Table_A A
RIGHT JOIN Table_B B
ON A.PK = B.PK
WHERE A.PK IS NULL

A_PK A_Value B_Value B_PK
---- ---------- ---------- ----
NULL NULL  MICROSOFT  8
NULL NULL  APPLE   9
NULL NULL  SCOTCH  11

(3 row(s) affected)

6、Outer JOIN: (外连接)

在这里插入图片描述

此联接也可以称为完全外联接或完全联接。此查询将返回两个表中的所有记录,连接左表(表A)中与右表(表B)中的记录相匹配的记录。此连接写成如下:


SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key

-- Outer JOIN
SELECT A.PK AS A_PK, A.Value AS A_Value,
B.Value AS B_Value, B.PK AS B_PK
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.PK = B.PK

A_PK A_Value B_Value B_PK
---- ---------- ---------- ----
 1 FOX  TROT   1
 2 COP  CAR   2
 3 TAXI  CAB   3
 6 WASHINGTON MONUMENT  6
 7 DELL  PC   7
NULL NULL  MICROSOFT  8
NULL NULL  APPLE   9
NULL NULL  SCOTCH  11
 5 ARIZONA NULL  NULL
 4 LINCOLN NULL  NULL
 10 LUCENT  NULL  NULL

(11 row(s) affected)

7、Outer Excluding JOIN: (外连接排除内连接结果)

在这里插入图片描述

此查询将返回左表(表A)中的所有记录和右表(表B)中不匹配的所有记录。我还不需要使用这种类型的联接,但所有其他类型的联接我都相当频繁地使用。此连接写成如下:


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

-- Outer Excluding JOIN
SELECT A.PK AS A_PK, A.Value AS A_Value,
B.Value AS B_Value, B.PK AS B_PK
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.PK = B.PK
WHERE A.PK IS NULL
OR B.PK IS NULL

A_PK A_Value B_Value B_PK
---- ---------- ---------- ----
NULL NULL  MICROSOFT  8
NULL NULL  APPLE   9
NULL NULL  SCOTCH  11
 5 ARIZONA NULL  NULL
 4 LINCOLN NULL  NULL
 10 LUCENT  NULL  NULL

(6 row(s) affected)

注意,在外部联接上,首先返回内部连接记录,然后返回右连接记录,最后返回左连接记录(至少,我的Microsoft SQL Server就是这样做的;当然,这不需要使用任何ORDERBY语句)。您可以访问维基百科文章以获得更多信息(但是,条目不是图形化的)。我还创建了一个备忘单,您可以在需要时打印出来。如果您右键单击下面的图像并选择“将目标保存为.”,您将下载完整大小的图像。

在这里插入图片描述

到此这篇关于mysql-joins具体用法说明的文章就介绍到这了,更多相关mysql-joins用法内容请搜索自学编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持自学编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql-joins具体用法说明

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql-joins具体用法说明

JOIN对于接触过数据库的人,这个词都不陌生,而且很多人很清楚各种JOIN,还有很多人对这个理解也不是很透彻。 假设我们有两个表,Table_A和Table_B。这两个表中的数据如下所示:TABLE_A | TABLE
2022-05-25

cmd del命令的说明和具体用法

这篇文章主要介绍“cmd del命令的说明和具体用法”,在日常操作中,相信很多人在cmd del命令的说明和具体用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”cmd del命令的说明和具体用法”的疑惑有所
2023-06-08

session的用法具体解说

Session是指在Web开发中,服务器与客户端之间的一种状态保持机制。它通过在服务器端存储和管理用户会话数据,使得服务器可以在多次请求之间保持用户的状态信息。具体使用Session的步骤如下:1. 客户端发起HTTP请求到服务器端。2.
2023-09-15

mysql 的indexof函数用法说明

如下所示: LOCATE(substr,str) 返回子串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0.mysql> select LOCATE('bar', 'foobarbar'); -> 4 m
2022-05-24

MySQL中Case When用法及说明

这篇文章主要介绍了MySQL中Case When用法及说明,具有很好的参考价值,希望对大家有所帮助。
2022-12-29

MySQL中Case When用法及说明

目录一、学生课程成绩统计1) 建表2) 插入数据3) 需求二、Case When Else End用法详解1) 更新2) 查询总结最近,在学习Hive基础知识时,遇到了遇到了Case When Else End语法,以前学习mysql时忽略
2022-12-29

MySQL之FIND_IN_SET()的用法及说明

目录一、语法二、用法三、用途举个例子一举个例子二总结一、语法FIND_IN_SET(str,strlist)str:要查询的字符串strList:一个被,号分隔开的字符串函数是返回strList中str所在的位置索引二、用法SELE
2023-01-06

MySQL中with rollup的用法及说明

这篇文章主要介绍了MySQL中with rollup的用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

【MySQL】MySQL的IFNULL()、ISNULL()、NULLIF()函数用法说明

文章目录 一、IFNULL() 函数二、ISNULL() 函数三、NULLIF() 函数四、总结五、相关推荐 一、IFNULL() 函数 MySQL IFNULL 函数是 MySQL 控制流函数之一。 它有两个参数,第一个参
2023-08-25

MySQL图形化管理工具的使用及说明

目录mysql 图形化管理工具的介绍1、MySQL Workbench2、Navicat3、SQLyogphp4、DBeaver5、DataGrip总结MySQL 图形化管理工具的介绍MySQL 图形化管理工具极大地方便了数据库的操作与管
2023-02-16

MySQL窗口函数OVER()用法及说明

目录mysql窗口函数OVER()下面的讲解将基于这个employee2表MySQL窗口函数OVER()下面的讲解将基于这个employee2表mysql> SELECT * FROM employee2;+----+---------
2022-08-19

mysql中全连接fulljoin...on...的用法说明

这篇文章主要介绍了mysql中全连接fulljoin...on...的用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-03-20

python的partial()用法说明

在functools模块中有一个工具partial(),可以用来"冻结"一个函数的参数,并返回"冻结"参数后的新函数。很简单的解释,也是官方手册给的示例。对于int()函数,它可以将给定的数值转换成十进制整数,转换时可以指定以几进制的方式解
2023-01-30

Mysql隔离性之Read View的用法说明

当前事务能读取到哪个历史版本? Read View是事务开启时,当前所有事务的一个集合,这个数据结构中存储了当前Read View中最大的ID及最小的ID。 这就是当前活跃事务列表,如下所示:ct-trx --> trx11 --> trx
2022-05-18

Class.forName()用法简介说明

Class.forName()是Java反射机制中的一个方法,它的作用是根据类的全限定名(包括包名和类名)动态加载类,返回对应的Class对象。它的用法如下:1. 静态方法:Class.forName(String className)这种
2023-09-09

编程热搜

目录