單表語法

文章插圖
是不是有很多疑問:

文章插圖
多表語法

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

文章插圖
9002 更新成 9003 的時候,主鍵沖突,整個 UPDATE 中止, 9000 更新成的 9001 會回滾, 9003 ~ 9005 還未執行更新
如果使用 IGNORE ,會是什么情況了?

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

文章插圖
LIMIT LIMIT row_count 子句是行匹配限制 。一旦找到滿足 WHERE 子句的 row_count 行,無論這些行是否實際更改,該語句都會立即停止
也是就說 LIMIT 限制的是 查階段 ,與 更新階段 沒有關系

文章插圖
注意:與 SELECT 語法中的 LIMIT

文章插圖
還是有區別的
value DEFAULT

文章插圖
UPDATE 中 SET 子句的 value 是表達式,我們可以理解,這個 DEFAULT 是什么意思?
我們先來看這么一個問題,假設某列被聲明了 NOT NULL ,然而我們更新這列成 NULL

文章插圖
會發生什么
經驗總結擴展閱讀
- 瓷磚留下印記怎么去除
- 《Vision Permutator: A Permutable MLP-Like ArchItecture For Visual Recognition》論文筆記
- ppt文件密碼忘記怎么辦
- 西游記的主要內容
- 一張口訣搞定英語語法
- 國家科技進步獎幾年評一次
- 微信聊天記錄怎么恢復原來這么簡單的啊(微信被誤卸載了如何恢復聊天記錄)
- 記敘文標題的特點和作用
- C++自學筆記 初始化列表 Initializer list
- 基礎&進階 線段樹學習筆記(一) | P3372 【模板】線段樹 1 題解
