欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL 中的 UPDATE 語句詳解

 更新時間:2025年05月20日 15:59:17   作者:BirdMan98  
UPDATE 語句用于修改表中的數(shù)據(jù),可以更新單行或多行數(shù)據(jù),下面給大家介紹MySQL 中的 UPDATE 語句,感興趣的朋友一起看看吧

MySQL 中的 UPDATE 語句

UPDATE 語句用于修改表中的數(shù)據(jù),可以更新單行或多行數(shù)據(jù)。

1. UPDATE 語法

UPDATE 表名
SET 列1 = 值1, 列2 = 值2, ...
WHERE 條件;

? 注意

  • 必須加 WHERE,否則會修改所有行。
  • SET 后可同時更新多個字段。
  • WHERE 用于篩選需要更新的記錄。

2. 基本 UPDATE

示例

(1) 更新單個字段

UPDATE users
SET age = 30
WHERE id = 1;

解釋

id = 1age 更新為 30。

(2) 更新多個字段

UPDATE users
SET age = 30, city = 'Shanghai'
WHERE id = 1;

解釋

id = 1age 改為 30,city 改為 'Shanghai'。

(3) 更新所有行(小心使用!)

UPDATE users SET status = 'inactive';

? 危險

  • 沒有 WHERE,會更新整個表!
  • status 字段的所有數(shù)據(jù)都變成 'inactive'

如何防止誤操作?

先用 SELECT 檢查更新范圍

SELECT * FROM users WHERE status = 'active';

開啟事務(wù)(如果支持)

START TRANSACTION;
UPDATE users SET status = 'inactive';
ROLLBACK;  -- 取消
COMMIT;    -- 確認(rèn)更新

3. UPDATE 結(jié)合 WHERE 條件

(1) 使用 = 精確匹配

UPDATE users SET age = 25 WHERE name = 'Alice';

更新 name = 'Alice' 的用戶的 age25

(2) 使用 ANDOR

UPDATE users
SET status = 'inactive'
WHERE age > 30 AND city = 'Beijing';

更新 age > 30 且 city = 'Beijing' 的用戶。

UPDATE users
SET status = 'inactive'
WHERE age > 50 OR city = 'Shanghai';

更新 age > 50city = 'Shanghai' 的用戶。

(3) 使用 IN

UPDATE users
SET vip_status = 'gold'
WHERE id IN (1, 2, 3, 5);

更新 id(1,2,3,5) 里的用戶。

(4) 使用 BETWEEN

UPDATE users
SET level = 'senior'
WHERE age BETWEEN 30 AND 40;

更新 age30-40 之間的用戶。

(5) 使用 LIKE

UPDATE users
SET department = 'Tech'
WHERE email LIKE '%@gmail.com';

更新所有 email@gmail.com 結(jié)尾的用戶。

4. UPDATE 結(jié)合 JOIN

批量更新數(shù)據(jù),通過 JOIN 關(guān)聯(lián)兩個表:

UPDATE users u
JOIN orders o ON u.id = o.user_id
SET u.vip_status = 'gold'
WHERE o.total_amount > 1000;

解釋

  • users 表和 orders 表通過 user_id 關(guān)聯(lián)。
  • 當(dāng)用戶的 total_amount > 1000 時,更新 users.vip_status'gold'。

5. UPDATE 結(jié)合 CASE(條件更新)

UPDATE users
SET vip_status = 
    CASE 
        WHEN age > 50 THEN 'platinum'
        WHEN age BETWEEN 30 AND 50 THEN 'gold'
        ELSE 'silver'
    END;

解釋

  • age > 50platinum
  • age 在 30-50 之間 → gold
  • 其他情況 → silver

6. UPDATE 結(jié)合 LIMIT

如果一次只想修改 部分?jǐn)?shù)據(jù)

UPDATE users SET status = 'inactive' ORDER BY id ASC LIMIT 10;

解釋

  • 只更新 前 10 行 數(shù)據(jù)(按 id 升序排序)。
  • 適用于大表分批更新。

7. UPDATE 結(jié)合 ORDER BY

更新時,按特定順序處理數(shù)據(jù):

UPDATE users SET rank = rank + 1 ORDER BY age DESC;

解釋

age 從大到小更新 rank。

8. UPDATE 批量替換字段

(1) 替換部分字符串

UPDATE users
SET email = REPLACE(email, 'gmail.com', 'yahoo.com')
WHERE email LIKE '%gmail.com';

解釋

email 里的 gmail.com 替換為 yahoo.com。

(2) 拼接字符串

UPDATE users
SET username = CONCAT(username, '_new');

解釋

username 末尾加 _new

9. UPDATE 事務(wù)控制

如果 UPDATE 可能影響多行數(shù)據(jù),建議使用事務(wù)

START TRANSACTION;
UPDATE users SET balance = balance - 100 WHERE id = 1;
UPDATE users SET balance = balance + 100 WHERE id = 2;
COMMIT;

如果失敗,可回滾

ROLLBACK;

10. 防止 UPDATE 影響整個表

為了防止忘記 WHERE 語句,可以開啟 safe updates

SET SQL_SAFE_UPDATES = 1;

如果更新時沒加 WHERE,會報錯:

ERROR 1175 (HY000): You are using safe update mode...

關(guān)閉(僅當(dāng)必要時):

SET SQL_SAFE_UPDATES = 0;

總結(jié)

