自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

國(guó)產(chǎn)數(shù)據(jù)庫兼容過程中涉及的MySQL非嚴(yán)格模式

數(shù)據(jù)庫 MySQL
MySQL的非嚴(yán)格模式指的是在MySQL配置中禁用嚴(yán)格模式(Strict Mode)的情況下執(zhí)行的SQL。在非嚴(yán)格模式下,MySQL會(huì)對(duì)某些數(shù)據(jù)插入、更新和比較操作執(zhí)行隱式轉(zhuǎn)換,從而在一些情況下允許執(zhí)行一些寬松的操作,而不拋出錯(cuò)誤或警告。

在國(guó)產(chǎn)數(shù)據(jù)庫兼容適配過程中,經(jīng)常遇到因源數(shù)據(jù)庫是MySQL,遷移至其他國(guó)產(chǎn)數(shù)據(jù)庫后,因MySQL端兼容模式有非嚴(yán)格模式,導(dǎo)致適配過程過程中需要做調(diào)整。那么,MySQL主要的非嚴(yán)格模式小結(jié)如下:

1、非嚴(yán)格模式參數(shù)

MySQL的非嚴(yán)格模式指的是在MySQL配置中禁用嚴(yán)格模式(Strict Mode)的情況下執(zhí)行的SQL。在非嚴(yán)格模式下,MySQL會(huì)對(duì)某些數(shù)據(jù)插入、更新和比較操作執(zhí)行隱式轉(zhuǎn)換,從而在一些情況下允許執(zhí)行一些寬松的操作,而不拋出錯(cuò)誤或警告。
涉及的主要參數(shù)說明如下:

a) STRICT_TRANS_TABLES:在插入或更新數(shù)據(jù)時(shí),禁止自動(dòng)轉(zhuǎn)換類型,確保所有數(shù)據(jù)都符合表定義的數(shù)據(jù)類型范圍。如果值無法轉(zhuǎn)換為合法的數(shù)據(jù)類型,則拋出錯(cuò)誤。
b) STRICT_ALL_TABLES:對(duì)所有表都啟用STRICT_TRANS_TABLES模式,確保數(shù)據(jù)插入或更新時(shí)嚴(yán)格符合表定義的數(shù)據(jù)類型。
c) NO_ZERO_IN_DATE:禁止在日期中使用零值,例如'0000-00-00',在嚴(yán)格模式下會(huì)被視為非法日期。
d) NO_ZERO_DATE:禁止使用零值表示日期的部分,例如'2000-00-00',在嚴(yán)格模式下會(huì)被視為非法日期。
e) ERROR_FOR_DIVISION_BY_ZERO:當(dāng)除數(shù)為零時(shí),拋出錯(cuò)誤而不是返回NULL。
f) ANSI_QUOTES:?jiǎn)⒂肁NSI_QUOTES模式,要求使用雙引號(hào)來引用字符串,而不是MySQL默認(rèn)的單引號(hào)。
g) NO_AUTO_CREATE_USER:禁止在GRANT語句中自動(dòng)創(chuàng)建新用戶。
h) NO_ENGINE_SUBSTITUTION:如果指定的存儲(chǔ)引擎不可用,不允許MySQL使用默認(rèn)的存儲(chǔ)引擎替代。

2、簡(jiǎn)單舉例

以下是一些非嚴(yán)格模式下可能出現(xiàn)的案例情況:

非嚴(yán)格的日期和時(shí)間插入:在非嚴(yán)格模式下,MySQL允許插入不符合日期和時(shí)間格式的值,會(huì)自動(dòng)進(jìn)行轉(zhuǎn)換或舍入
eg:  不合法的日期值'0000-00-00'等

非嚴(yán)格的字符串插入:在非嚴(yán)格模式下,MySQL允許插入過長(zhǎng)的字符串,會(huì)自動(dòng)截?cái)喑^字段長(zhǎng)度的部分 (建議已開啟此類嚴(yán)格模式)
eg:   varchar(2) 類型的字段,插入ABC可以成功,插入結(jié)果為AB

非嚴(yán)格的數(shù)值插入:在非嚴(yán)格模式下,MySQL允許插入超出字段范圍的數(shù)值,會(huì)自動(dòng)進(jìn)行范圍調(diào)整(建議已開啟此類嚴(yán)格模式)
eg:  TINYINT(默認(rèn)最大127) 可以插入150,且插入后的值自動(dòng)截?cái)酁?127

