最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql SQL服務(wù)器模式介紹

 更新時間:2014年12月01日 12:04:50   投稿:junjie  
這篇文章主要介紹了Mysql SQL服務(wù)器模式介紹,需要的朋友可以參考下MySQL服務(wù)器可以以不同的SQL模式來操作,并且可以為不同客戶端應(yīng)用不同模式,這樣每個應(yīng)用程序可以根據(jù)自己的需求來定制服務(wù)器的操作模式,需要的朋友可以參考下

mysql SQL服務(wù)器模式

MySQL服務(wù)器可以以不同的SQL模式來操作,并且可以為不同客戶端應(yīng)用不同模式。這樣每個應(yīng)用程序可以根據(jù)自己的需求來定制服務(wù)器的操作模式。

模式定義MySQL應(yīng)支持哪些SQL語法,以及應(yīng)執(zhí)行哪種數(shù)據(jù)驗證檢查。這樣可以更容易地在不同的環(huán)境中使用MySQL,并結(jié)合其它數(shù)據(jù)庫服務(wù)器使用MySQL。

你可以用--sql-mode="modes"選項啟動mysqld來設(shè)置默認(rèn)SQL模式。如果你想要重設(shè),該值還可以為空(--sql-mode ="")。

你還可以在啟動后用SET [SESSION|GLOBAL] sql_mode='modes'語句設(shè)置sql_mode變量來更改SQL模式。設(shè)置GLOBAL變量時需要擁有SUPER權(quán)限,并且會影響從那時起連接的所有客戶端的操作。設(shè)置SESSION變量只影響當(dāng)前的客戶端。任何客戶端可以隨時更改自己的會話 sql_mode值。

