以下的文章主要介紹的是mysql update 語句的實際用法,我們首先是以單錶的update語句來引出實現mysql update 語句的實際方案,以下就是文章的詳細內容描述,望你看完之後會有收穫。
單錶的mysql update語句:
update [low_priority] [ignore] tbl_name多表的update語句:set
col_name1
=expr1
[, col_name2
=expr2
...]
[where where_definition]
[order by ...]
[limit row_count]
update [low_priority] [ignore] table_referencesupdate語法可以用新值更新原有錶行中的各列。set子句指示要修改哪些列和要給予哪些值。where子句指定應更新哪些行。如果沒有where子句,則更新所有的行。如果指定了order by子句,則按照被指定的順序對行進行更新。limit子句用於給定乙個限值,限制可以被更新的行的數目。set
col_name1
=expr1
[, col_name2
=expr2
...]
[where where_definition]
mysql update語句支援以下修飾符:
如果您在乙個表示式中通過tbl_name訪問一列,則update使用列中的當前值。例如,以下語句把年齡列設定為比當前值多一:
mysql>mysql update賦值被從左到右評估。例如,以下語句對年齡列加倍,然後再進行增加:update persondata set
ageage
=age+1;
mysql>如果您把一列設定為其當前含有的值,則mysql會注意到這一點,但不會更新。update persondata set
ageage
=age*2,
ageage
=age+1;
如果您把被已定義為not null的列更新為null,則該列被設定到與列型別對應的預設值,並且累加警告數。對於數字型別,預設值為0;對於字串型別,預設值為空字串('');對於日期和時間型別,預設值為「zero」值。
update會返回實際被改變的行的數目。mysql_info() c api函式可以返回被匹配和被更新的行的數目,以及在update過程中產生的警告的數量。
您可以使用limit row_count來限定update的範圍。limit子句是乙個與行匹配的限定。只要發現可以滿足where子句的row_count行,則該語句中止,不論這些行是否被改變。
如果乙個update語句包括乙個order by子句,則按照由子句指定的順序更新行。
您也可以執行包括多個表的update操作。table_references子句列出了在聯合中包含的表。以下是乙個例子:
sql以上的例子顯示出了使用逗號操作符的內部聯合,但是multiple-table update語句可以使用在select語句中允許的任何型別的聯合,比如left join。>
update items,month set
items.price
=month
.price
where
items.id
=month
.id;
注釋:您不能把order by或limit與multiple-table update同時使用。
在乙個被更改的multiple-table update中,有些列被引用。您只需要這些列的mysql update許可權。有些列被讀取了,但是沒被修改。您只需要這些列的select許可權。
如果您使用的multiple-table update語句中包含帶有外來鍵限制的innodb表,則mysql優化符處理表的順序可能與上下層級關係的順序不同。在此情況下,語句無效並被 回滾。同時,更新乙個單一表,並且依靠on update功能。該功能由innodb提供,用於對其它表進行相應的修改。
目前,您不能在乙個子查詢中更新乙個表,同時從同乙個表中選擇。
mysql update語句與limit的結合使用
mysql的update語句只支援更新前多少行,不支援從某行到另一行,比如 update tb name set column name test order by id asc limit 30 更新前30行的某個字段內容,沒什麼問題。update tb name set column name ...
MySQL update語句流程總結
廢話不多說先來張 釋 update t set value value 1 where id 2 複製 我想可能大部分人看完這圖,思考片刻,接下來的就不需要在繼續看了,但是考慮到部分朋友還是新手 包括自己 以及後面複習,還是稍微嘮叨一段。首先,上圖中深色背景的表示在執行器中執行,也就是server層...
SQL語句詳解 MySQL update的正確用法
單錶的mysql update語句 update low priority ignore tbl name set col name1 expr1 col name2 expr2 where where definition order by limit row count 多表的updatebkg...