非嚴(yán)格的零值插入:在非嚴(yán)格模式下,MySQL允許插入字符串類型的值到數(shù)值類型字段,會(huì)將非數(shù)值字符串轉(zhuǎn)換為0 (建議已開啟此類嚴(yán)格模式)
eg:  例如可以將字符串'123' 插入int類型,結(jié)果是123;將'abc'插入int,結(jié)果是0

非嚴(yán)格的分組查詢:在非嚴(yán)格模式下,MySQL允許在GROUP BY查詢中選擇非聚合列,這可能導(dǎo)致不確定的結(jié)果
eg:  SELECT   a,b,COUNT(*)  FROM  tb GROUP BY a

非嚴(yán)格的NULL值比較:在非嚴(yán)格模式下,MySQL允許使用普通比較運(yùn)算符(如=、<、>等)與NULL值進(jìn)行比較,這可能導(dǎo)致不確定的結(jié)果 (建議已開啟此類嚴(yán)格模式)
eg:  column_name =NULL 或者 column_name <> NULL

非嚴(yán)格的外鍵約束:在非嚴(yán)格模式下,MySQL對(duì)外鍵約束的檢查較為寬松,可能會(huì)允許插入或更新關(guān)聯(lián)字段中不存在的值。(建議已開啟此類嚴(yán)格模式)
eg:  tb表外鍵字段指向ta表的主鍵,如果tb表的外鍵字段插入的內(nèi)容不存在于a表中時(shí)也可以寫入成功

非嚴(yán)格的除數(shù)為0校驗(yàn):在非嚴(yán)格模式下,MySQL允許除數(shù)為0
eg:  10/0 ,結(jié)果為null

非嚴(yán)格的字符串引號(hào)標(biāo)識(shí):在非嚴(yán)格模式下,MySQL允許單引號(hào)及雙引號(hào)來引用字符串
eg: 'abc' 或 "abc"均可

非嚴(yán)格的grant模式自動(dòng)創(chuàng)建用戶:在非嚴(yán)格模式下,MySQL允許grant語句中如果用戶不存在時(shí)自動(dòng)創(chuàng)建用戶
eg:  grant select  on db1)tb1 to test;

非嚴(yán)格的存儲(chǔ)引擎自動(dòng)替代:  在非嚴(yán)格模式下,MySQL允許指定的存儲(chǔ)引擎不可用是使用默認(rèn)的存儲(chǔ)引擎替代
eg: create table tb2(id int primary key ) engin = aaa;

PS:還會(huì)有其他的非嚴(yán)格模式的組合以及不同數(shù)據(jù)庫的兼容模式情況,大家可以繼續(xù)探索。

責(zé)任編輯:姜華 來源: 數(shù)據(jù)庫干貨鋪
相關(guān)推薦

2022-08-08 09:20:41

數(shù)據(jù)庫遷移

2020-02-03 12:12:28

MySQL數(shù)據(jù)庫SQL

2010-01-11 16:28:36

Fedora 2安裝

2010-08-02 09:52:19

DB2數(shù)據(jù)庫優(yōu)化

2024-07-11 08:00:42

2011-07-22 17:37:18

MySQL數(shù)據(jù)庫

2011-03-11 09:14:18

國(guó)產(chǎn)數(shù)據(jù)庫

2011-03-11 09:26:13

2011-07-07 13:59:54

存儲(chǔ)過程遠(yuǎn)程數(shù)據(jù)庫Oracle數(shù)據(jù)庫

2009-07-23 14:10:38

Hibernate J

2011-03-04 17:38:52

2011-08-01 13:28:09

Oracle歸檔模式非歸檔模式

2011-11-04 14:07:40

存儲(chǔ)

2010-06-12 14:02:13

2024-09-30 08:01:12

Oracle數(shù)據(jù)庫服務(wù)生態(tài)

2011-03-25 14:27:40

數(shù)據(jù)庫開發(fā)程序員

2016-09-07 20:28:17

MySQL存儲(chǔ)數(shù)據(jù)庫

2010-10-14 13:18:55

MySQL存儲(chǔ)過程

2010-05-27 17:45:13

MySQL存儲(chǔ)過程

2010-05-31 16:57:09

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)