首页
/
每日頭條
/
生活
/
mysql基本總結
mysql基本總結
更新时间:2026-03-08 08:41:21

mysql基本總結?作者:楊濤濤資深數據庫專家,專研 mysql 十餘年擅長 MySQL、PostgreSQL、MongoDB 等開源數據庫相關的備份恢複、SQL 調優、監控運維、高可用架構設計等目前任職于愛可生,為各大運營商及銀行金融企業提供 MySQL 相關技術支持、MySQL 相關課程培訓等工作,現在小編就來說說關于mysql基本總結?下面内容希望能幫助到你,我們來一起看看吧!

mysql基本總結(新特性解讀MySQL)1

mysql基本總結

作者:楊濤濤

資深數據庫專家,專研 mysql 十餘年。擅長 MySQL、PostgreSQL、MongoDB 等開源數據庫相關的備份恢複、SQL 調優、監控運維、高可用架構設計等。目前任職于愛可生,為各大運營商及銀行金融企業提供 MySQL 相關技術支持、MySQL 相關課程培訓等工作。

本文來源:原創投稿

*愛可生開源社區出品,原創内容未經授權不得随意使用,轉載請聯系小編并注明來源。


MySQL 8.0 最新小版本(8.0.31)支持标準SQL 的intersect(交集)和except(差集)操作。

交集: 也就是返回兩個結果集的相交部分,也即左側和右側同時存在的記錄。

差集:也就是返回兩個結果集中左側存在同時右側不存在的記錄。

之前在做其他數據庫往MySQL遷移的時候,經常遇到這樣的操作。由于MySQL 一直以來不支持這兩類操作符,一般得想辦法避開或者是通過其他方法來實現。

比如在MySQL 5.7.x 中,想要實現如下兩個需求:

第一、求表t1和表t2的交集,并且結果要去重;

第二、求表t1和表t2的差集,并且結果也要去重。

簡單創建表t1、表t2,并且插入幾條樣例數據:

<mysql:5.7.34:(ytt)> create table t1(c1 int); Query OK, 0 rows affected (0.02 sec) <mysql:5.7.34:(ytt)> create table t2 like t1; Query OK, 0 rows affected (0.02 sec) <mysql:5.7.34:(ytt)> insert t1 values (10),(20),(20),(30),(40),(40),(50); Query OK, 7 rows affected (0.00 sec) Records: 7 Duplicates: 0 Warnings: 0 <mysql:5.7.34:(ytt)> insert t2 values (10),(30),(30),(50),(50),(70),(90); Query OK, 7 rows affected (0.02 sec) Records: 7 Duplicates: 0 Warnings: 0 <mysql:5.7.34:(ytt)> select * from t1; ------ | c1 | ------ | 10 | | 20 | | 20 | | 30 | | 40 | | 40 | | 50 | ------ 7 rows in set (0.00 sec) <mysql:5.7.34:(ytt)> select * from t2; ------ | c1 | ------ | 10 | | 30 | | 30 | | 50 | | 50 | | 70 | | 90 | ------ 7 rows in set (0.00 sec)

我們來實現這兩個需求:

  1. 求去重後的交集: 兩表内聯、去重!

<mysql:5.7.34:(ytt)> select distinct t1.c1 from t1 join t2 using(c1); ------ | c1 | ------ | 10 | | 30 | | 50 | ------ 3 rows in set (0.00 sec)

  1. 求去重後的差集:兩表左外聯,去重,并且保留右表關聯鍵為NULL的記錄。

<mysql:5.7.34:(ytt)> select distinct t1.c1 from t1 left join t2 using(c1) where t2.c1 is null; ------ | c1 | ------ | 20 | | 40 | ------ 2 rows in set (0.00 sec)

在最新版本MySQL 8.0.31中,直接用intersect 和except兩個新操作符即可,寫起來非常簡單。

創建好同樣的表結構和數據,用intersect來求交集:

<mysql:8.0.31:(ytt)>table t1 intersect table t2; ------ | c1 | ------ | 10 | | 30 | | 50 | ------ 3 rows in set (0.00 sec)

用except來求差集:

<mysql:8.0.31:(ytt)>table t1 except table t2; ------ | c1 | ------ | 20 | | 40 | ------ 2 rows in set (0.00 sec)

intersect 和except操作符默認去重。比如需要保留原始結果,則可以帶上all 關鍵詞: 如下求兩表差集的結果會保留所有符合條件的記錄。

<mysql:8.0.31:(ytt)>table t1 except all table t2; ------ | c1 | ------ | 20 | | 20 | | 40 | | 40 | ------ 4 rows in set (0.00 sec)

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
qq換不了頭像怎麼辦
qq換不了頭像怎麼辦
1、格式不對的原因更換不了。首先你更換的頭像的圖片查看是不是圖片的格對,在查看你的圖不是過大導緻更換...
2026-03-08
美人蕉花養殖方法是什麼
美人蕉花養殖方法是什麼
1、宜盆深大土疏松:美人蕉系塊根植物,用盆宜深大些,可用直徑3040厘米的瓦盆。适應性強,不擇土,以種植在肥沃疏松排水良好的沙質壤土中生長最佳,可用腐葉土與菜園土等量混合再摻少量沙做培養土。種植時宜深栽,覆土68厘米。盆底放一層碎硬塑料泡沫塊,以利透氣排水脫盆。每年春季換盆換土一次。2、适度進水勤施...
2026-03-08
兒童床的最新款式有哪些
兒童床的最新款式有哪些
第一、全實木子母床。這種兒童床的功能比較多,能讓孩子可以獨立起來的同時,還能很好的保護他們的安全。而且這種床一般搭配了書櫃,很容易獲得孩子和家長的一緻喜愛。第二、汽車型兒童床。如果你家裡的孩子是一個超愛車的男寶寶的話,買這樣的床回家,孩子肯定很喜歡自己一個人睡在床上。這種床可以自由移動,還能放在家長...
2026-03-08
蠶絲被怎麼洗滌和保養方法
蠶絲被怎麼洗滌和保養方法
1、洗滌蠶絲被的水溫應在30度以下,在水中浸泡時間不能超過五分鐘,用手輕柔搓洗,漂清,洗後不可絞擰,最後将蠶絲被放于陰涼處晾幹即可。2、不要存放于潮濕悶熱的環境,以防蠶絲受潮,從而産生異味,失去保暖性和透氣性。避免重壓,被子上面不要疊重物,以免變薄變硬。3、蠶絲被芯外面應該套上被套才能使用,否則被芯容易沾染灰塵和污漬。4、新做的蠶絲被有股蠶蛹的味道,放在通風的地方吹兩天即可。蠶絲被不能長時間曝曬,
2026-03-08
紅蝦尾怎麼做好吃
紅蝦尾怎麼做好吃
1、準備蝦尾,這是剛買回來,還沒解凍,被冰塊包裹着的蝦尾。2、準備蔥,姜,蒜,幹辣椒,豆瓣醬,火鍋底料,麻椒,桂皮,香葉,草果,白糖。3、蝦尾放入冷水中解凍,用清水搓洗。最後撒點白酒,靜置一會兒,再用清水沖洗兩三遍。4、蔥切段,姜切片,蒜拍碎,熱油中爆炒5、煸炒出香味後,加入幹辣椒。6、倒進蝦尾,快...
2026-03-08
Copyright 2023-2026 - www.tftnews.com All Rights Reserved