前言
SQL模式影響MySQL支持的SQL語(yǔ)法和執(zhí)行的數(shù)據(jù)驗(yàn)證檢查。
MySQL服務(wù)器可以在不同的SQL模式下運(yùn)行,并且可以針對(duì)不同的客戶端以不同的方式應(yīng)用這些模式,具體取決于sql_mode系統(tǒng)變量的值。DBA可以設(shè)置全局SQL模式以匹配站點(diǎn)服務(wù)器操作要求,并且每個(gè)應(yīng)用程序可以將其會(huì)話SQL模式設(shè)置為其自己的要求。
模式會(huì)影響MySQL支持的SQL語(yǔ)法以及它執(zhí)行的數(shù)據(jù)驗(yàn)證檢查。這使得在不同環(huán)境中使用MySQL以及將MySQL與其他數(shù)據(jù)庫(kù)服務(wù)器一起使用變得更加容易。
下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧
設(shè)置SQL模式
要在運(yùn)行時(shí)更改SQL模式,請(qǐng)sql_mode使用以下SET 語(yǔ)句設(shè)置全局或會(huì)話 系統(tǒng)變量
SET GLOBAL sql_mode = 'modes';SET SESSION sql_mode = 'modes';
模式列表
| 模式 | 注釋 |
|---|---|
| ALLOW_INVALID_DATES | 無(wú)效日期會(huì)生成錯(cuò)誤 |
| ERROR_FOR_DIVISION_BY_ZERO | 除0錯(cuò)誤 |
| NO_BACKSLASH_ESCAPES | 禁止使用反斜杠字符(/)作為字符串中的轉(zhuǎn)義字符。啟用此模式后,反斜杠就像其他任何一個(gè)普通字符一樣。 |
| NO_UNSIGNED_SUBTRACTION | 在整數(shù)值之間減去(其中一個(gè)是類型) UNSIGNED,默認(rèn)情況下會(huì)產(chǎn)生無(wú)符號(hào)結(jié)果。如果結(jié)果否則為負(fù),則會(huì)導(dǎo)致錯(cuò)誤 |
| NO_ZERO_IN_DATE | '0000-00-00' 則允許并且插入產(chǎn)生警告 |
| ONLY_FULL_GROUP_BY | select 內(nèi)指定字段必須出現(xiàn)在 groupby 中,否則錯(cuò)誤 |
| STRICT_TRANS_TABLES | 為事務(wù)存儲(chǔ)引擎啟用嚴(yán)格的SQL模式,并在可能的情況下為非事務(wù)性存儲(chǔ)引擎啟用。 |
| STRICT_ALL_TABLES | 為所有存儲(chǔ)引擎啟用嚴(yán)格SQL模式。無(wú)效的數(shù)據(jù)值被拒絕。 |
詳情請(qǐng)參考 https://dev.mysql.com/doc/ref...
嚴(yán)格SQL模式
MySQL服務(wù)器可以在不同的SQL模式下運(yùn)行,并且可以針對(duì)不同的客戶端以不同的方式應(yīng)用這些模式,具體取決于sql_mode系統(tǒng)變量的值。在嚴(yán)格SQL模式下,服務(wù)器會(huì)將某些警告升級(jí)為錯(cuò)誤。
嚴(yán)格SQL模式適用于以下語(yǔ)句
在存儲(chǔ)的程序中,如果在嚴(yán)格模式生效時(shí)定義了程序,則列出的類型的單個(gè)語(yǔ)句將以嚴(yán)格的SQL模式執(zhí)行。
嚴(yán)格的SQL模式適用于以下錯(cuò)誤,表示輸入值無(wú)效或缺失的一類錯(cuò)誤。如果值具有錯(cuò)誤的列數(shù)據(jù)類型或可能超出范圍,則該值無(wú)效。如果要插入的新行不包含其定義中NOT NULL沒(méi)有顯式DEFAULT子句的列的值,則缺少值。
致謝
感謝你看到這里,希望本篇文章可以幫到你,謝謝。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)VeVb武林網(wǎng)的支持。
新聞熱點(diǎn)
疑難解答
圖片精選