日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

別只會(huì)寫(xiě) SELECT,這10個(gè) MySQL 技巧太香了

admin
2025年6月10日 9:55 本文熱度 278

前言

作為高頻操作MySQL的開(kāi)發(fā)者,我發(fā)現(xiàn)許多小伙伴仍停留在基礎(chǔ)的CRUD層面。今天將分享10個(gè)我在實(shí)際工作中高頻使用的MySQL技巧,這些技巧不僅提升了開(kāi)發(fā)效率,還能優(yōu)化查詢性能。學(xué)會(huì)它們,能讓你的SQL操作更優(yōu)雅、更高效!

目錄

  1. 使用JSON類型存儲(chǔ)靈活數(shù)據(jù)
  2. 使用WITH ROLLUP實(shí)現(xiàn)分組統(tǒng)計(jì)與總計(jì)
  3. 使用CASE WHEN進(jìn)行條件聚合統(tǒng)計(jì)
  4. 使用INSERT IGNORE避免重復(fù)插入
  5. 使用ON DUPLICATE KEY UPDATE實(shí)現(xiàn)upsert操作
  6. 使用FIND_IN_SET處理集合查詢
  7. 使用GROUP_CONCAT合并多行數(shù)據(jù)
  8. 使用EXISTS優(yōu)化子查詢性能
  9. 使用ROW_NUMBER()實(shí)現(xiàn)高效分頁(yè)
  10. 使用WITH子句簡(jiǎn)化復(fù)雜查詢

1. 使用JSON類型存儲(chǔ)靈活數(shù)據(jù)

場(chǎng)景:當(dāng)業(yè)務(wù)需求包含動(dòng)態(tài)擴(kuò)展字段(如用戶自定義配置)時(shí),傳統(tǒng)字段擴(kuò)展會(huì)導(dǎo)致表結(jié)構(gòu)臃腫。MySQL的JSON類型支持動(dòng)態(tài)鍵值對(duì)存儲(chǔ),完美解決此類問(wèn)題。

