mysql的natural join_MySQL基础之Natural Join用法
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关键字
本文分享 CSDN - smileNicky。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
mysql的natural join_MySQL基础之Natural Join用法相关推荐
- mysql natural join_MySQL STRAIGHT_JOIN 与 NATURAL JOIN
MySQL STRAIGHT_JOIN STRAIGHT_JOIN 是 MySQL 对标准 SQL 的扩展,用于在多表查询时指定表载入的顺序.在 JOIN 表连接中,同样可以指定表载入的顺序,本文只讲 ...
- mysql 一对多 join_Mysql中FIND_IN_SET与JOIN在一对多关系查询时的优劣
Mysql中的FIND_IN_SET函数在我知道它之前,我在做一个一对多的外键查询时,都会在中间设计一个关系表.比如一篇文章(post)对应多个标签(tag),我就会在中间设计一个关系表(post_t ...
- mysql 多 inner join_mySQL多个INNER JOIN
我们有三个表要查询,以查找每个企业的客户数和每个企业的记录数 这三个表是: businessDetails ------------------- businessDetails.ID busines ...
- 数据基础---mysql数据库操作(二)---JOIN用法
mysql的john用法总结 左"的笛卡尔积和"右"的笛卡尔积 根据mysql join 连接的方式我把它归为两类,"左"的笛卡尔积和"右& ...
- mysql rollup 排序_MySQL基础实用知识集合(二)
上期小编给大家汇总介绍了mysql的6个基础的知识点,下面继续给大家分享一下另外7个知识点: 7.什么是死锁?怎么解决? 死锁:两个或多个事务相互占用了对方的锁,就会一直处于等待的状态. 常见的解决死 ...
- MySQL增删改查基础知识
前几天学习了MySQL数据库的一些基础知识,了解了后台数据库的一些基础的数据操作:增删改查,对于项目前后台的数据传递有了些概念,总结了一些MySQL的基础语法. 一.数据存储形式发展和数据库作用 根据 ...
- mysql 联表比对,MySQL联表查询详解/超详细mysql left join,right join,inner join用法分析比较...
超详细mysql left join,right join,inner join用法分析 下面是例子分析 表A记录如下: aID aNum 1 a20050111 2 a20050112 3 a200 ...
- MySQL的初次见面礼基础实战篇
[版权申明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/61614366 出自[zejian ...
- 2.5.1 MySQL数据库备份恢复基础讲解
MySQL数据库备份恢复基础 MySQL常见的故障类型 对于用户来说,数据库中保存的数据通常至关重要,所以要采取各种手段来防止各种可能的数据损失和数据故障. DBA主要任务就是维持数据库的高可靠性运行 ...
最新文章
- 英文文献中的一些单词
- 对list中的元素按照元素的属性进行排序
- zcmu1203(逆序对,归并排序)
- 结合现有分布式系统的数据一致性思考
- codeforces1453 D. Checkpoints
- 自动驾驶芯片_自动驾驶芯片“争夺战”
- linux的多任务 多进程,浅谈linux模拟多线程崩溃和多进程崩溃
- 大数据可视化dataease(有所帮助)
- HDOJ 1007(T_T)
- appscan无法连接到服务器_和平精英无法连接到服务器是怎么回事 最新解决方案...
- apt update时出现签名无法验证,公钥失效的解决办法
- [www.infoshare.cc]【uiautomator】报告简介及查看
- SRA 案例:关于华为开发者联盟基础服务文档内容的改进建议(华为开发者联盟文档深度体验官)
- 《物联网Android程序开发案例式教程》Demo2:相对布局
- 【控制】《最优控制理论与系统》-胡寿松老师-目录
- 彻底解决pip下载pytorch慢的问题
- excel中如何解锁锁定单元格
- Linux 开始IntelCPU节能模式
- 王者荣耀与英雄联盟:如何解决玩家骂人的问题?
- 四周型文字环绕怎么设置_word怎样设置四周型版式
热门文章
- SAP Spartacus Page Layout学习笔记
- 用了四年的联想Thinkpad P50,今天还给公司了,拍个照留念
- 使用Angular CLI创建一个Hello World级别的Angular应用
- JSP导入XML不成功的一个原因
- SAP ABAP和Hybris Commerce的Sample数据
- 2015-03-17 how is task transaction type retrieved
- Fiori 里周期性检查window size大小的变化
- Uncaught SyntaxError - unexpected end of input
- request download - 两个队列的研究
- root cause of message type unknown during BP delta upload