您好,登錄后才能下訂單哦!
下面一起來(lái)了解下設(shè)置和查詢MYSQL SQL模式方法,相信大家看完肯定會(huì)受益匪淺,文字在精不在多,希望設(shè)置和查詢MYSQL SQL模式方法這篇短內(nèi)容是你想要的。
設(shè)置和查詢SQL模式
通過(guò)修改sql_mode變量的值來(lái)改變SQL模式。
SQL模式可以在全局級(jí)別下設(shè)置,也可以在會(huì)話級(jí)別下設(shè)置。在數(shù)據(jù)庫(kù)啟動(dòng)時(shí)和數(shù)據(jù)庫(kù)運(yùn)行時(shí)都可以對(duì)sql_mode的值進(jìn)行修改。
在數(shù)據(jù)庫(kù)啟動(dòng)時(shí)設(shè)置SQL模式
在命令行中使用--sql_mode='modes'選項(xiàng),或者在配置文件中使用sql_mode="modes"。
modes是一個(gè)以逗號(hào)分隔的模式的列表。
要清除SQL模式,將它設(shè)置為一個(gè)空的字符串,例如sql_mode=""
在數(shù)據(jù)庫(kù)運(yùn)行時(shí)設(shè)置SQL模式
使用SET語(yǔ)句來(lái)更改sql_mode的值,例如:
SET GLOBAL sql_mode = 'modes';
SET SESSION sql_mode = 'modes';
設(shè)置全局變量的值需要SUPER權(quán)限,設(shè)置后應(yīng)用到之后所有客戶端連接的操作。
設(shè)置session變量只應(yīng)用于當(dāng)前客戶端,每個(gè)客戶端都可以在任何時(shí)候更改它的sessionSQL模式。
查詢SQL模式
要確定當(dāng)前使用的SQL模式,使用以下語(yǔ)句進(jìn)行查詢
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;
主要的SQL模式
主要的sql_mode的值為以下幾種:
SQL模式的完整列表
sql模式可以大致分為以下幾類(lèi)
在MySQL5.7.4到MySQL5.7.7中,嚴(yán)格模式包括ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE和NO_ZERO_IN_DATE的效果。
在MySQL5.7.4以前版本中,以上三個(gè)模式被棄用
在MySQL5.7.4到MySQL5.7.7中,以上三個(gè)模式不產(chǎn)生作用,他們的效果包含在嚴(yán)格模式中。
在MySQL5.7.8及以后版本中,以上三個(gè)模式才有自己?jiǎn)为?dú)的作用,而不是嚴(yán)格模式的一部分。但是,他們應(yīng)該和嚴(yán)格模式一起使用,并且默認(rèn)情況下他們都是開(kāi)啟的。如果使用嚴(yán)格模式而不使用上述模式會(huì)產(chǎn)生警告,如果使用上述模式中的任何一個(gè)但是不啟用嚴(yán)格模式也會(huì)產(chǎn)生警告。
由于以上三個(gè)模式以棄用,在后續(xù)的MySQL版本中,他們作為一個(gè)單獨(dú)的模式名會(huì)被刪除,并且他們的效果將包含在嚴(yán)格模式中。
NO_UNSIGNED_SUBTRACTION
對(duì)于整數(shù)之間的減法,如果一個(gè)值的類(lèi)型是UNSIGNED,默認(rèn)生成一個(gè)無(wú)符號(hào)整型的結(jié)果,但是如果結(jié)果是個(gè)負(fù)數(shù),就會(huì)出現(xiàn)錯(cuò)誤
如果啟用NO_UNSIGNED_SUBTRACTION,結(jié)果為負(fù)時(shí)不會(huì)報(bào)錯(cuò)
IGNORE_SPACE
在函數(shù)名和(中間允許空格。這將導(dǎo)致內(nèi)置函數(shù)名被當(dāng)作保留字處理。因此,與函數(shù)名相同的標(biāo)識(shí)符必須被引用。
例如,因?yàn)榇嬖贑OUNT()函數(shù),直接使用count作為表名會(huì)產(chǎn)生錯(cuò)誤
mysql> CREATE TABLE count (i INT);
ERROR 1064 (42000): You have an error in your SQL syntax
應(yīng)該將表名引用起來(lái):
mysql> CREATE TABLE
count
(i INT);
Query OK, 0 rows affected (0.00 sec)
SQL模式的組合
以下模式是對(duì)上述SQL模式完整列表中的部分組合的縮寫(xiě)
名稱(chēng) | 完整列表 |
---|---|
ANSI | REAL_AS_FLOAT, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE,和 (在MySQL 5.7.5) ONLY_FULL_GROUP_BY |
DB2 | PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS |
MSSQL | PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS |
POSTGRESQL | PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS |
ORACLE | PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER |
MAXDB | PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER |
TRADITIONAL | STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION |
看完設(shè)置和查詢MYSQL SQL模式方法這篇文章后,很多讀者朋友肯定會(huì)想要了解更多的相關(guān)內(nèi)容,如需獲取更多的行業(yè)信息,可以關(guān)注我們的行業(yè)資訊欄目。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。