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

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


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

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

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

文章插圖
 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
記一次批量更新整型類型的列 → 探究 UPDATE 的使用細節(jié)

文章插圖
想必大家都很清楚
然而,以下 SQL 中的 name 列的值會是多少
記一次批量更新整型類型的列 → 探究 UPDATE 的使用細節(jié)

文章插圖
我們來看下結果
記一次批量更新整型類型的列 → 探究 UPDATE 的使用細節(jié)

文章插圖
 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)驗總結擴展閱讀