国产精品免费嫩草研究院|无遮羞动漫在线观看AV|国产麻豆精品传媒AV国产在线|村在线观看|寂寞情人1正版|韩国床震韩国床震古|精品系列专区久久

記一次批量更新整型類型的列 → 探究 UPDATE 的使用細節( 二 )


單表語法

記一次批量更新整型類型的列 → 探究 UPDATE 的使用細節

文章插圖
是不是有很多疑問:
記一次批量更新整型類型的列 → 探究 UPDATE 的使用細節

文章插圖
多表語法
記一次批量更新整型類型的列 → 探究 UPDATE 的使用細節

文章插圖
相比于單表,貌似更簡單一些,不支持 ORDER BY 和  LIMIT
LOW_PRIORITY UPDATE 的修飾符之一,用來降低 SQL 的優先級
當使用 LOW_PRIORITY 之后, UPDATE 的執行將會被延遲,直到沒有其他客戶端從表中讀取數據為止
但是,只有表級鎖的存儲引擎才支持 LOW_PRIORITY ,表級鎖的存儲引擎包括: MyISAM 、 MEMORY 和 MERGE ,所以最常用的 InnoDB 是不支持的
使用場景很少,混個眼熟就好
IGNORE UPDATE 的修飾符之一,用來聲明 SQL 執行時發生錯誤的處理方式
如果沒有使用 IGNORE , UPDATE 執行時如果發生錯誤會中止,如下所示
記一次批量更新整型類型的列 → 探究 UPDATE 的使用細節

文章插圖
 9002 更新成 9003 的時候,主鍵沖突,整個 UPDATE 中止, 9000 更新成的 9001 會回滾, 9003 ~ 9005 還未執行更新
如果使用 IGNORE ,會是什么情況了?
記一次批量更新整型類型的列 → 探究 UPDATE 的使用細節

文章插圖
 UPDATE 執行期間即使發生錯誤了,也會執行完成,最終返回受影響的行數
上述返回受影響的行是 2 ,你們說說是哪兩行修改了?
更多關于 IGNORE 的信息,請查看:The Effect of IGNORE on Statement Execution
關于使用場景,在新舊系統并行,做數據遷移的時候可能會用到,主鍵或者唯一鍵沖突的時候直接忽略
ORDER BY如果大家對 UDPATE 的執行流程了解的話,那就更好理解了
 UPDATE 其實有兩個階段: 查階段 、 更新階段
一行一行的處理,查到一行滿足 WHERE 子句,就更新一行
所以,這里的 ORDER BY 就和 SELECT 中的 ORDER BY 是一樣的效果
關于使用場景,大家可以回過頭去看看前面講到的的需求背景,
IGNORE 的案例 1 中的報錯,其實也可以用 ORDER BY
記一次批量更新整型類型的列 → 探究 UPDATE 的使用細節

文章插圖
LIMIT LIMIT row_count 子句是行匹配限制 。一旦找到滿足 WHERE 子句的 row_count 行,無論這些行是否實際更改,該語句都會立即停止
也是就說 LIMIT 限制的是 查階段 ,與 更新階段 沒有關系
記一次批量更新整型類型的列 → 探究 UPDATE 的使用細節

文章插圖
注意:與 SELECT 語法中的 LIMIT
記一次批量更新整型類型的列 → 探究 UPDATE 的使用細節

文章插圖
還是有區別的
value DEFAULT
記一次批量更新整型類型的列 → 探究 UPDATE 的使用細節

文章插圖
 UPDATE 中 SET 子句的 value 是表達式,我們可以理解,這個 DEFAULT 是什么意思?
我們先來看這么一個問題,假設某列被聲明了 NOT NULL ,然而我們更新這列成 NULL
記一次批量更新整型類型的列 → 探究 UPDATE 的使用細節

文章插圖
會發生什么
記一次批量更新整型類型的列 → 探究 UPDATE 的使用細節

經驗總結擴展閱讀