《Mysql應用Mysql SQL服務器模式介紹》要點:
本文介紹了Mysql應用Mysql SQL服務器模式介紹,希望對您有用。如果有疑問,可以聯系我們。
MYSQL學習mysql SQL服務器模式
MYSQL學習MySQL服務器可以以不同的SQL模式來操作,并且可以為不同客戶端應用不同模式.這樣每個應用程序可以根據本身的需求來定制服務器的操作模式.
MYSQL學習模式定義MySQL應支持哪些SQL語法,以及應執行哪種數據驗證檢查.這樣可以更容易地在分歧的環境中使用MySQL,并結合其它數據庫服務器使用MySQL.
MYSQL學習你可以用--sql-mode="modes"選項啟動mysqld來設置默認SQL模式.如果你想要重設,該值還可以為空(--sql-mode ="").
MYSQL學習你還可以在啟動后用SET [SESSION|GLOBAL] sql_mode='modes'語句設置sql_mode變量來更改SQL模式.設置GLOBAL變量時需要擁有SUPER權限,并且會影響從那時起連接的所有客戶端的操作.設置SESSION變量只影響當前的客戶端.任何客戶端可以隨時更改本身的會話 sql_mode值.
MYSQL學習Modesis是用逗號(‘,')間隔開的一系列分歧的模式.你可以用SELECT @@sql_mode語句查詢當前的模式.默認值是空(沒有設置任何模式).
MYSQL學習主要重要sql_mode值
MYSQL學習?ANSI
MYSQL學習變動語法和行為,使其更符合標準SQL.
MYSQL學習?STRICT_TRANS_TABLES
MYSQL學習如果不克不及將給定的值插入到事務表中,則放棄該語句.對于非事務表,如果值出現在單行語句或多行語句的第1行,則放棄該語句.本節后面給出了更詳細的描述.
MYSQL學習?TRADITIONAL
MYSQL學習Make MySQL的行為象“傳統”SQL數據庫系統.該模式的簡單描述是當在列中插入不正確的值時“給出錯誤而不是警告”.注釋:一旦發現錯誤立即放棄INSERT/UPDATE.如果你使用非事務存儲引擎,這種方式不是你想要的,因為出現錯誤前進行的數據變動不會“滾動”,結果是更新“只進行了一部分”.
MYSQL學習本手冊指“嚴格模式”,表現至少STRICT _TRANS_TABLES或STRICT _ALL_TABLES被啟用的模式.
MYSQL學習下面描述了支持的所有模式:
MYSQL學習?ALLOW_INVALID_DATES
MYSQL學習在嚴格模式下不要檢查全部日期.只檢查1到12之間的月份和1到31之間的日.這在Web應用程序中,當你從三個不同的字段獲取年、月、日,并且想要確切保留用戶插入的內容(不進行日期驗證)時很重要.該模式適用于DATE和DATETIME列.不適合TIMESTAMP列,TIMESTAMP列需要驗證日期.
MYSQL學習啟用嚴格模式后,服務器必要合法的月和日,不僅僅是分別在1到12和1到31范圍內.例如,禁用嚴格模式時'2004-04-31'是合法的,但啟用嚴格模式后是非法的.要想在嚴格模式允許遮掩固定日期,還應啟用ALLOW_INVALID_DATES.
MYSQL學習?ANSI_QUOTES
MYSQL學習將‘"'視為辨認符引號(‘`'引號字符),不要視為字符串的引號字符.在ANSI模式,你可以仍然使用‘`'來引用辨認符.啟用ANSI_QUOTES后,你不能用雙引號來引用字符串,因為它被解釋為辨認符.
MYSQL學習?ERROR_FOR_DIVISION_BY_ZERO
MYSQL學習在嚴格模式,在INSERT或UPDATE過程中,如果被零除(或MOD(X,0)),則產生錯誤(不然為警告).如果未給出該模式,被零除時MySQL返回NULL.如果用到INSERT IGNORE或UPDATE IGNORE中,MySQL生成被零除警告,但操作結果為NULL.
MYSQL學習?HIGH_NOT_PRECEDENCE
MYSQL學習NOT操作符的優先順序是表達式例如NOT a BETWEEN b AND c被解釋為NOT (a BETWEEN b AND c).在一些舊版本MySQL中, 表達式被解釋為(NOT a) BETWEEN b AND c.啟用HIGH_NOT_PRECEDENCESQL模式,可以獲得以前的更高優先級的成果.
MYSQL學習?IGNORE_SPACE
MYSQL學習允許函數名和‘('之間有空格.強制將所有函數名視為保存的字.結果是,如果你想要拜訪保存為字的數據庫、表或列名,你必須引用它.例如,因為有USER()函數,mysql數據庫中的user表名和該表內的User列被保存下來,因此你必須引用它們:
MYSQL學習?NO_AUTO_CREATE_USER
MYSQL學習防止GRANT自動創建新用戶,除非還指定了暗碼.
MYSQL學習?NO_AUTO_VALUE_ON_ZERO
MYSQL學習NO_AUTO_VALUE_ON_ZERO影響AUTO_INCREMENT列的處置.一般情況,你可以向該列插入NULL或0生成下一個序列號.NO_AUTO_VALUE_ON_ZERO禁用0,因此只有NULL可以生成下一個序列號.
MYSQL學習如果將0保存到表的AUTO_INCREMENT列,該模式會很有用.(不推薦采用該慣例).例如,如果你用mysqldump轉儲表并重載,MySQL遇到0值一般會生成新的序列號,生成的表的內容與轉儲的表不同.重載轉儲文件前啟用NO_AUTO_VALUE_ON_ZERO可以辦理該問題.mysqldump在輸出中自動包括啟用NO_AUTO_VALUE_ON_ZERO的語句.
MYSQL學習?NO_BACKSLASH_ESCAPES
MYSQL學習禁用反斜線字符(‘\')做為字符串內的退出字符.啟用該模式,反斜線則成為普通字符.
MYSQL學習?NO_DIR_IN_CREATE
MYSQL學習創立表時,忽視所有INDEX DIRECTORY和DATA DIRECTORY指令.該選項對從復制服務器有用.
MYSQL學習?NO_ENGINE_SUBSTITUTION
MYSQL學習如果必要的存儲引擎被禁用或未編譯,可以防止自動替換存儲引擎.
MYSQL學習?NO_FIELD_OPTIONS
MYSQL學習不要在SHOW CREATE TABLE的輸出中打印MySQL專用列選項.該模式在可移植模式(portability mode)下用于mysqldump.
MYSQL學習?NO_KEY_OPTIONS
MYSQL學習不要在SHOW CREATE TABLE的輸出中打印MySQL專用索引選項.該模式在可移植模式(portability mode)下用于mysqldump.
MYSQL學習?NO_TABLE_OPTIONS
MYSQL學習不要在SHOW CREATE TABLE的輸出中打印MySQL專用表選項(例如ENGINE).該模式在可移植模式(portability mode)下用于mysqldump.
MYSQL學習?NO_UNSIGNED_SUBTRACTION
MYSQL學習在減運算中,如果某個操作數沒有符號,不要將結果標志為UNSIGNED.請注意這樣使UNSIGNED BIGINT不能100%用于上下文中.參見12.8節,“Cast函數和操作符”.
MYSQL學習?NO_ZERO_DATE
MYSQL學習在嚴格模式,不要將 '0000-00-00'做為合法日期.你仍然可以用IGNORE選項插入零日期.在非嚴格模式,可以接受該日期,但會生成警告.
MYSQL學習?NO_ZERO_IN_DATE
MYSQL學習在嚴格模式,不接受月或日部門為0的日期.如果使用IGNORE選項,我們為類似的日期插入'0000-00-00'.在非嚴格模式,可以接受該日期,但會生成警告.
MYSQL學習?ONLY_FULL_GROUP_BY
MYSQL學習不要讓GROUP BY部門中的查詢指向未選擇的列.
MYSQL學習?PIPES_AS_CONCAT
MYSQL學習將||視為字符串連接操作符(+)(同CONCAT()),而不視為OR.
MYSQL學習?REAL_AS_FLOAT
MYSQL學習將REAL視為FLOAT的同義詞,而不是DOUBLE的同義詞.
MYSQL學習?STRICT_TRANS_TABLES
MYSQL學習為所有存儲引擎啟用嚴格模式.非法數據值被拒絕.后面有詳細闡明.
MYSQL學習?STRICT_TRANS_TABLES
MYSQL學習為事務存儲引擎啟用嚴格模式,也可能為非事務存儲引擎啟用嚴格模式.后面有詳細闡明.
MYSQL學習嚴格模式控制MySQL如何處理非法或丟失的輸入值.有幾種原因可以使一個值為非法.例如,數據類型錯誤,不適合列,或超出范圍.當新插入的行不包括某列的沒有顯示定義DEFAULT子句的值,則該值被丟失.
MYSQL學習對于事務表,當啟用STRICT_ALL_TABLES或STRICT_TRANS_TABLES模式時,如果語句中有非法或丟失值,則會出現差錯.語句被放棄并滾動.
MYSQL學習對于非事務表,如果插入或更新的第1行出現壞值,兩種模式的行為相同.語句被放棄,表堅持不變.如果語句插入或修改多行,并且壞值出現在第2或后面的行,結果取決于啟用了哪個嚴格選項:
MYSQL學習?對于STRICT_ALL_TABLES,MySQL返回錯誤并忽視剩余的行.但是,在這種情況下,前面的行已經被插入或更新.這說明你可以部分更新,這可能不是你想要的.要避免這點,最好使用單行語句,因為這樣可以不變動表即可以放棄.
MYSQL學習?對于STRICT_TRANS_TABLES,MySQL將非法值轉換為最接近該列的合法值并插入調整后的值.如果值丟失,MySQL在列中插入隱式 默認值.在任何情況下,MySQL都會生成警告而不是給出差錯并繼續執行語句.13.1.5節,“CREATE TABLE語法”描述了隱式默認值.
MYSQL學習嚴格模式不允許非法日期,例如'2004-04-31'.它不允許禁止日期使用“零”部門,例如'2004-04-00'或“零”日期.要想禁止,應在嚴格模式基礎上,啟用NO_ZERO_IN_DATE和NO_ZERO_DATE SQL模式.
MYSQL學習如果你不使用嚴格模式(即不啟用STRICT_TRANS_TABLES或STRICT_ALL_TABLES模式),對于非法或喪失的值,MySQL將插入調整后的值并給出警告.在嚴格模式,你可以通過INSERT IGNORE或UPDATE IGNORE來實現.參見13.5.4.22節,“SHOW WARNINGS語法”.
《Mysql應用Mysql SQL服務器模式介紹》是否對您有啟發,歡迎查看更多與《Mysql應用Mysql SQL服務器模式介紹》相關教程,學精學透。維易PHP學院為您提供精彩教程。