SQL語句詳解:MySQL update的正確用法

2021-01-07 IT168

  【IT168 技術】以下的文章主要介紹的是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語句支持以下修飾符:

  如果您使用LOW_PRIORITY關鍵詞,則UPDATE的執行被延遲了,直到沒有其它的客戶端從表中讀取為止。

  如果您使用IGNORE關鍵詞,則即使在更新過程中出現錯誤,更新語句也不會中斷。如果出現了重複關鍵字衝突,則這些行不會被更新。如果列被更新後,新值會導致數據轉化錯誤,則這些行被更新為最接近的合法的值。

  如果您在一個表達式中通過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的使用
    今天介紹一下update的使用,這個關鍵詞就是修改資料庫語句。我們看看在哪些環境會用到修改語句,比如在編輯輸入資料的時候發現資料錄錯了,或者某個信息要修改,這個時候就需要用到update了。我們實現的是最後原理,不管是asp,jsp還是php實現最底層都是通過sql語句修改資料庫,實現達到的效果。通過程序篩選出數據,在指定去執行。我們看看demo我們先看看update的語法。
  • IT大叔詳談mysql中update語句和delete語句及應用
    今天老韓來講一講mysql中的update語句和delete語句。一、update(更新)語句;update語句屬於DML語句,如果要更新資料庫中的數據時可以使用它。update根據更新範圍老韓分為兩種(老韓自己分的類,方便講解)。
  • mysql常用sql語句總結
    ;update 表名 set列1=新值1 ,列2=新值2Where expr;(不加影響所有行);delete from 表名 where expr;select 列1,列2,.列n from 表名 where expr;select * from tmp where name is not null;mysql> select
  • SQL UPDATE 語句
    Update 語句Update 語句用於修改表中的數據。CityGatesBillXuanwumen 10BeijingWilsonFredZhongshan 23Nanjing請注意 :SQL UPDATE 語句中的
  • MySQL-SQL語句執行流程
    查詢緩存:  執行查詢語句的時候,會先查詢緩存(MySQL 8.0 版本後移除,因為這個功能不太實用)。分析器:  沒有命中緩存的話,SQL 語句就會經過分析器,分析器說白了就是要先看你的 SQL 語句要幹嘛,再檢查你的 SQL 語句語法是否正確。
  • update語句set中也可以使用and關鍵字
    我們平常寫sql更新數據,常見都是下面這種吧update student set no = '1', name = '張xx' where row_id = 3;但你是否有注意到,下面這條語句也是可以更新數據的update
  • MySQL的SQL語句 - 數據操作語句(15)- UPDATE 語句
    當使用基於語句的模式時,這些語句在錯誤日誌中生成警告,在使用 MIXED 模式時,這些語句將使用基於行的格式寫入二進位日誌。如果從要在表達式中更新的表中訪問列,則 UPDATE 將使用該列的當前值。mysql_info() C API 函數返回匹配和更新的行數以及更新過程中出現的警告數。可以使用 LIMIT row_count 來限制 UPDATE 的範圍。LIMIT 子句是匹配行的限制。只要找到滿足 WHERE 子句的 row_count 行,語句就會立即停止,而不管這些行是否實際被更改。如果 UPDATE 語句包含 ORDER BY 子句,則按該子句指定的順序更新行。
  • PHP mysql中limit用法詳解(代碼示例)
    $sql = "SELECT * FROM Data LIMIT 2"; if ($res = mysqli_query($link, $sql)) {     if (mysqli_num_rows($res) > 0) {         echo "<table>";         echo "<tr>
  • MySQL UPDATE語句一個「經典」的坑
    作者:朱康 原文地址:http://tech.dianwoda.com/2017/12/14/mysql-updateyu-ju-ge-jing-dian-de-keng
  • 一道簡單的sql語句題
    寫sql語句,返回每個司機今天最早的一筆訂單。兩個數據表如下圖所示:用戶表userinfo百度了一下,這好像是mysql5.7版本的新特性,按照網上的方法,執行如下的sql語句就可以取消這個模式:SET sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
  • php mysql SQL注入語句構造
    由於PHP和MYSQL本身得原因,PHP+MYSQL的注射要比asp困難,尤其是注射時語句的構造方面更是個難點,本文主要是借對Okphp BBS v1.3一些文件得簡單分析,來談談php+mysql注射語句構造方式,希望本文對你有點幫助。
  • MySQL語句中去除重複語句
    案例:id         姓名  課程名稱 分數1         張三     數學    692          李四        數學    893          張三        數學    69刪除除了自動編號不同,其他都相同的學生冗餘信息--按常理來說,這個sql
  • MySQL中delete和update語句的用法
    昨天和大家分享學習了insert,今天我們一起學習一下刪除與更新,即delete和update的用法。,更新語句的時候需要注意,一定要加上where條件,不然整張表的數據,將被全部更新,比如我們要修改一下id=2的姓名,性別,生日,(開發中,一般因為id號是唯一的,所以通常通過id來修改),我們語句是:update emp set ename='馬六',gender='女',birthday='1988-12-12' where eid
  • MySQL資料庫測試題
    (難度A)A、在DOS提示符下輸入以下命令mysql -uroot -p1234 test<d:/db.sql B、在DOS提示符下輸入以下命令mysqldump -uroot -p1234 test<d:/db.sql
  • MyBatis 動態 SQL 詳解(以後寫 SQL 爽多了)
    -- 資料庫驅動 --><dependency>  <groupId>mysql</groupId>  <artifactId>mysql-connector-java</artifactId>
  • MySQL如何完成一次查詢?
    mysql完成一次查詢過程是比較複雜的,在說明查詢過程前先介紹一下它的基礎概念和結構原理來幫助理解。下面從四個方面介紹,分別是mysql語句,mysql結構原理,mysql查詢過程,最後設置幾個有趣問題。
  • 5年老碼農,update語句誤用一個雙引號,生產數據全變0了
    二、過程由於開發需要在生產環節中修複數據,需要執行120條SQL語句,需要將數據進行更新,於是開發連上了生產資料庫,首先執行了第一條SQLupdate tablename set source_name = "bj1062-北京市朝陽區常營北辰福第"  where source_name =     "-北京市朝陽區常營北辰福第
  • Mysql中一條SQL查詢語句是如何執行的?
    2.查詢流程解析select * from table1 where ID=10;這條語句相信大家再熟悉不過了,下面我們就看看這一條語句在mysql中是怎麼執行的。第一步:一條sql語句要經過連接器,客戶端要和mysql建立連接。
  • 【資料庫】MySQL常見SQL語句
    testBack語句1:打開系統資料庫master,或者說在系統資料庫下操作。語句2:定義備份邏輯設備名testBack,類型disk,路徑為e:\mysql\test.dat。語句3:備份資料庫databasename到設備testBack上。
  • 學習MySQL的select語句
    select語句可 以用回車分隔$sql="select * from article where id=1"和  $sql="select * from article where id=1">都可以得到正確的結果,但有時分開寫或許能 更明了一點,特別是當sql語句比較長時。