mysqljoin默认是什么(mysql-joins具体用法说明)
mysqljoin默认是什么
mysql-joins具体用法说明目录
- Join 语法:
- 1、Inner JOIN: (内连接)
- 2、Left JOIN: (左连接)
- 3、Left Excluding JOIN: (左连接排除内连接结果)
- 4、Right JOIN: (右连接)
- 5、Right Excluding JOIN: (右连接排除内连接结果)
- 6、Outer JOIN: (外连接)
- 7、Outer Excluding JOIN: (外连接排除内连接结果)
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用法内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
原文链接:https://blog.csdn.net/apple_54172342/article/details/112276917
- mysql深度分页问题(MySQL DDL 引发的同步延迟该如何解决)
- mysql的索引及其介绍总结(浅析MysQL B-Tree 索引)
- mysql数据库间的连接(MySQL中表的几种连接方式)
- mysql记录binlog的方式(MySQL使用binlog日志做数据恢复的实现)
- centos7离线安装mysql5.7(CentOS7.5 安装MySql的教程)
- mysql 查询语句group by用法(MySQL group by和order by如何一起使用)
- mysql5.5.36版本介绍(WDCP控制面板升级mysql为5.7.11的方法)
- mysql xml转换json(Mysql将查询结果集转换为JSON数据的实例代码)
- apache2.4支持php5.5吗(WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置)
- mysql几种连接方式(简单谈谈mysql左连接内连接)
- docker进入mysql查看路径(Docker 环境运行 Mysql 和开启 Binlog 配置主从同步的设置方法)
- navicat连接mysql报1045(解决Navicat for MySQL 连接 MySQL 报2005错误的问题)
- 创建数据库入门教程mysql(MySQL数据库安装教程一学就会)
- mysql 快速迁移到历史表(MySQL 线上日志库迁移实例)
- mysql 建表命令注释(mysql alter table命令修改表结构实例详解)
- mysql8.0详解(MySQL 8.0 的 5 个新特性,太实用了!)
- 河南尉氏县因地制宜发展果蔬种植 水坡镇绿宝甜瓜变 金瓜(河南尉氏县因地制宜发展果蔬种植)
- 谢广坤,你这么欺负谢腾飞,良心不会痛吗(你这么欺负谢腾飞)
- 乡村爱情15 宋晓峰怀疑自己孩子,腾飞与姜奶奶亲子鉴定出结果(宋晓峰怀疑自己孩子)
- 《乡村爱情13》开播,新版刘能以假乱真,编剧思维进入瓶颈(新版刘能以假乱真)
- 当年的 白洋淀战神 练肌肉 嘎子哥也成为行走的荷尔蒙(当年的白洋淀战神)
- 肌肉小子陈康, 亚洲巨兽 黄哲勋,哪个才是你的菜(肌肉小子陈康亚洲巨兽)
热门推荐
- 云服务器无法操作(云服务器登录连接失败解决方案)
- tomcat在linux系统安装步骤(Tomcat的卸载和重装的实现图文)
- vuex怎么使用数据(vuex的辅助函数该如何使用)
- dedecms标签工具(开启DedeCMS软件源码及分类信息采集功能的方法)
- javascript如何建立一个静态变量(JavaScript中子函数访问外部变量的3种解决方法)
- wampserver怎么使用(wampserver怎么用?如何使用wampserver来配置本地php环境)
- idea安装mybatis(IDEA使用mybatis-generator及配上mysql8.0.3版本遇到的bug)
- python怎么用代码写出心形(六行python代码的爱心曲线详解)
- sql内连接和外连接(SQL左连接和右连接原理及实例解析)
- python中test函数用法(Python TestCase中的断言方法介绍)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9