1. 程式人生 > >MySQL SQL mode簡介

MySQL SQL mode簡介

一、通過設定 SQL Mode,可以完成不同嚴格程度的資料校驗,有效地保障資料準確性。   通過設定 SQL Mode 為 ANSI 模式,來保證大多數 SQL 符合標準的 SQL 語法,這樣應用在 不同資料庫之間進行遷移時,則不需要對業務 SQL 進行較大的修改。   在不同資料庫之間進行資料遷移之前,通過設定 SQL Mode 可以使 MySQL 上的資料更方 便地遷移到目標資料庫中。

二、在 MySQL 5.0 上,查詢預設的 SQL Mode(sql_mode 引數)為:REAL_AS_FLOAT、 PIPES_AS_CONCAT、ANSI_QUOTES、GNORE_SPACE 和 ANSI。在這種模式下允許插入超過欄位 長度的值,只是在插入後,MySQL 會返回一個 warning。通過修改 sql_mode 為 STRICT_TRANS_TABLES(嚴格模式)實現了資料的嚴格校驗,使錯誤資料不能插入表中,從 而保證了資料的準確性,

sql:set session sql_model = " 引數";

三、SQL Mode常見功能

1、校驗日期資料地合法性

2、在INSERT或UPDATE過程中,如果SQL MODE處於TRADITIONAL模式,執行MOD(X, 0)會產生錯誤,因為 TRADITIONAL 也屬於嚴格模式,在非嚴格模式下 MOD(X,0)返回的結 果是 NULL,所以在含有 MOD 的運算中要根據實際情況設定好 sql_mode。

3、啟用 NO_BACKSLASH_ESCAPES 模式,使反斜線成為普通字元。在匯入資料時,如 果資料中含有反斜線字元,啟用 NO_BACKSLASH_ESCAPES 模式保證資料的正確性,是個不錯 的選擇。

4、啟用 PIPES_AS_CONCAT 模式。將“||”視為字串連線操作符,在 Oracle 等資料 庫中,“||”被視為字串的連線操作符,所以,在其他資料庫中含有“||”操作符的 SQL 在 MySQL 中將無法執行,為了解決這個問題,MySQL 提供了 PIPES_AS_CONCAT 模式。

四 、資料庫遷移時候需要使用到組合的資料庫mode。