溫馨提示×

溫馨提示×

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

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

Mysql的SQL_MODE常用值有哪些

發(fā)布時間:2021-11-19 10:50:05 來源:億速云 閱讀:220 作者:iii 欄目:MySQL數(shù)據(jù)庫

這篇文章主要講解了“Mysql的SQL_MODE常用值有哪些”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Mysql的SQL_MODE常用值有哪些”吧!

SQL_SAFE_UPDATES

在做數(shù)據(jù)庫實驗的時候?qū)ysql表進行UPDATE操作時,mysql給了我一個錯誤:Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode

原來mysql有個叫SQL_SAFE_UPDATES的變量。查了好久,全部中文結(jié)果都是copy來copy去的,而且也只是簡單給出解決方式。后來找到老外網(wǎng),上面這么說:MySQL will refuse to run the UPDATE or DELETE query if executed without the WHERE clause or LIMIT clause. MySQL will also refuse the query which have WHERE clause but there is no condition with the KEY column(自己翻譯吧)。但是還是不知道這個update safe model是干嘛用的,只能簡單猜測:為了數(shù)據(jù)的安全。

SQL_SAFE_UPDATES有兩個取值:0和1。SQL_SAFE_UPDATES = 1時,不帶where和limit條件的update和delete操作語句是無法執(zhí)行的,即使是有where和limit條件但不帶key column的update和delete也不能執(zhí)行。SQL_SAFE_UPDATES = 0時,update和delete操作將會順利執(zhí)行。那么很顯然,此變量的默認值是1。如圖改完后update操作順利完成:
Mysql的SQL_MODE常用值有哪些 

SQL_MODE(sql語法模式)
  1. sql_mode常用值如下: 
    ONLY_FULL_GROUP_BY:

    對于GROUP BY聚合操作,如果在SELECT中的列,沒有在GROUP BY中出現(xiàn),那么這個SQL是不合法的,因為列不在GROUP BY從句中


    NO_AUTO_VALUE_ON_ZERO:

    該值影響自增長列的插入。默認設(shè)置下,插入0或NULL代表生成下一個自增長值。如果用戶 希望插入的值為0,而該列又是自增長的,那么這個選項就有用了。


    STRICT_TRANS_TABLES:

    在該模式下,如果一個值不能插入到一個事務(wù)表中,則中斷當前的操作,對非事務(wù)表不做限制

    NO_ZERO_IN_DATE:

    在嚴格模式下,不允許日期和月份為零


    NO_ZERO_DATE:

    設(shè)置該值,mysql數(shù)據(jù)庫不允許插入零日期,插入零日期會拋出錯誤而不是警告。


    ERROR_FOR_DIVISION_BY_ZERO:

    在INSERT或UPDATE過程中,如果數(shù)據(jù)被零除,則產(chǎn)生錯誤而非警告。如 果未給出該模式,那么數(shù)據(jù)被零除時MySQL返回NULL


    NO_AUTO_CREATE_USER:

    禁止GRANT創(chuàng)建密碼為空的用戶


    NO_ENGINE_SUBSTITUTION:

    如果需要的存儲引擎被禁用或未編譯,那么拋出錯誤。不設(shè)置此值時,用默認的存儲引擎替代,并拋出一個異常


    PIPES_AS_CONCAT:

    將"||"視為字符串的連接操作符而非或運算符,這和Oracle數(shù)據(jù)庫是一樣的,也和字符串的拼接函數(shù)Concat相類似


    ANSI_QUOTES:

    啟用ANSI_QUOTES后,不能用雙引號來引用字符串,因為它被解釋為識別符


    ORACLE的sql_mode設(shè)置等同:PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER.

     

    如果使用mysql,為了繼續(xù)保留大家使用oracle的習慣,可以對mysql的sql_mode設(shè)置如下

     

    在my.cnf添加如下配置
    [mysqld]
    sql_mode='ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,

    ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,ANSI_QUOTES'

感謝各位的閱讀,以上就是“Mysql的SQL_MODE常用值有哪些”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Mysql的SQL_MODE常用值有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

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

AI