用法說明示例
更新單列修改一個字段UPDATE users SET age = 30 WHERE id = 1;
更新多列同時修改多個字段UPDATE users SET age = 30, city = 'Shanghai' WHERE id = 1;
批量更新更新多個匹配行UPDATE users SET status = 'inactive' WHERE age > 30;
UPDATE ... JOIN關(guān)聯(lián)更新UPDATE users u JOIN orders o ON u.id = o.user_id SET u.vip_status = 'gold' WHERE o.total_amount > 1000;
UPDATE ... CASE條件更新UPDATE users SET vip_status = CASE WHEN age > 50 THEN 'platinum' ELSE 'silver' END;
UPDATE ... LIMIT限制更新行數(shù)UPDATE users SET status = 'inactive' ORDER BY id ASC LIMIT 10;
UPDATE ... REPLACE替換字段內(nèi)容UPDATE users SET email = REPLACE(email, 'gmail.com', 'yahoo.com');

?? 重點

  • 一定要加 WHERE,避免誤更新所有數(shù)據(jù)!
  • 批量更新大表時,分批更新 (LIMIT),避免鎖表。
  • 用 CASE 進行條件更新,提高靈活性。
  • 涉及多個表時,用 JOIN 更新數(shù)據(jù)。
  • 大規(guī)模更新前,先 SELECT 預(yù)覽結(jié)果。

這樣,你的 UPDATE 語句就能又快又安全!??

到此這篇關(guān)于MySQL 中的 UPDATE 語句的文章就介紹到這了,更多相關(guān)mysql update語句內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談MySQL數(shù)據(jù)庫中日期中包含零值的問題

    淺談MySQL數(shù)據(jù)庫中日期中包含零值的問題

    下面小編就為大家?guī)硪黄獪\談MySQL數(shù)據(jù)庫中日期中包含零值的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • 使用RPM包安裝MySQL 5.7.18的教程

    使用RPM包安裝MySQL 5.7.18的教程

    這篇文章主要介紹了使用RPM包安裝MySQL 5.7.18的教程,需要的朋友可以參考下
    2017-04-04
  • MySQL表分區(qū)的幾種實現(xiàn)

    MySQL表分區(qū)的幾種實現(xiàn)

    本文主要介紹了MySQL表分區(qū)的幾種實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • MySQL服務(wù)器線程數(shù)的查看方法詳解

    MySQL服務(wù)器線程數(shù)的查看方法詳解

    這篇文章主要介紹了MySQL服務(wù)器線程數(shù)的查看方法,結(jié)合實例形式分析了mysql線程數(shù)查看的相關(guān)命令、配置、參數(shù)及相關(guān)使用技巧,需要的朋友可以參考下
    2018-03-03
  • 在?CentOS?7?下如何使用?Ansible?Playbook?實現(xiàn)?MySQL?8.0.34?的二進制安裝

    在?CentOS?7?下如何使用?Ansible?Playbook?實現(xiàn)?MySQL?8.0.34?的

    要在?CentOS?7?下使用?Ansible?Playbook?實現(xiàn)?MySQL?8.0.34?的二進制安裝,需要先下載?MySQL?8.0.34?的二進制包,并將其上傳至目標(biāo)服務(wù)器,對MySQL?8.0.34?二進制安裝過程感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • MySQL入門(三) 數(shù)據(jù)庫表的查詢操作【重要】

    MySQL入門(三) 數(shù)據(jù)庫表的查詢操作【重要】

    本節(jié)比較重要,對數(shù)據(jù)表數(shù)據(jù)進行查詢操作,其中可能大家不熟悉的就對于INNER JOIN(內(nèi)連接)、LEFT JOIN(左連接)、RIGHT JOIN(右連接)等一些復(fù)雜查詢。 通過本節(jié)的學(xué)習(xí),可以讓你知道這些基本的復(fù)雜查詢是怎么實現(xiàn)的,,需要的朋友可以參考下
    2018-07-07
  • 詳細聊一聊mysql的樹形結(jié)構(gòu)存儲以及查詢

    詳細聊一聊mysql的樹形結(jié)構(gòu)存儲以及查詢

    由于mysql是關(guān)系型數(shù)據(jù)庫,因此對于類似組織架構(gòu),子任務(wù)等相關(guān)的樹形結(jié)構(gòu)的處理不是很友好,下面這篇文章主要給大家介紹了關(guān)于mysql樹形結(jié)構(gòu)存儲以及查詢的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • MySQL報錯Failed to open the referenced table XXX問題

    MySQL報錯Failed to open the referenced&nbs

    在數(shù)據(jù)庫操作中,嘗試刪除外鍵約束表'master_role'時遇到錯誤碼3730,因其被'user_role'表中的外鍵'fk_user_role'引用,解決方法包括關(guān)閉外鍵檢查和刪除外鍵,阿里巴巴開發(fā)手冊和知乎回答指出,外鍵雖能維護數(shù)據(jù)一致性
    2024-11-11
  • Mysql的timestamp時間戳詳解及2038問題

    Mysql的timestamp時間戳詳解及2038問題

    本文主要介紹了Mysql的timestamp時間戳詳解及2038問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • MySQL內(nèi)存使用率高且不釋放問題排查與總結(jié)

    MySQL內(nèi)存使用率高且不釋放問題排查與總結(jié)

    這篇文章主要給大家介紹了MySQL內(nèi)存使用率高且不釋放問題排查與總結(jié),文中通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細,對大家解決問題有一定的幫助,需要的朋友可以參考下
    2024-09-09

最新評論