本篇文章為大家展示了MySQL服務(wù)器的SQL模式是什么,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
與其它數(shù)據(jù)庫(kù)不同,MySQL 服務(wù)器可以在不同的 SQL 模式下運(yùn)行,并且可以針對(duì)不同的客戶端以不同的方式應(yīng)用這些模式,具體取決于 sql_mode 系統(tǒng)變量的值。 |
SQL 模式定義了 MySQL 數(shù)據(jù)庫(kù)所支持的 SQL 語(yǔ)法和數(shù)據(jù)校驗(yàn)(數(shù)據(jù)驗(yàn)證檢查),這樣可以更容易的在不同環(huán)境下使用 MySQL。
在 MySQL 中,SQL 模式常用來(lái)解決下面幾類問(wèn)題:
通過(guò)設(shè)置 SQL Mode,可以完成不同嚴(yán)格程度的數(shù)據(jù)校驗(yàn),有效地保障了數(shù)據(jù)的準(zhǔn)確性。
通過(guò)設(shè)置 SQL Mode 為 ANSI 模式,可以保證大多數(shù) SQL 符合標(biāo)準(zhǔn)的 SQL 語(yǔ)法,使不同數(shù)據(jù)庫(kù)之間進(jìn)行遷移時(shí),不需要進(jìn)行較大的修改。
在不同數(shù)據(jù)庫(kù)之間進(jìn)行數(shù)據(jù)遷移之前,設(shè)置 SQL Mode 可以使 MySQL 中的數(shù)據(jù)更方便地遷移到目標(biāo)數(shù)據(jù)庫(kù)中。
sql_mode 系統(tǒng)變量的常用值
下面列出了幾種 SQL 模式常用的值。
TRICT_ ALL_TABLES 和 STRICT_ TRANS_TABLES
如果將 sql_mode 的值設(shè)置為 TRICT_ALL_TABLES 和 STRICT_TRANS_TABLES,那么 MySQL將啟用“嚴(yán)格”模式。在嚴(yán)格模式下,MySQL 服務(wù)器會(huì)更加嚴(yán)格地對(duì)待接收到的不合格數(shù)據(jù),它不會(huì)把這些不合格的數(shù)據(jù)轉(zhuǎn)換為最為接近的有效值,而是會(huì)拒絕接收它們。
簡(jiǎn)單來(lái)說(shuō) MySQL 的嚴(yán)格模式就是 MySQL 自身對(duì)數(shù)據(jù)進(jìn)行的嚴(yán)格校驗(yàn),例如格式、長(zhǎng)度和類型等。
TRADITIONAL
類似于嚴(yán)格模式,但是對(duì)于插入的不合格值會(huì)給出錯(cuò)誤而不是警告??梢詰?yīng)用在事務(wù)表和非事務(wù)表,用于事務(wù)表時(shí),只要出現(xiàn)錯(cuò)誤就會(huì)立即回滾。
如果你使用的是非事務(wù)存儲(chǔ)引擎,建議不要把 SQL Mode 值設(shè)置為 TRADITIONAL,因?yàn)槌霈F(xiàn)錯(cuò)誤前進(jìn)行的操作不會(huì)回滾,這樣會(huì)導(dǎo)致操作只進(jìn)行了一部分。
ANSI_QUOTES
MySQL 服務(wù)器會(huì)把雙引號(hào)識(shí)別為一個(gè)標(biāo)識(shí)符引用字符,而不是字符串的引號(hào)字符。所以在啟用 ANSI_QUOTES 時(shí),不能用雙引號(hào)來(lái)引用字符串。
PIPES_ AS_ CONCAT
會(huì)讓 MySQL 服務(wù)器把||當(dāng)成一個(gè)標(biāo)準(zhǔn)的 SQL 字符串連接運(yùn)算符,而不會(huì)把它當(dāng)成是 OR 運(yùn)算符的同義詞。
在 Oracle 等數(shù)據(jù)庫(kù)中,||被視為字符串的連接操作符,所以在其它數(shù)據(jù)庫(kù)中含有||操作符的 SQL 在 MySQL 中將無(wú)法執(zhí)行,為了解決這個(gè)問(wèn)題,MySQL 提供了這個(gè)值。
ANSI
會(huì)同時(shí)啟用 ANSI_QUOTES、PIPES_ AS_CONCAT 和其它的幾個(gè)模式值,使 MySQL 服務(wù)器的行為比它的默認(rèn)運(yùn)行狀態(tài)更接近于標(biāo)準(zhǔn) SQL。
如何設(shè)置sql_mode
在設(shè)置 SQL 模式時(shí),需要指定一個(gè)由單個(gè)模式值或多個(gè)模式值(多個(gè)模式值用逗號(hào)分隔)構(gòu)成的值,或者指定一個(gè)空字符串,用以清除該值。模式值不區(qū)分大小寫。
如果想在啟動(dòng)服務(wù)器時(shí)設(shè)置 SQL 模式,那么可以在 mysqld 命令行,或者在某個(gè)選項(xiàng)文件里設(shè)置系統(tǒng)變量 sql_mode??梢允褂孟旅嬲Z(yǔ)句:
sql_mode= "TRADITIONAL " sql_mode= "ANSI_ QUOTES, PIPES_ AS_ CONCAT"
如果只是想在運(yùn)行時(shí)更改 SQL 模式,那么可以使用 SET 語(yǔ)句來(lái)設(shè)置 sql_mode 系統(tǒng)變量。
SET sql_mode = ' TRADITIONAL' ;
如果想設(shè)置全局性的 SQL 模式,則需要加上 GLOBAL 關(guān)鍵字:
SET GLOBAL sql_mode = ' TRADITIONAL';
設(shè)置全局變量需要具備 SUPER 管理權(quán)限。新設(shè)置的全局變量值將成為此后連入客戶端的默認(rèn) SQL 模式。
如果想獲取當(dāng)前會(huì)話或全局的 SQL 模式值,則可以使用如下語(yǔ)句:
SELECT @@SESSION.sql_mode; SELECT @@GLOBAL. sql_mode;
其返回值由當(dāng)前啟用的所有模式構(gòu)成,兩個(gè)模式之間以逗號(hào)隔開(kāi)。如果當(dāng)前沒(méi)有啟用任何模式,則返回一個(gè)空值。
上述內(nèi)容就是MySQL服務(wù)器的SQL模式是什么,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。
分享標(biāo)題:MySQL服務(wù)器的SQL模式是什么-創(chuàng)新互聯(lián)
分享URL:http://www.rwnh.cn/article4/ceicoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、建站公司、網(wǎng)站設(shè)計(jì)公司、ChatGPT、微信小程序、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
網(wǎng)頁(yè)設(shè)計(jì)公司知識(shí)