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

記一次MySQL更新語句update的踩坑

 更新時間:2020年11月28日 10:20:22   作者:JavaGeekers  
這篇文章主要介紹了記一次MySQL更新語句update的踩坑,幫助大家更好的理解和使用MySQL的更新語句,感興趣的朋友可以了解下

背景

最近在一次線上作業(yè)過程中執(zhí)行了一句DML語句,本以為萬無一失,結果應用反饋說沒有更新,數據還是沒有變,最后經過排查才發(fā)現是我語句寫錯了,導致update語句執(zhí)行的結果與預期不符。

情景再現

為了方便演示,建立一張用戶表,同時插入五條數據。

create table user(
id int(12) comment '用戶主鍵id',
name varchar(36) comment '用戶名',
age int(12) comment '年齡');

insert into user values (1,'one',11),(2,'two',12),(3,'three',13),(4,'four',15),(5,'five',15);

執(zhí)行完成后,現在user表中的數據如下:

+------+-------+------+
| id  | name | age |
+------+-------+------+
|  1 | one  |  11 |
|  2 | two  |  12 |
|  3 | three |  13 |
|  4 | four |  15 |
|  5 | five |  15 |
+------+-------+------+

現在需要把所有的年齡改成 10、用戶名改成user——假設此操作有意義——我提交到運維的 DML 語句如下:

update user set age=10 and name='user';

當我刷新用戶表,看到執(zhí)行update語句后的表全部數據如下:

+------+-------+------+
| id  | name | age |
+------+-------+------+
|  1 | one  |  0 |
|  2 | two  |  0 |
|  3 | three |  0 |
|  4 | four |  0 |
|  5 | five |  0 |
+------+-------+------+

神奇的事情發(fā)生了,age字段全部被更新成0,而name字段竟然沒有任何修改!

錯誤原因及修正

錯誤原因其實很簡單,update語句寫錯了。MySQL中update語句的語法是

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
```sql

如果更新多個字段,相鄰字段間應該以逗號分隔而不是`and`。如果 update 語句使用 and 作為多個字段之間的分隔符,就像最開始我提交給運維的那樣,這個更新語句最終將會變成

```sql
update user set age=(10 and name='user');

而(10 and name='user')作為一個返回值為 boolean 類型的判斷語句,返回會被映射成 1 或 0,有 99.999% 的可能會讓第一個更新變量更新為錯誤的數據。

正確的更新語句應該是

update user set age=10, name='user';

教訓

在提交DML語句前先在測試環(huán)境試一下
基礎的SQL語法不要記錯

小結

MySQL中update語句的語法是

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

以上就是記一次MySQL更新語句update的踩坑的詳細內容,更多關于MySQL更新語句update的資料請關注腳本之家其它相關文章!

相關文章

  • MySQL復合索引的深入探究

    MySQL復合索引的深入探究

    這篇文章主要給大家介紹了關于MySQL復合索引的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • mysql批量刪除數據方法及注意事項說明

    mysql批量刪除數據方法及注意事項說明

    這篇文章主要介紹了mysql批量刪除數據方法及注意事項說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • MySQL聯合索引與最左匹配原則的實現

    MySQL聯合索引與最左匹配原則的實現

    最左匹配原則在我們MySQL開發(fā)過程中和面試過程中經常遇到,為了加深印象和理解,我在這里把MySQL的最左匹配原則詳細的講解一下,感興趣的可以了解一下
    2023-12-12
  • window10下mysql 8.0.20 安裝配置方法圖文教程

    window10下mysql 8.0.20 安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了window10下mysql 8.0.20 安裝配置方法圖文教程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Mysql中通過生日計算年齡的多種方法

    Mysql中通過生日計算年齡的多種方法

    本文給大家分享mysql通過生日計算年齡的方法,每一種方法都非常不錯,需要的朋友參考下吧
    2018-03-03
  • MySQL中DATE_FORMATE函數使用時的注意點

    MySQL中DATE_FORMATE函數使用時的注意點

    這篇文章主要介紹了MySQL中DATE_FORMATE函數使用時的注意點,主要是針對其內置的字符集使用時需要轉換而進行說明,需要的朋友可以參考下
    2015-05-05
  • MySQL Count函數使用教程

    MySQL Count函數使用教程

    這篇文章主要介紹了MySQL Count函數,COUNT()是一個聚合函數,返回指定匹配條件的行數。開發(fā)中常用來統(tǒng)計表中數據,全部數據,不為NULL數據,或者去重數據
    2022-12-12
  • 關于Mysql中current_time/current_date()與now()區(qū)別

    關于Mysql中current_time/current_date()與now()區(qū)別

    這篇文章主要介紹了關于current_time/current_date()與now()區(qū)別,在Mysql中 current_time函數是顯示當前時間的,而其他兩個函數有何不同呢, 接下來我們就一起來看看吧
    2023-04-04
  • MySQL中ESCAPE關鍵字的用法詳解

    MySQL中ESCAPE關鍵字的用法詳解

    這篇文章主要介紹了MySQL中ESCAPE關鍵字的用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • MySQL 用戶權限與安全管理最佳實踐

    MySQL 用戶權限與安全管理最佳實踐

    MySQL用戶權限與安全管理是保障數據庫系統(tǒng)穩(wěn)定與安全的重要環(huán)節(jié),通過合理設計權限模型、使用 GRANT/REVOKE命令管理權限、實施最小權限原則以及加強密碼,可以大幅降低數據庫被非法訪問和數據泄露的風險,這篇文章主要介紹了MySQL 用戶權限與安全管理,需要的朋友可以參考下
    2025-03-03

最新評論

昌吉市| 衡南县| 那曲县| 乳源| 郯城县| 阿鲁科尔沁旗| 开阳县| 时尚| 上饶县| 富锦市| 德江县| 长武县| 无极县| 石门县| 图们市| 秦皇岛市| 祁阳县| 宜良县| 通道| 桂平市| 原平市| 巴林左旗| 尤溪县| 同江市| 陈巴尔虎旗| 丹巴县| 清新县| 黎城县| 榆树市| 洛川县| 东乡族自治县| 观塘区| 栖霞市| 南木林县| 清水县| 长宁区| 建湖县| 永吉县| 阳春市| 察雅县| 渑池县|