美文网首页数据库
MySQL基础之Natural Join用法

MySQL基础之Natural Join用法

作者: smileNicky | 来源:发表于2019-11-10 15:33 被阅读0次

Natural join即自然连接,natural join等同于inner join或inner using,其作用是将两个表中具有相同名称的列进行匹配

https://www.w3resource.com的图例:

在这里插入图片描述

Natural join特征:

  • 关联的表具有一对或多对同名的列
  • 连接时候不需要使用on或者using关键字

建立两张表:

CREATE TABLE t1(id INT,desc1 VARCHAR(50),desc2 VARCHAR(50))ENGINE=INNODB;
CREATE TABLE t2(id INT,desc3 VARCHAR(50),desc4 VARCHAR(50))ENGINE=INNODB;

往两张表写数据:

INSERT INTO t1(id,desc1,desc2) VALUES(100,'desc11','desc12'),(101,'desc21','desc22'),(102,'desc31','desc32');
INSERT INTO t2(id,desc3,desc4) VALUES(101,'desc41','desc42'),(103,'desc51','desc52'),(105,'desc61','desc62');

内连接查询id相同的数据

SELECT t1.id,t2.id,desc1,desc2,desc3,desc4 FROM t1 INNER JOIN t2 ON t1.id = t2.id;

natural join连接查询的效果等同于如上sql

SELECT t1.id,t2.id,desc1,desc2,desc3,desc4 FROM t1 NATURAL JOIN t2;
在这里插入图片描述

ok,接着验证列类型不一样是否还可以继续关联,本博客只在mysql5.7版本验证


在这里插入图片描述

修改一下t1的id类型

ALTER TABLE t1 MODIFY id VARCHAR(50);

继续查询,用natural join,验证后发现还可以查询的

SELECT t1.id,t2.id,desc1,desc2,desc3,desc4 FROM t1 NATURAL JOIN t2;

用内连接的方法,ps:Oracle里id类型不一样(一个为int,一个为varchar)是会报错的,不过我在5.7版本验证,并没有报错

SELECT t1.id,t2.id,desc1,desc2,desc3,desc4 FROM t1 INNER JOIN t2 ON t1.id = t2.id;

所以,我怀疑是否因为sql_mode没有开启为严格模式导致的?

SET @session.sql_mode = 'STRICT_TRANS_TABLES';

开启严格模式,继续查询都没问题,所以mysql的语法还是相对没那么严格限制的

ok,综上,可以得出,natural join只是根据列的名称和数据进行关联而已,在5.7版本并没有限制要求列的类型要一样,而且natural join连接时候也不需要使用on或者using关键字

相关文章

  • MySQL基础之Natural Join用法

    Natural join即自然连接,natural join等同于inner join或inner using,其...

  • MySQL基础之STRAIGHT JOIN用法简介

    MySQL基础之STRAIGHT JOIN用法简介 引用mysql官方手册的说法: STRAIGHT_JOIN i...

  • SQL之链接查询

    NATURAL JOIN这个应该是oracle的用法,sql server里面不支持这种写法 INNER JOIN...

  • (十三)连接查询(join)

    内连接(inner join) 外连接(outer join) 自然连接(natural join) select...

  • SQL——连接表达式

    1、连接条件 前面中提到了自然连接(natural join),且使用了join……using子句,join-us...

  • MySQL的JOIN用法

    数据库中的JOIN称为连接,连接的主要作用是根据两个或多个表中的列之间的关系,获取存在于不同表中的数据。连接分为三...

  • join

    MySQL的JOIN(二):JOIN原理MySQL JOIN原理

  • MySQL基础-join

    前言 数据库作为储存数据的一个载体,我们通常把一些数据存在不同的表中,但是通常我们需要通过查询多张表来查询数据,这...

  • 索引相关优化(二)

    1、Join语句的优化 神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(一)神奇的 SQL 之...

  • 22 SQL99语法的新特性

    SQL99 在 SQL92 的基础上提供了一些特殊语法,比如 NATURAL JOIN 用来表示自然连接。我们可以...

网友评论

    本文标题:MySQL基础之Natural Join用法

    本文链接:https://www.haomeiwen.com/subject/kwrabctx.html