標籤:
update文法
Single-table文法:
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition] [ORDER BY ...] [LIMIT row_count]
Multiple-table文法:
UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]
UPDATE文法可以用新值更新原有表行中的各列。SET子句指示要修改哪些列和要給予哪些值。WHERE子句指定應更新哪些行。如果沒有WHERE子句,則更新所有的行。如果指定了ORDER BY子句,則按照被指定的順序對行進行更新。LIMIT子句用於給定一個限值,限制可以被更新的行的數目。
如果您在一個運算式中通過tbl_name訪問一列,則UPDATE使用列中的當前值。例如,以下語句把年齡列設定為比當前值多一:
UPDATE persondata SET age=age+1;
UPDATE賦值被從左至右評估。例如,以下語句對年齡列加倍,然後再進行增加:
UPDATE persondata SET age=age*2, age=age+1;
如果您把一列設定為其當前含有的值,則MySQL會注意到這一點,但不會更新。
update表的某些欄位為null
update person set number=null,name=null;
如果您把被已定義為NOT NULL的列更新為NULL,則該列被設定到與列類型對應的預設值,並且累加警告數。對於數字類型,預設值為0;對於字串類型,預設值為空白字串(‘‘);對於日期和時間類型,預設值為“zero”值。
多個表的UPDATE操作
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同時使用。
轉自 http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#update
mysql update操作