中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

sql_mode怎么在MySQL中使用

發布時間:2021-05-09 10:57:48 來源:億速云 閱讀:165 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關sql_mode怎么在MySQL中使用,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

sql_mode詳解

sql_mode,會直接影響SQL語法支持和數據校驗,它包含非常多的選項,其中5.7版本的默認值是

“ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,;ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”

,一般不建議進行修改。

最重要的選項

sql_mode最重要的選項,包括以下3個:

(1)ANSI:該選項決定SQL語法支持,設置為ANSI,會更加遵守標準SQL語法。

(2)STRICT_TRANS_TABLES:該選項決定數據校驗;對于事務性存儲引擎,當出現非法值時,該事務會失敗并回滾;對于非事務性存儲引擎,如果非法值出現在第一行,那么該事務會失敗,如果非法值出現在中間,那么會調整非法值,并拋出告警。

(3)TRADITIONAL:該選項決定與傳統關系型數據庫表現一致;對于一些非正常操作,直接報錯失敗而不是告警提示。

全部選項

sql_mode還包括以下選項:

(4)ALLOW_INVALID_DATES:該選項決定不進行嚴格的日期校驗;它只校驗月份范圍是否為1-12、日期范圍是否為1-31,不校驗具體日期是否有效,比如2020-04-31這個非法日期是允許的。

(5)ANSI_QUOTES:該選項決定引用字符;它允許雙引號"作為引用字符,和反引號`一樣。

(6)ERROR_FOR_DIVISION_BY_ZERO:該選項決定被零整除的返回值;如果不啟用,那么被零整除的返回值為null且不告警;如果啟用但在非嚴格模式下,那么被零整除的返回值為null且產生告警;如果啟用且在嚴格模式下,那么被零整除會直接報錯。

(7)HIGH_NOT_PRECEDENCE:該選項決定not操作的優先級;啟用后,NOT a BETWEEN b AND c被解析為NOT (a BETWEEN b AND c);在一些舊版本中,NOT a BETWEEN b AND c被解析為(NOT a) BETWEEN b AND c。

(8)IGNORE_SPACE:該選項決定忽略函數名和括號之間的空格;啟用后,比如count (*)也不會報錯。

(9)NO_AUTO_CREATE_USER:該選項決定grant語句不會自動創建用戶;已過時,grant語句也不會創建用戶。

(10)NO_AUTO_VALUE_ON_ZERO:該選項決定自增列的生成;一般來說,向自增列插入0或null,系統會自動生成下一個自增值插入;啟用后,向自增列插入0會保留原值0,插入null才會自動生成下一個自增值插入

(11)NO_BACKSLASH_ESCAPES:該選項決定反斜杠\的作用;啟用后,反斜杠\不再作為轉義字符,而是用作普通字符。

(12)NO_DIR_IN_CREATE:該選項決定忽略創建表時,所有的INDEX DIRECTORY和DATA DIRECTORY指令;該選項只在從庫生效。

(13)NO_ENGINE_SUBSTITUTION:該選項決定創建表時,如果指定一個不存在/不支持的存儲引擎,那么會自動轉換為默認存儲引擎。

(14)NO_FIELD_OPTIONS:已過時。

(15)NO_KEY_OPTIONS:已過時。

(16)NO_TABLE_OPTIONS:已過時。

(17)NO_UNSIGNED_SUBTRACTION:一般情況下,整數之間的減法(其中一個為無符號),結果為無符號,如果結果為負數則報錯;啟用該選項后,負數則可以正常處理。

(18)NO_ZERO_DATE:該選項決定‘0000-00-00'是否可以插入;如果不啟用,那么‘0000-00-00'可以插入且不告警;如果啟用但在非嚴格模式下,那么‘0000-00-00'可以插入但會產生告警;如果啟用且在非嚴格模式下,那么‘0000-00-00'不能插入會直接報錯。

(19)NO_ZERO_IN_DATE:該選項決定月份和日期是否可以為00;如果不啟用,那么月份和日期可以為00且不告警;如果啟用但在非嚴格模式下,那么月份和日期可以為00但會產生告警;如果啟用且在非嚴格模式下,那么月份和日期不能為00會直接報錯。

(20)ONLY_FULL_GROUP_BY:該選項決定select/having/order by后面的非聚合字段,必須出現在group by字句中。

(21)PAD_CHAR_TO_FULL_LENGTH:一般情況下,查詢char類型的字段,后面的空洞數據會被裁剪;啟用該選項后,查詢char類型的字段,后面的空洞數據不會被裁剪。

(22)PIPES_AS_CONCAT:該選項決定將||符號當作字符串的連接操作符,而不是當作OR同義詞。

(23)REAL_AS_FLOAT:該選項決定將REAL當作FLOAT同義詞,而不是DOUBLE同義詞。

(24)STRICT_ALL_TABLES:該選項決定數據校驗;對于事務性存儲引擎,當出現非法值時,該事務會失敗并回滾;對于非事務性存儲引擎,如果非法值出現在第一行,那么該事務會失敗,如果非法值出現在中間,那么前面操作會成功、后面操作會直接報錯,出現事務部分成功部分失敗的情況。

關于sql_mode怎么在MySQL中使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

内黄县| 利辛县| 长垣县| 崇文区| 孝昌县| 靖州| 德化县| 乳山市| 鄱阳县| 白城市| 香河县| 沙坪坝区| 东源县| 集安市| 台东县| 鹤峰县| 河西区| 合肥市| 鲁山县| 灌阳县| 小金县| 临夏县| 旬阳县| 宜川县| 阳西县| 阳谷县| 呼伦贝尔市| 浦东新区| 新泰市| 邯郸市| 临沧市| 茌平县| 南丰县| 前郭尔| 桂东县| 中超| 西峡县| 榕江县| 灌云县| 孟州市| 扶风县|