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索引使用策略分析)
- mysql删除的delete怎么找回(MySQL Delete 删数据后磁盘空间未释放的原因)
- centos安装mysql8.0教程(Centos7 安装 Mysql8教程)
- SQL SERVER与MySQL数据类型的对应关系
- 如何用wampserver打开自己写的php(WampServer下安装多个版本的PHP、mysql、apache图文教程)
- mysql程序中判断select返回空值(解决MySQL读写分离导致insert后select不到数据的问题)
- mysql 建表命令注释(mysql alter table命令修改表结构实例详解)
- mysql数据库与表的基本操作总结(Mysql、Oracle中常用的多表修改语句总结)
- mysql对大表千万级如何优化(MySQL 大表的count优化实现)
- mysql随机获取数据
- mysql备份工具怎么选(MySQL使用Xtrabackup备份流程详解)
- mysql3种日志(mysql中的7种日志小结)
- mysql字段多有什么问题(MySQL编码不一致可能引起的一些问题)
- mysql变量技巧(mysql用户变量与set语句示例详解)
- mysqldump属于哪种备份(MySQLDump的备份小技巧)
- mysql char和varchar区别(MySQL CHAR和VARCHAR存储、读取时的差别)
- 金品公司 界界乐中秋限定飞行棋礼盒 露营藤篮礼盒全新上市(界界乐中秋限定飞行棋礼盒)
- 必看 8月,相比七夕,更需要注意的是这些事(必看8月相比七夕)
- 8月23日11时16分将迎处暑,逐渐进入气象意义上的秋天(8月23日11时16分将迎处暑)
- 花不语 下 如果重来一次的话,你还会这么选择吗(花不语下如果重来一次的话)
- 城市记忆之上海 最难忘的是老弄堂里的市井味道(城市记忆之上海)
- 太鸡贼了,这老小区轻松搞定了停车问题(这老小区轻松搞定了停车问题)
热门推荐
- mysql安装详解(MySQL Router的安装部署)
- asp.net 消息队列
- php redis配置(php+redis实现消息队列功能示例)
- Javascript中apply、call、bind
- $(function(){ }) 与window.onload的区别
- dedecms安全设置(织梦dedecms站点data目录位置变动调整验证码不显示的解决办法)
- sqlserver字段增加删减(关于SQL Server中bit类型字段增删查改的一些事)
- nginx启动报错连接失败(宝塔面板Nginx环境中出现404 Not Found的解决方法)
- python类的init方法(Python操作配置文件ini的三种方法讲解)
- centos如何安装mysql8.0版本(Centos7下安装MySQL8.0.23的步骤小白入门级别)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9