-- 創(chuàng)建用戶偏好表(JSON字段存儲(chǔ)動(dòng)態(tài)配置)  
CREATE TABLE user_preferences (  
  id INT PRIMARY KEY COMMENT '主鍵ID',  
  user_id INT COMMENT '用戶ID',  
  preferences JSON COMMENT '用戶偏好設(shè)置(JSON格式)'  
COMMENT '用戶偏好表';  

-- 插入測(cè)試數(shù)據(jù)  
INSERT INTO user_preferences VALUES  
(11'{"theme": "dark", "notifications": true, "fontSize": 14}'),  
(22'{"theme": "light", "notifications": false, "fontSize": 16}'),  
(33'{"theme": "dark", "notifications": true, "fontSize": 12}');  

-- 查詢指定用戶的主題配置(->符號(hào)提取JSON值)  
SELECT preferences->'$.theme' AS theme FROM user_preferences WHERE user_id = 1;  
-- 結(jié)果:"dark"  

2. 使用WITH ROLLUP進(jìn)行分組統(tǒng)計(jì)

場(chǎng)景:生成報(bào)表時(shí),不僅需要各分組數(shù)據(jù),還需總計(jì)行。WITH ROLLUP可在一次查詢中同時(shí)返回分組結(jié)果和全局匯總。

-- 統(tǒng)計(jì)各部門(mén)員工數(shù)、薪資總和及總計(jì)  
SELECT  
  department,  
  COUNT(*) AS employee_count,  
  SUM(salary) AS total_salary  
FROM employees  
GROUP BY department WITH ROLLUP;  

-- 結(jié)果示例:  
-- department | employee_count | total_salary  
-- 技術(shù)部       3              50000.00  
-- 市場(chǎng)部       2              25000.00  
-- 人事部       2              21000.00  
-- NULL         7              96000.00 (總計(jì)行)  

3. 使用CASE WHEN進(jìn)行條件統(tǒng)計(jì)

場(chǎng)景:按不同條件(如用戶狀態(tài)、訂單類型)統(tǒng)計(jì)數(shù)據(jù)時(shí),CASE WHEN可在單條查詢中完成多條件聚合。

-- 統(tǒng)計(jì)活躍/非活躍用戶數(shù)量  
SELECT  
  SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 ENDAS active_users,  
  SUM(CASE WHEN status = 'inactive' THEN 1 ELSE 0 ENDAS inactive_users  
FROM users;  

-- 結(jié)果示例:  
-- active_users | inactive_users  
-- 3            2  

4. 使用INSERT IGNORE避免重復(fù)插入

場(chǎng)景:批量導(dǎo)入數(shù)據(jù)時(shí),跳過(guò)已存在的記錄(基于唯一鍵),避免主鍵/唯一索引沖突報(bào)錯(cuò)。

-- 插入數(shù)據(jù),重復(fù)的id=1記錄會(huì)被跳過(guò),id=3正常插入  
INSERT IGNORE INTO users (idname, email) VALUES  
(1'張三''zhangsan@example.com'),  -- 重復(fù),跳過(guò)  
(3'王五''wangwu@example.com');     -- 新增,成功  

5. 使用ON DUPLICATE KEY UPDATE實(shí)現(xiàn)插入或更新

場(chǎng)景:需要根據(jù)唯一鍵(如用戶ID)實(shí)現(xiàn)“存在則更新,不存在則插入”的邏輯,替代傳統(tǒng)的先查詢?cè)俨僮鳌?/span>

-- 插入或更新用戶信息(基于id唯一鍵)  
INSERT INTO users (idname, email) VALUES  
(1'張三''zhangsan_new@example.com'),  -- 存在則更新  
(4'趙六''zhaoliu@example.com')         -- 不存在則插入  
ON DUPLICATE KEY UPDATE  
  name = VALUES(name),  
  email = VALUES(email);  

6. 使用FIND_IN_SET進(jìn)行集合查詢

場(chǎng)景:當(dāng)字段存儲(chǔ)逗號(hào)分隔的集合(如多分類ID)時(shí),快速查詢包含指定元素的記錄。

-- 查詢包含分類ID=1的商品  
SELECT * FROM products WHERE FIND_IN_SET('1', category_ids);  

-- 結(jié)果:商品A(1,2,3)、商品C(1,4)、商品E(1,5,6)  

7. 使用GROUP_CONCAT合并多行數(shù)據(jù)

場(chǎng)景:將分組后的多行數(shù)據(jù)合并為單個(gè)字符串(如部門(mén)員工列表、標(biāo)簽集合),簡(jiǎn)化應(yīng)用層拼接邏輯。

-- 按部門(mén)合并員工姓名(以逗號(hào)分隔)  
SELECT  
  department,  
  GROUP_CONCAT(name ORDER BY name SEPARATOR ', 'AS employees  
FROM employees  
GROUP BY department;  

-- 結(jié)果示例:  
-- 技術(shù)部 | 李四, 王五, 張三  

8. 使用EXISTS優(yōu)化子查詢

場(chǎng)景:替代低效的IN子查詢,判斷子查詢是否存在結(jié)果。尤其在大數(shù)據(jù)量時(shí),EXISTS性能更優(yōu)。

-- 查詢包含高價(jià)商品(價(jià)格>100)的訂單  
SELECT * FROM orders o  
WHERE EXISTS (  
  SELECT 1 FROM order_items oi  
  WHERE oi.order_id = o.id AND oi.price > 100  
);  

9. 使用ROW_NUMBER()實(shí)現(xiàn)分頁(yè)

場(chǎng)景:MySQL 8.0+支持的窗口函數(shù),通過(guò)行編號(hào)實(shí)現(xiàn)分頁(yè),邏輯清晰且性能穩(wěn)定。

-- 查詢第1-10條最新文章(按創(chuàng)建時(shí)間倒序)  
SELECT * FROM (  
  SELECT *, ROW_NUMBER() OVER (ORDER BY created_at DESCAS row_num  
  FROM articles  
) t  
WHERE row_num BETWEEN 1 AND 10;  

10. 使用WITH子句優(yōu)化復(fù)雜查詢

場(chǎng)景:將復(fù)雜查詢拆解為多個(gè)CTE(公共表表達(dá)式),提升可讀性和可維護(hù)性,類似“查詢中的變量定義”。

-- 統(tǒng)計(jì)用戶訂單數(shù)和總金額,再關(guān)聯(lián)用戶表  
WITH user_stats AS (  
  SELECT user_id, COUNT(*) AS order_count, SUM(amount) AS total_amount  
  FROM orders  
  GROUP BY user_id  
)  
SELECT u.name, us.order_count, us.total_amount  
FROM users u  
JOIN user_stats us ON u.id = us.user_id;  

結(jié)語(yǔ)

以上技巧均來(lái)自實(shí)際業(yè)務(wù)場(chǎng)景,兼具實(shí)用性和性能優(yōu)化價(jià)值。MySQL的強(qiáng)大不僅在于基礎(chǔ)功能,更體現(xiàn)在對(duì)復(fù)雜場(chǎng)景的靈活處理。建議在開(kāi)發(fā)中多嘗試這些特性,同時(shí)注意:

  • JSON類型適用于非高頻查詢的動(dòng)態(tài)數(shù)據(jù),高頻查詢字段仍建議獨(dú)立建表;
  • 窗口函數(shù)、CTE等功能需MySQL 8.0+支持,注意版本兼容性;
  • 復(fù)雜查詢建議結(jié)合執(zhí)行計(jì)劃(EXPLAIN)分析性能。

該文章在 2025/6/10 12:07:32 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

av不卡、| 国产做受 高潮91网址| 久久久久久久久久久久久黄色片| 密桃av色婷婷| 午夜福利555| 日韩欧美成人在线视频观看| 男人大鸡巴操骚女人骚逼| 扒开逼让男人插骚逼的免费视频| 日韩三级超碰在线播放| 亚州成人福利在线| 在线不卡的av网| 久国产ww| 偷拍一区二区视频下载久久| 人人操夜日| heyzo无码播放| AV色天天天天干| 欧美首页成人在线播放| 国产AV福利福利| 中文无码3区| 亚洲欧美日韩美女图片自拍一区| 美女老师日逼视频网站| 久久久久久逼逼逼| 日韩亚洲国产麻豆精品尤物| 欧美插射视频在线播放 | 十大黄片免费色天堂| 一区二区三区亚洲搭讪| 欧美日本久久图片| 少妇人妻偷人精品一区二区| 日韩精品美女网站| 一区二区三区 最全最新高清| 136人妻在线| 天天黄片片| 久久久久久久久久96| 美女尤物一区二区三| 欧美淫片一区二区| 欧美精品少妇入内| 日韩精品中文字幕人妻中岀| 国产乱抢av无码| 国产一级内射中出| 国产人妖二区| 欧美亚洲图片72P|