天天看點

SQL文法基礎之updata

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

• 單表修改語句結構

SQL文法基礎之updata

• 多表修改語句結構

SQL文法基礎之updata

• update語句的正常用法

SQL文法基礎之updata

• 單表修改是指修改指定單個表中的已經存在資料的一個或多個列

的數值;set短語後面跟要修改的列和值;

• where子句表示限定要修改表中的哪些行資料,如果沒有where子

句則表示所有行都要修改;order by子句表示update資料按照指定

的順序進行;limit子句表示限定修改資料的行數

• 多表修改是指修改table_references指定的多個表中滿足條件的行

資料,多表修改不允許使用order by和limit子句

• 執行update語句需要修改表的權限

• Low_priority關鍵詞表示修改語句需要等待其他連結的讀此表操作

結束後再執行,隻作用在MyISAM, MEMORY, and MERGE存儲引擎

• Ignore關鍵詞表示當修改語句碰到違反唯一性限制條件等情況是,

語句不會報錯回退而是報警告資訊

SQL文法基礎之updata

##隻修改首先找到的兩行

記錄

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;