文章插圖
我們看下 SQL_MODE ,執(zhí)行 SELECT @@sql_mode; 得到結果

文章插圖
【記一次批量更新整型類型的列 → 探究 UPDATE 的使用細節(jié)】 STRICT_TRANS_TABLES 表明啟動了嚴格模式,對 INSERT 和 UPDATE 語句的 value 管控會更嚴格
如果我們關閉嚴格模式,再看看執(zhí)行結果

文章插圖
name 字段聲明成了 NOT NULL ,非嚴格 SQL 模式下,將 name 設置成 NULL 是成功的,但更改的值并非 NULL ,而是 VARCHAR 類型的默認值: 空字符串('')
小結下
1、嚴格 SQL 模式下,對 NOT NULL 的字段設置 NULL ,會直接報錯,更新失敗
2、非嚴格 SQL 模式下,對 NOT NULL 的字段設置 NULL ,會將字段值設置字段類型對應的默認值
關于字段類型的默認值,可查看:Data Type Default Values
關于 sql_mode ,可查看:Server SQL Modes
通常情況下,生成環(huán)境的 MySQL 一般都是嚴格模式,所以大家知道有 value DEFAULT 這回事就夠了
SET 字段順序針對如下 SQL

文章插圖
想必大家都很清楚
然而,以下 SQL 中的 name 列的值會是多少

文章插圖
我們來看下結果

文章插圖
name 的值是不是和預想的有點不一樣?
單表 UPDATE 的 SET 是從左往右進行的,然而多表 UPDATE 卻不是,多表 UPDATE 不能保證按任何特定順序進行
總結1、不管是 UPDATE ,還是 DELETE ,都有一個先查的過程,查到一行處理一行
2、 UPDATE 語法中的 LOW_PRIORITY 很少用, IGNORE 偶爾用, ORDER BY 和 LIMIT 相對會用的多一點,都混個眼熟
3、 sql_mode 是比較重要的知識點,推薦大家掌握;生產(chǎn)環(huán)境,強烈推薦開啟嚴格模式
參考UPDATE Statement
經(jīng)驗總結擴展閱讀
- 瓷磚留下印記怎么去除
- 《Vision Permutator: A Permutable MLP-Like ArchItecture For Visual Recognition》論文筆記
- ppt文件密碼忘記怎么辦
- 西游記的主要內(nèi)容
- 一張口訣搞定英語語法
- 國家科技進步獎幾年評一次
- 微信聊天記錄怎么恢復原來這么簡單的啊(微信被誤卸載了如何恢復聊天記錄)
- 記敘文標題的特點和作用
- C++自學筆記 初始化列表 Initializer list
- 基礎&進階 線段樹學習筆記(一) | P3372 【模板】線段樹 1 題解
