婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 記一次MySQL更新語句update的踩坑

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

熱門標簽:百度地圖圖標標注中心 廣東人工電話機器人 芒果電話機器人自動化 日照旅游地圖標注 信陽穩定外呼系統運營商 湖南人工外呼系統多少錢 石家莊電商外呼系統 南通自動外呼系統軟件 申請外呼電話線路

背景

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

情景再現

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

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);

執行完成后,現在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';

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

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

神奇的事情發生了,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語句前先在測試環境試一下
基礎的SQL語法不要記錯

小結

MySQL中update語句的語法是

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

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

您可能感興趣的文章:
  • MySQL UPDATE 語句的非標準實現代碼
  • mysql update case 更新字段值不固定的操作
  • mysql修改記錄時update操作 字段=字段+字符串
  • MySQL將select結果執行update的實例教程
  • Mysql事務中Update是否會鎖表?
  • 關于Mysql update修改多個字段and的語法問題詳析
  • Mysql聯表update數據的示例詳解
  • mysql update語句的執行過程詳解
  • Mysql update多表聯合更新的方法小結
  • MySQL update set 和 and的區別

標簽:合肥 沈陽 惠州 呼和浩特 公主嶺 阿里 天津 牡丹江

巨人網絡通訊聲明:本文標題《記一次MySQL更新語句update的踩坑》,本文關鍵詞  記,一次,MySQL,更新,語句,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《記一次MySQL更新語句update的踩坑》相關的同類信息!
  • 本頁收集關于記一次MySQL更新語句update的踩坑的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 五莲县| 富裕县| 濮阳县| 灌阳县| 和硕县| 太康县| 依安县| 岳普湖县| 师宗县| 五指山市| 平邑县| 怀柔区| 永善县| 汝南县| 哈巴河县| 乌恰县| 蕲春县| 额尔古纳市| 丰都县| 新疆| 无棣县| 饶平县| 应用必备| 腾冲县| 循化| 白银市| 平果县| 阆中市| 浮山县| 科技| 岑溪市| 略阳县| 甘谷县| 洞口县| 建德市| 潢川县| 宜兰县| 淮北市| 汾西县| 秭归县| 瑞金市|