SQL自然连接剖析

JSON 2024-03-06 16:05:30 223

今天sojson给大家带来SQL自然连接的剖析,此篇文章会讲解什么是SQL自然连接,以及它和内连接的区别,还有一些示例代码。希望能帮助到你们!

SQL 中的自然连接是什么?

我们已经了解到,EQUI JOIN 对关联表的相等或匹配列值执行 JOIN,并且等号 (=) 在 where 子句中用作比较运算符来引用相等。SQL NATURAL JOIN 是 EQUI JOIN 的一种,其结构方式是关联表的同名列只会出现一次。

上述SQL Natural Join的图解展示:


自然连接:指南

- 关联的表具有一对或多对同名的列。

- 列必须具有相同的数据类型。

- 不要在自然连接中使用 ON 子句。

句法

SELECT *
FROM table1
NATURAL JOIN table2;

例子:

下面是两个表之间 SQL 自然连接的示例:

示例表:食品

+---------+--------------+-----------+------------+
| ITEM_ID | ITEM_NAME    | ITEM_UNIT | COMPANY_ID |
+---------+--------------+-----------+------------+
| 1       | Chex Mix     | Pcs       | 16         |
| 6       | Cheez-It     | Pcs       | 15         |
| 2       | BN Biscuit   | Pcs       | 15         |
| 3       | Mighty Munch | Pcs       | 17         |
| 4       | Pot Rice     | Pcs       | 15         |
| 5       | Jaffa Cakes  | Pcs       | 18         |
| 7       | Salt n Shake | Pcs       |            |
+---------+--------------+-----------+------------+
示例表:公司
+------------+---------------+--------------+
| COMPANY_ID | COMPANY_NAME  | COMPANY_CITY |
+------------+---------------+--------------+
| 18         | Order All     | Boston       |
| 15         | Jack Hill Ltd | London       |
| 16         | Akas Foods    | Delhi        |
| 17         | Foodies.      | London       |
| 19         | sip-n-Bite.   | New York     |
+------------+---------------+--------------+

要从 food 和 company 表中获取所有唯一列,可以使用以下 SQL 语句:

SQL代码:

SELECT *
FROM foods 
NATURAL JOIN company;

输出:

COMPANY_ID ITEM_ID    ITEM_NAME                 ITEM_UNIT  COMPANY_NAME              COMPANY_CITY
---------- ---------- ------------------------- ---------- ------------------------- --------------
16         1          Chex Mix                  Pcs        Akas Foods                Delhi
15         6          Cheez-It                  Pcs        Jack Hill Ltd             London
15         2          BN Biscuit                Pcs        Jack Hill Ltd             London
17         3          Mighty Munch              Pcs        Foodies.                  London
15         4          Pot Rice                  Pcs        Jack Hill Ltd             London
18         5          Jaffa Cakes               Pcs        Order All                 Boston

自然连接和内连接的区别

INNER JOIN 和 NATURAL JOIN 之间的一个显着区别是返回的列数。请参阅公司表和食品表上的以下示例:

SQL代码:

SELECT * 
FROM company;

输出:

COMPANY_ID COMPANY_NAME              COMPANY_CITY
---------- ------------------------- ---------------
18         Order All                 Boston
15         Jack Hill Ltd             London
16         Akas Foods                Delhi
17         Foodies.                  London
19         sip-n-Bite.               New York

SQL代码:

SELECT * 
FROM foods;

输出:

ITEM_ID ITEM_NAME ITEM_UNIT COMPANY_ID 
---------- ------------------------- ---------- - --------- 
1 Chex Mix Pcs 16 
6 Cheez-It Pcs 15 
2 BN Biscuit Pcs 15 
3 Mighty Munch Pcs 17 
4 Pot Rice Pcs 15 
5 Jaffa Cake Pcs 18 
7 Salt n Shake Pcs

company_id 上的公司和食品的 INNER JOIN 将返回:

SQL代码:

SELECT * 
FROM company 
INNER JOIN foods 
ON company.company_id = foods.company_id;

输出:

COMPANY_ID COMPANY_NAME    COMPANY_CITY    ITEM_ID    ITEM_NAME       ITEM_UNIT  COMPANY_ID
---------- --------------- --------------- ---------- --------------- ---------- ----------
16         Akas Foods      Delhi           1          Chex Mix        Pcs        16
15         Jack Hill Ltd   London          6          Cheez-It        Pcs        15
15         Jack Hill Ltd   London          2          BN Biscuit      Pcs        15
17         Foodies.        London          3          Mighty Munch    Pcs        17
15         Jack Hill Ltd   London          4          Pot Rice        Pcs        15
18         Order All       Boston          5          Jaffa Cakes     Pcs        18

SQL代码:

SELECT * 
FROM company
NATURAL JOIN foods;

输出:

COMPANY_ID COMPANY_NAME    COMPANY_CITY    ITEM_ID    ITEM_NAME       ITEM_UNIT
---------- --------------- --------------- ---------- --------------- ----------
16         Akas Foods      Delhi           1          Chex Mix        Pcs
15         Jack Hill Ltd   London          6          Cheez-It        Pcs
15         Jack Hill Ltd   London          2          BN Biscuit      Pcs
17         Foodies.        London          3          Mighty Munch    Pcs
15         Jack Hill Ltd   London          4          Pot Rice        Pcs
18         Order All       Boston          5          Jaffa Cakes     Pcs

版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/506.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:
SQL

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
SQL Server 对JSON的支持
记一次小失误导致的大事件,Mysql SQL Error: 0, SQLState: null 排查过程
Java获取浏览器请求头(User-Agent),分浏览器信息,系统信息的几种办法。
Java 完美解.plist & 生成plist ,Android 解.plist
Redis 单线程模型分
Java Redis线程池ShardedJedisPool 使用方法,Java Jedis连接池的使用
json 解与生成工具类 ,JSON操作讲解(附件)
如何解JSON数据(详细解答)
SEO实战分-排名最近突然掉光了问题排查,几个大站关键词下降SEO问题分
阿里云DNS 解讲解,SEO配置搜索引擎线路解
最新文章
Python print() 函数 21
PHP if/else/elseif 语句 81
HTML5 Canvas弧线教程 74
Java赋值运算符 118
XML内部实体和外部实体 217
Java面向对象编程概念 177
PHP回显语句 128
Linux—文件树 142
C语言while循环和do while循环 150
Python元组剖析 214
最热文章
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 682837
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 674741
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 603075
免费天气API,天气JSON API,不限次数获取十五天的天气预报 581363
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 553167
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 509466
Elasticsearch教程(四) elasticsearch head 插件安装和使用 480074
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 264931
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 244332
Elasticsearch教程(一),全程直播(小白级别) 225661
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...