MySQL伺服器的SQL模式
與其它資料庫不同,MySQL 伺服器可以在不同的 SQL 模式下執行,並且可以針對不同的客戶端以不同的方式應用這些模式,具體取決於 sql_mode 系統變數的值。 |
SQL 模式定義了 MySQL 資料庫所支援的 SQL 語法和資料校驗(資料驗證檢查),這樣可以更容易的在不同環境下使用 MySQL。
在 MySQL 中,SQL 模式常用來解決下面幾類問題:
透過設定 SQL Mode,可以完成不同嚴格程度的資料校驗,有效地保障了資料的準確性。
透過設定 SQL Mode 為 ANSI 模式,可以保證大多數 SQL 符合標準的 SQL 語法,使不同資料庫之間進行遷移時,不需要進行較大的修改。
在不同資料庫之間進行資料遷移之前,設定 SQL Mode 可以使 MySQL 中的資料更方便地遷移到目標資料庫中。
下面列出了幾種 SQL 模式常用的值。
如果將 sql_mode 的值設定為 TRICT_ALL_TABLES 和 STRICT_TRANS_TABLES,那麼 MySQL將啟用“嚴格”模式。在嚴格模式下,MySQL 伺服器會更加嚴格地對待接收到的不合格資料,它不會把這些不合格的資料轉換為最為接近的有效值,而是會拒絕接收它們。
簡單來說 MySQL 的嚴格模式就是 MySQL 自身對資料進行的嚴格校驗,例如格式、長度和型別等。
類似於嚴格模式,但是對於插入的不合格值會給出錯誤而不是警告。可以應用在事務表和非事務表,用於事務表時,只要出現錯誤就會立即回滾。
如果你使用的是非事務儲存引擎,建議不要把 SQL Mode 值設定為 TRADITIONAL,因為出現錯誤前進行的操作不會回滾,這樣會導致操作只進行了一部分。
MySQL 伺服器會把雙引號識別為一個識別符號引用字元,而不是字串的引號字元。所以在啟用 ANSI_QUOTES 時,不能用雙引號來引用字串。
會讓 MySQL 伺服器把||當成一個標準的 SQL 字串連線運算子,而不會把它當成是 OR 運算子的同義詞。
在 Oracle 等資料庫中,||被視為字串的連線運算子,所以在其它資料庫中含有||運算子的 SQL 在 MySQL 中將無法執行,為了解決這個問題,MySQL 提供了這個值。
會同時啟用 ANSI_QUOTES、PIPES_ AS_CONCAT 和其它的幾個模式值,使 MySQL 伺服器的行為比它的預設執行狀態更接近於標準 SQL。
在設定 SQL 模式時,需要指定一個由單個模式值或多個模式值(多個模式值用逗號分隔)構成的值,或者指定一個空字串,用以清除該值。模式值不區分大小寫。
如果想在啟動伺服器時設定 SQL 模式,那麼可以在 mysqld 行,或者在某個選項檔案裡設定系統變數 sql_mode。可以使用下面語句:
sql_mode= "TRADITIONAL " sql_mode= "ANSI_ QUOTES, PIPES_ AS_ CONCAT"
如果只是想在執行時更改 SQL 模式,那麼可以使用 SET 語句來設定 sql_mode 系統變數。
SET sql_mode = ' TRADITIONAL' ;
如果想設定全域性性的 SQL 模式,則需要加上 GLOBAL 關鍵字:
SET GLOBAL sql_mode = ' TRADITIONAL';
設定全域性變數需要具備 SUPER 管理許可權。新設定的全域性變數值將成為此後連入客戶端的預設 SQL 模式。
如果想獲取當前會話或全域性的 SQL 模式值,則可以使用如下語句:
SELECT @@SESSION.sql_mode; SELECT @@GLOBAL. sql_mode;
其返回值由當前啟用的所有模式構成,兩個模式之間以逗號隔開。如果當前沒有啟用任何模式,則返回一個空值。
原文地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2694889/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Mysql學習】SQL伺服器模式MySql伺服器模式
- 【Mysql 學習】SQL伺服器模式MySql伺服器模式
- MySQL SQL模式MySql模式
- MySQL SQL模式介紹MySql模式
- MYSQL的安全模式:sql_safe_updates介紹MySql模式
- SQL Server的流水模式SQLServer模式
- Mysql的sql_modeMySql
- mysql的sql優化MySql優化
- MySQL的ACID模式MySql模式
- MySQL在ROW模式下通過binlog提取SQL語句MySql模式
- [Mysql]SQLMySql
- MySQL資料型別及sql模型及伺服器變數MySql資料型別模型伺服器變數
- mysql_sql小學(一)_mysql_sqlMySql
- MYSQL和SQL的區別MySql
- Mysql常用的維護 SQLMySql
- 專用伺服器模式(MTS)和共享伺服器模式伺服器模式
- pl/sql中的引數模式SQL模式
- ORACLE專用伺服器模式(DEDICATED)與共享伺服器模式(SHARE)的區別Oracle伺服器模式
- MySQL常用SQLMySql
- mysql 常用sqlMySql
- mysql實戰--MYSQL中的SQL分組方法MySql
- 【MYSQL】Mysql常用檢查sqlMySql
- MySQL主主模式和主從模式的區別MySql模式
- mysql中SQL的概念介紹MySql
- MySQL的SQL等價改寫MySql
- MySQL中常用的SQL語句MySql
- Mysql 分頁效率不同的SQLMySql
- MySQL複製模式的全面剖析MySql模式
- Oracle共享伺服器的連線模式Oracle伺服器模式
- 7、共享模式的檔案伺服器模式伺服器
- mysql伺服器的字符集MySql伺服器
- 【MySQL】測試Windows版本的MySQL伺服器是否工作MySqlWindows伺服器
- MySQL Strict SQL MODEMySql
- MySQL SQL效能分析MySql
- MySQL 去重SQLMySql
- MySQL SQL hint 提示MySql
- mysql sql_modeMySql
- mysql的三個sql的monitor選項MySql