最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL 中的 UPDATE 語(yǔ)句詳解

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

MySQL 中的 UPDATE 語(yǔ)句

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

1. UPDATE 語(yǔ)法

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

? 注意

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

2. 基本 UPDATE

示例

(1) 更新單個(gè)字段

UPDATE users
SET age = 30
WHERE id = 1;

解釋

id = 1age 更新為 30。

(2) 更新多個(gè)字段

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

解釋

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

(3) 更新所有行(小心使用?。?/p>

UPDATE users SET status = 'inactive';

? 危險(xiǎn)

  • 沒(méi)有 WHERE,會(huì)更新整個(gè)表!
  • status 字段的所有數(shù)據(jù)都變成 'inactive'。

如何防止誤操作?

先用 SELECT 檢查更新范圍

SELECT * FROM users WHERE status = 'active';

開(kāi)啟事務(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ù),通過(guò) JOIN 關(guān)聯(lián)兩個(gè)表:

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

解釋

  • users 表和 orders 表通過(guò) user_id 關(guān)聯(lián)。
  • 當(dāng)用戶的 total_amount > 1000 時(shí),更新 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í),按特定順序處理數(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 影響整個(gè)表

為了防止忘記 WHERE 語(yǔ)句,可以開(kāi)啟 safe updates

SET SQL_SAFE_UPDATES = 1;

如果更新時(shí)沒(méi)加 WHERE,會(huì)報(bào)錯(cuò):

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

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

SET SQL_SAFE_UPDATES = 0;

總結(jié)

用法說(shuō)明示例
更新單列修改一個(gè)字段UPDATE users SET age = 30 WHERE id = 1;
更新多列同時(shí)修改多個(gè)字段UPDATE users SET age = 30, city = 'Shanghai' WHERE id = 1;
批量更新更新多個(gè)匹配行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');

?? 重點(diǎn)

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

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

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

相關(guān)文章

  • mysql5.7.18版本免安裝配置教程

    mysql5.7.18版本免安裝配置教程

    這篇文章主要為大家詳細(xì)介紹了mysql5.7.18版本免安裝的配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • MySQL數(shù)據(jù)誤刪除的快速解決方法(MySQL閃回工具)

    MySQL數(shù)據(jù)誤刪除的快速解決方法(MySQL閃回工具)

    Binlog2sql是一個(gè)Python開(kāi)發(fā)開(kāi)源的MySQL Binlog解析工具,能夠?qū)inlog解析為原始的SQL,也支持將Binlog解析為回滾的SQL,去除主鍵的INSERT SQL,是DBA和運(yùn)維人員數(shù)據(jù)恢復(fù)好幫手,下面小編通過(guò)教程給大介紹MySQL數(shù)據(jù)誤刪除的快速解決方法,一起看看吧
    2019-10-10
  • 詳解 Mysql查詢結(jié)果順序按 in() 中ID 的順序排列

    詳解 Mysql查詢結(jié)果順序按 in() 中ID 的順序排列

    這篇文章主要介紹了詳解 Mysql查詢結(jié)果順序按 in() 中ID 的順序排列的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • MySQL表鎖、行鎖、排它鎖及共享鎖的使用詳解

    MySQL表鎖、行鎖、排它鎖及共享鎖的使用詳解

    隨著應(yīng)用對(duì)事務(wù)完整性和并發(fā)性要求的不斷提高,MySQL才開(kāi)始開(kāi)發(fā)基于事務(wù)的存儲(chǔ)引擎,下面這篇文章主要給大家介紹了關(guān)于MySQL表鎖、行鎖、排它鎖及共享鎖使用的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • linux服務(wù)器清空MySQL的history歷史記錄 刪除mysql操作記錄

    linux服務(wù)器清空MySQL的history歷史記錄 刪除mysql操作記錄

    mysql歷史記錄上可能留下了很多敏感信息,比如密碼什么的,需及時(shí)清空歷史記錄,下面分享一下inux服務(wù)器清空MySQL的history歷史記錄的方法
    2014-01-01
  • MySQL transaction事務(wù)安全示例講解

    MySQL transaction事務(wù)安全示例講解

    這篇文章主要為大家介紹了MySQL數(shù)據(jù)庫(kù)事務(wù)安全transaction的示例講解教程,事務(wù)就是將一組操作封裝成一個(gè)執(zhí)行單元,要么一塊執(zhí)行成功,要么一塊失敗,不存在部分執(zhí)行成功的情況。事務(wù)保證了執(zhí)行的穩(wěn)定性,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-06-06
  • 怎樣獲取MySQL結(jié)果集的第一條記錄

    怎樣獲取MySQL結(jié)果集的第一條記錄

    這篇文章主要介紹了怎樣獲取MySQL結(jié)果集的第一條記錄問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • MySQL聯(lián)表查詢基本操作之left-join常見(jiàn)的坑

    MySQL聯(lián)表查詢基本操作之left-join常見(jiàn)的坑

    這篇文章主要給大家介紹了關(guān)于MySQL聯(lián)表查詢基本操作之left-join的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 微信昵稱帶符號(hào)導(dǎo)致插入MySQL數(shù)據(jù)庫(kù)時(shí)出錯(cuò)的解決方案

    微信昵稱帶符號(hào)導(dǎo)致插入MySQL數(shù)據(jù)庫(kù)時(shí)出錯(cuò)的解決方案

    Mysql的utf8編碼最多3個(gè)字節(jié),而Emoji表情或者某些特殊字符是4個(gè)字節(jié),所以會(huì)導(dǎo)致帶有表情的昵稱插入數(shù)據(jù)庫(kù)時(shí)出錯(cuò),下面給大家分享下解決方案,需要的朋友參考下吧
    2016-12-12
  • Mysql中新建用戶及授權(quán)的方法分享

    Mysql中新建用戶及授權(quán)的方法分享

    這篇文章給大家匯總介紹了Mysql中新建用戶及授權(quán)的方法,首先介紹的是作者自己的項(xiàng)目經(jīng)歷,后面附上了參考文章,希望能對(duì)大家學(xué)習(xí)mysql有所幫助。
    2016-07-07

最新評(píng)論

夏河县| 东山县| 利川市| 仪征市| 历史| 靖州| 长汀县| 揭西县| 资阳市| 林州市| 台江县| 衡阳市| 枝江市| 珠海市| 桐梓县| 遂平县| 芜湖县| 阿拉善右旗| 平陆县| 扶风县| 布尔津县| 金门县| 松溪县| 澳门| 伊宁县| 东光县| 三穗县| 刚察县| 当阳市| 靖西县| 安平县| 潢川县| 泾川县| 南昌市| 弥勒县| 曲阳县| 武穴市| 宣威市| 塘沽区| 合作市| 全州县|