MYSQL更新語句UPDATE深入探索

2021-06-03 07:38:47 字數 1891 閱讀 3454

以下的文章主要介紹的是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提供,用於對其它表進行相應的修改。

目前,您不能在乙個子查詢中更新乙個表,同時從同乙個表中選擇。

update 更新語句

update 語句用於修改表中的資料。update 表名稱 set 列名稱 新值 where 列名稱 某值 lastname firstname address city gates bill xuanwumen 10 beijing wilson champs elysees 我們為 lastna...

MySql批量更新語句(UPDATE)

下面建立乙個名為 bhl tes 的資料庫,並建立名為 test user 的表,字段分別為 id age name create database ifnot exists bhl test 檢視結果 檢視結果 張三 18 男 趙四 17 女 劉五 16 男 周七 19 女 檢視結果 張三 whe...

MySQL批量更新語句

update mytable set myfield case id when 1then value when 2then value when 3then value endwhere id in 1,2,3 例如 update categories set display order case...