SQL自然连接剖析

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

今天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非等值连接剖析
SQL全外连接剖析
SQL交叉连接剖析
SQL全外连接剖析
SQL非等值连接剖析
SQL交叉连接剖析
SQL等链接剖析
SQL等链接剖析
PHP变量剖析
Python元组剖析
最新文章
Linux I/O重定向 1767
Ruby 循环 - while、for、until、break、redo 和 retry 711
Node.js:全局对象 517
如何使用终端检查Linux上的内存使用情况 635
JavaScript对象详细剖析 300
Python print() 函数 409
PHP if/else/elseif 语句 407
HTML5 Canvas弧线教程 387
Java赋值运算符 431
XML内部实体和外部实体 464
最热文章
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 686836
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 675081
免费天气API,天气JSON API,不限次数获取十五天的天气预报 615785
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 611117
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 555623
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 510028
Elasticsearch教程(四) elasticsearch head 插件安装和使用 481399
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 269208
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 244787
Elasticsearch教程(一),全程直播(小白级别) 227489
支付扫码

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

查看我的收藏

正在加载... ...