Modesis是用逗號(‘,')間隔開的一系列不同的模式。你可以用SELECT @@sql_mode語句查詢當(dāng)前的模式。默認(rèn)值是空(沒有設(shè)置任何模式)。

主要重要sql_mode值

·ANSI

更改語法和行為,使其更符合標(biāo)準(zhǔn)SQL。

·STRICT_TRANS_TABLES

如果不能將給定的值插入到事務(wù)表中,則放棄該語句。對于非事務(wù)表,如果值出現(xiàn)在單行語句或多行語句的第1行,則放棄該語句。本節(jié)后面給出了更詳細(xì)的描述。

·TRADITIONAL

Make MySQL的行為象“傳統(tǒng)”SQL數(shù)據(jù)庫系統(tǒng)。該模式的簡單描述是當(dāng)在列中插入不正確的值時“給出錯誤而不是警告”。注釋:一旦發(fā)現(xiàn)錯誤立即放棄INSERT/UPDATE。如果你使用非事務(wù)存儲引擎,這種方式不是你想要的,因為出現(xiàn)錯誤前進(jìn)行的數(shù)據(jù)更改不會“滾動”,結(jié)果是更新“只進(jìn)行了一部分”。

本手冊指“嚴(yán)格模式”,表示至少STRICT _TRANS_TABLES或STRICT _ALL_TABLES被啟用的模式。

下面描述了支持的所有模式:

·ALLOW_INVALID_DATES

在嚴(yán)格模式下不要檢查全部日期。只檢查1到12之間的月份和1到31之間的日。這在Web應(yīng)用程序中,當(dāng)你從三個不同的字段獲取年、月、日,并且想要確切保存用戶插入的內(nèi)容(不進(jìn)行日期驗證)時很重要。該模式適用于DATE和DATETIME列。不適合TIMESTAMP列,TIMESTAMP列需要驗證日期。

啟用嚴(yán)格模式后,服務(wù)器需要合法的月和日,不僅僅是分別在1到12和1到31范圍內(nèi)。例如,禁用嚴(yán)格模式時'2004-04-31'是合法的,但啟用嚴(yán)格模式后是非法的。要想在嚴(yán)格模式允許遮掩固定日期,還應(yīng)啟用ALLOW_INVALID_DATES。

·ANSI_QUOTES

將‘"'視為識別符引號(‘`'引號字符),不要視為字符串的引號字符。在ANSI模式,你可以仍然使用‘`'來引用識別符。啟用ANSI_QUOTES后,你不能用雙引號來引用字符串,因為它被解釋為識別符。

·ERROR_FOR_DIVISION_BY_ZERO

在嚴(yán)格模式,在INSERT或UPDATE過程中,如果被零除(或MOD(X,0)),則產(chǎn)生錯誤(否則為警告)。如果未給出該模式,被零除時MySQL返回NULL。如果用到INSERT IGNORE或UPDATE IGNORE中,MySQL生成被零除警告,但操作結(jié)果為NULL。

·HIGH_NOT_PRECEDENCE

NOT操作符的優(yōu)先順序是表達(dá)式例如NOT a BETWEEN b AND c被解釋為NOT (a BETWEEN b AND c)。在一些舊版本MySQL中, 表達(dá)式被解釋為(NOT a) BETWEEN b AND c。啟用HIGH_NOT_PRECEDENCESQL模式,可以獲得以前的更高優(yōu)先級的結(jié)果。

復(fù)制代碼 代碼如下:

mysql> SET sql_mode = '';
mysql> SELECT NOT 1 BETWEEN -5 AND 5;
        -> 0
mysql> SET sql_mode = 'broken_not';
mysql> SELECT NOT 1 BETWEEN -5 AND 5;
        -> 1

·IGNORE_SPACE

允許函數(shù)名和‘('之間有空格。強(qiáng)制將所有函數(shù)名視為保存的字。結(jié)果是,如果你想要訪問保存為字的數(shù)據(jù)庫、表或列名,你必須引用它。例如,因為有USER()函數(shù),mysql數(shù)據(jù)庫中的user表名和該表內(nèi)的User列被保存下來,因此你必須引用它們:

復(fù)制代碼 代碼如下:

SELECT "User" FROM mysql."user";

·NO_AUTO_CREATE_USER

防止GRANT自動創(chuàng)建新用戶,除非還指定了密碼。

·NO_AUTO_VALUE_ON_ZERO

NO_AUTO_VALUE_ON_ZERO影響AUTO_INCREMENT列的處理。一般情況,你可以向該列插入NULL或0生成下一個序列號。NO_AUTO_VALUE_ON_ZERO禁用0,因此只有NULL可以生成下一個序列號。

如果將0保存到表的AUTO_INCREMENT列,該模式會很有用。(不推薦采用該慣例)。例如,如果你用mysqldump轉(zhuǎn)儲表并重載,MySQL遇到0值一般會生成新的序列號,生成的表的內(nèi)容與轉(zhuǎn)儲的表不同。重載轉(zhuǎn)儲文件前啟用NO_AUTO_VALUE_ON_ZERO可以解決該問題。mysqldump在輸出中自動包括啟用NO_AUTO_VALUE_ON_ZERO的語句。

·NO_BACKSLASH_ESCAPES

禁用反斜線字符(‘\')做為字符串內(nèi)的退出字符。啟用該模式,反斜線則成為普通字符。

·NO_DIR_IN_CREATE

創(chuàng)建表時,忽視所有INDEX DIRECTORY和DATA DIRECTORY指令。該選項對從復(fù)制服務(wù)器有用。

·NO_ENGINE_SUBSTITUTION

如果需要的存儲引擎被禁用或未編譯,可以防止自動替換存儲引擎。

·NO_FIELD_OPTIONS

不要在SHOW CREATE TABLE的輸出中打印MySQL專用列選項。該模式在可移植模式(portability mode)下用于mysqldump。

·NO_KEY_OPTIONS

不要在SHOW CREATE TABLE的輸出中打印MySQL專用索引選項。該模式在可移植模式(portability mode)下用于mysqldump。

·NO_TABLE_OPTIONS

不要在SHOW CREATE TABLE的輸出中打印MySQL專用表選項(例如ENGINE)。該模式在可移植模式(portability mode)下用于mysqldump。

·NO_UNSIGNED_SUBTRACTION

在減運(yùn)算中,如果某個操作數(shù)沒有符號,不要將結(jié)果標(biāo)記為UNSIGNED。請注意這樣使UNSIGNED BIGINT不能100%用于上下文中。參見12.8節(jié),“Cast函數(shù)和操作符”。

·NO_ZERO_DATE

在嚴(yán)格模式,不要將 '0000-00-00'做為合法日期。你仍然可以用IGNORE選項插入零日期。在非嚴(yán)格模式,可以接受該日期,但會生成警告。

·NO_ZERO_IN_DATE

在嚴(yán)格模式,不接受月或日部分為0的日期。如果使用IGNORE選項,我們?yōu)轭愃频娜掌诓迦?0000-00-00'。在非嚴(yán)格模式,可以接受該日期,但會生成警告。

·ONLY_FULL_GROUP_BY

不要讓GROUP BY部分中的查詢指向未選擇的列。

·PIPES_AS_CONCAT

將||視為字符串連接操作符(+)(同CONCAT()),而不視為OR。

·REAL_AS_FLOAT

將REAL視為FLOAT的同義詞,而不是DOUBLE的同義詞。

·STRICT_TRANS_TABLES

為所有存儲引擎啟用嚴(yán)格模式。非法數(shù)據(jù)值被拒絕。后面有詳細(xì)說明。

·STRICT_TRANS_TABLES

為事務(wù)存儲引擎啟用嚴(yán)格模式,也可能為非事務(wù)存儲引擎啟用嚴(yán)格模式。后面有詳細(xì)說明。

嚴(yán)格模式控制MySQL如何處理非法或丟失的輸入值。有幾種原因可以使一個值為非法。例如,數(shù)據(jù)類型錯誤,不適合列,或超出范圍。當(dāng)新插入的行不包含某列的沒有顯示定義DEFAULT子句的值,則該值被丟失。

對于事務(wù)表,當(dāng)啟用STRICT_ALL_TABLES或STRICT_TRANS_TABLES模式時,如果語句中有非法或丟失值,則會出現(xiàn)錯誤。語句被放棄并滾動。

對于非事務(wù)表,如果插入或更新的第1行出現(xiàn)壞值,兩種模式的行為相同。語句被放棄,表保持不變。如果語句插入或修改多行,并且壞值出現(xiàn)在第2或后面的行,結(jié)果取決于啟用了哪個嚴(yán)格選項:

·對于STRICT_ALL_TABLES,MySQL返回錯誤并忽視剩余的行。但是,在這種情況下,前面的行已經(jīng)被插入或更新。這說明你可以部分更新,這可能不是你想要的。要避免這點,最好使用單行語句,因為這樣可以不更改表即可以放棄。

·對于STRICT_TRANS_TABLES,MySQL將非法值轉(zhuǎn)換為最接近該列的合法值并插入調(diào)整后的值。如果值丟失,MySQL在列中插入隱式 默認(rèn)值。在任何情況下,MySQL都會生成警告而不是給出錯誤并繼續(xù)執(zhí)行語句。13.1.5節(jié),“CREATE TABLE語法”描述了隱式默認(rèn)值。

嚴(yán)格模式不允許非法日期,例如'2004-04-31'。它不允許禁止日期使用“零”部分,例如'2004-04-00'或“零”日期。要想禁止,應(yīng)在嚴(yán)格模式基礎(chǔ)上,啟用NO_ZERO_IN_DATE和NO_ZERO_DATE SQL模式。

如果你不使用嚴(yán)格模式(即不啟用STRICT_TRANS_TABLES或STRICT_ALL_TABLES模式),對于非法或丟失的值,MySQL將插入調(diào)整后的值并給出警告。在嚴(yán)格模式,你可以通過INSERT IGNORE或UPDATE IGNORE來實現(xiàn)。參見13.5.4.22節(jié),“SHOW WARNINGS語法”。

相關(guān)文章

  • mysql5.7.10開啟慢查詢詳解

    mysql5.7.10開啟慢查詢詳解

    下面小編就為大家?guī)硪黄猰ysql5.7.10開啟慢查詢詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • MySQL分區(qū)表管理命令匯總

    MySQL分區(qū)表管理命令匯總

    這篇文章主要分享了MySQL分區(qū)表管理命令匯總,分區(qū)是一種表的設(shè)計模式,正確的分區(qū)可以極大地提升數(shù)據(jù)庫的查詢效率,完成更高質(zhì)量的SQL編程。但是如果錯誤地使用分區(qū),那么分區(qū)可能帶來毀滅性的的結(jié)果,下面我們就來看看分區(qū)表那些常用的管理命令,需要的朋友可以參考下
    2022-03-03
  • mariadb集群搭建---Galera Cluster+ProxySQL教程

    mariadb集群搭建---Galera Cluster+ProxySQL教程

    這篇文章主要介紹了mariadb集群搭建---Galera Cluster+ProxySQL教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • mysql中count(), group by, order by使用詳解

    mysql中count(), group by, order by使用詳解

    mysql中order by 排序查詢、asc升序、desc降序,group by 分組查詢、having 只能用于group by子句、作用于組內(nèi),having條件子句可以直接跟函數(shù)表達(dá)式。使用group by 子句的查詢語句需要使用聚合函數(shù)。
    2017-05-05
  • MySQL命令行刪除表中的一個字段

    MySQL命令行刪除表中的一個字段

    本文介紹在MySQL數(shù)據(jù)庫中,如何根據(jù)字段名來刪除表中的一個字段,需要的朋友可以參考下
    2016-04-04
  • MySQL 8 新特性之Invisible Indexes

    MySQL 8 新特性之Invisible Indexes

    這篇文章主要介紹了MySQL 8 新特性之Invisible Indexes 的相關(guān)資料,需要的朋友可以參考下
    2018-05-05
  • 一個案例徹底弄懂如何正確使用mysql inndb聯(lián)合索引

    一個案例徹底弄懂如何正確使用mysql inndb聯(lián)合索引

    今天小編就為大家分享一篇關(guān)于一個案例徹底弄懂如何正確使用mysql inndb聯(lián)合索引,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • mysql數(shù)據(jù)表規(guī)模九千萬條記錄?如何優(yōu)化查詢?

    mysql數(shù)據(jù)表規(guī)模九千萬條記錄?如何優(yōu)化查詢?

    這里的優(yōu)化維度有四個:硬件配置、參數(shù)配置、表結(jié)構(gòu)設(shè)計和SQL語句及索引,需要的朋友可以參考下
    2023-12-12
  • 通過緩存+SQL修改優(yōu)雅地優(yōu)化慢查詢

    通過緩存+SQL修改優(yōu)雅地優(yōu)化慢查詢

    本文通過介紹緩存的基本原理和SQL語句的優(yōu)化手段,以及實際案例的分析,為讀者提供了一種簡單而有效的優(yōu)化思路。讀者可以通過本文了解到如何在不修改程序代碼的情況下,通過巧妙地運(yùn)用緩存和SQL優(yōu)化技巧,提高程序的性能和響應(yīng)速度。
    2023-04-04
  • mysql 按中文字段排序

    mysql 按中文字段排序

    在MySQL中,進(jìn)行中文排序和查找的時候,對漢字的排序和查找結(jié)果是錯誤的。 這種情況在MySQL的很多版本中都存在。
    2009-01-01

最新評論

亳州市| 如皋市| 会昌县| 柘荣县| 龙陵县| 原阳县| 当雄县| 彭山县| 两当县| 凤城市| 安图县| 营口市| 云龙县| 开封县| 定边县| 廊坊市| 博爱县| 黄龙县| 桓台县| 鹤山市| 康保县| 富蕴县| 牟定县| 三亚市| 永兴县| 云浮市| 广西| 平山县| 昭苏县| 佛学| 卢湾区| 安顺市| 南城县| 徐州市| 泽库县| 莱芜市| 乌拉特后旗| 永川市| 娄烦县| 外汇| 牡丹江市|