• update語句用于修改表中已經存在的資料
• 單表修改語句結構

• 多表修改語句結構
• update語句的正常用法
• 單表修改是指修改指定單個表中的已經存在資料的一個或多個列
的數值;set短語後面跟要修改的列和值;
• where子句表示限定要修改表中的哪些行資料,如果沒有where子
句則表示所有行都要修改;order by子句表示update資料按照指定
的順序進行;limit子句表示限定修改資料的行數
• 多表修改是指修改table_references指定的多個表中滿足條件的行
資料,多表修改不允許使用order by和limit子句
• 執行update語句需要修改表的權限
• Low_priority關鍵詞表示修改語句需要等待其他連結的讀此表操作
結束後再執行,隻作用在MyISAM, MEMORY, and MERGE存儲引擎
• Ignore關鍵詞表示當修改語句碰到違反唯一性限制條件等情況是,
語句不會報錯回退而是報警告資訊
##隻修改首先找到的兩行
記錄
Update ignore students6 set sid=1 where sid=2;
##執行成功但資料
不會修改
Order by指定update資料的順序,在某些情況下可以避免錯誤的發生,比如t
表中的id字段是有唯一限制的,則以下第一個語句執行會報錯,而第二個語
句執行則正常
UPDATE t SET id = id + 1;
• UPDATE t SET id = id + 1 ORDER BY id DESC;
• mysql> update students2 set sid=sid+1; ##執行報錯
• ERROR 1062 (23000): Duplicate entry '2' for key 'PRIMARY‘
• mysql> update students2 set sid=sid+1 order by sid desc; ##執行成功
• Query OK, 2 rows affected (0.04 sec)
• Rows matched: 2 Changed: 2 Warnings: 0
多表修改舉例(表之間通過where條件進行join操作)
• UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;