Mysql Update語句的詳細用法

2021-06-09 03:03:28 字數 2160 閱讀 4954

以下的文章主要介紹的是mysql update 語句的實際用法,我們首先是以單錶的update語句來引出實現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] 

多表的update語句:

update [low_priority] [ignore] table_references  

set 

col_name1

=expr1

[, col_name2

=expr2

...]  

[where where_definition] 

update語法可以用新值更新原有錶行中的各列。set子句指示要修改哪些列和要給予哪些值。where子句指定應更新哪些行。如果沒有where子句,則更新所有的行。如果指定了order by子句,則按照被指定的順序對行進行更新。limit子句用於給定乙個限值,限制可以被更新的行的數目。

mysql update語句支援以下修飾符:

如果您在乙個表示式中通過tbl_name訪問一列,則update使用列中的當前值。例如,以下語句把年齡列設定為比當前值多一:

mysql>

update persondata set 

ageage

=age+1; 

mysql update賦值被從左到右評估。例如,以下語句對年齡列加倍,然後再進行增加:

mysql>

update persondata set 

ageage

=age*2, 

ageage

=age+1; 

如果您把一列設定為其當前含有的值,則mysql會注意到這一點,但不會更新。

如果您把被已定義為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

>

update items,month set 

items.price

=month

.price  

where 

items.id

=month

.id; 

以上的例子顯示出了使用逗號操作符的內部聯合,但是multiple-table update語句可以使用在select語句中允許的任何型別的聯合,比如left join。

注釋:您不能把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...