日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql的natural join_MySQL基础之Natural Join用法

發布時間:2023/12/19 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。