<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Mysql之SQLMode用法詳解

        來源:懂視網 責編:小采 時間:2020-11-09 21:01:50
        文檔

        Mysql之SQLMode用法詳解

        Mysql之SQLMode用法詳解:一、Mysql SQL Mode簡介 通常來說MySQL服務器能夠工作在不同的SQL模式下,并能針對不同的客戶端以不同的方式應用這些模式。這樣,應用程序就能對服務器操作進行量身定制以滿足自己的需求。這類模式定義了MySQL應支持的SQL語法,以及應該在數據上執行何種確認
        推薦度:
        導讀Mysql之SQLMode用法詳解:一、Mysql SQL Mode簡介 通常來說MySQL服務器能夠工作在不同的SQL模式下,并能針對不同的客戶端以不同的方式應用這些模式。這樣,應用程序就能對服務器操作進行量身定制以滿足自己的需求。這類模式定義了MySQL應支持的SQL語法,以及應該在數據上執行何種確認

        一、Mysql SQL Mode簡介

        通常來說MySQL服務器能夠工作在不同的SQL模式下,并能針對不同的客戶端以不同的方式應用這些模式。這樣,應用程序就能對服務器操作進行量身定制以滿足自己的需求。這類模式定義了MySQL應支持的SQL語法,以及應該在數據上執行何種確認檢查。這樣,就能在眾多不同的環境下、與其他數據庫服務器一起更容易地使用MySQL??梢允褂谩?-sql-mode="modes"”選項,通過啟動mysqld來設置默認的SQL模式。而從MySQL 4.1開始,也能在啟動之后,使用SET [SESSION|GLOBAL] sql_mode='modes'語句,通過設置sql_mode變量更改其模式。

        通常在linux下安裝完mysql后,其默認的sql-mode值是空,在這種情形下mysql執行的是一種不嚴格的檢查,例如日期字段可以插入'0000-00-00 00:00:00'這樣的值,還有如果要插入的字段長度超過列定義的長度,那么mysql不會終止操作,而是會自動截斷后面的字符繼續插入操作,如下例:

        mysql> create table t5 (c1 char(3));
        mysql> insert into t5 values('abcd');
        mysql> select * from t5;
        +------+
        | c1 |
        +------+
        | abc |
        +------+
        1 row in set (0.00 sec)
        
        

        我們發現插入的字符被自動截斷了,但是如果我們本意希望如果長度超過限制就報錯,那么我們可以設置sql_mode為STRICT_TRANS_TABLES,如下:

        mysql> set session sql_mode='STRICT_TRANS_TABLES'
        
        

        這樣我們再執行同樣的操作,mysql就會告訴我們插入的值太長,操作被終止,如下:

        mysql> insert into t5 values('abcd');
        ERROR 1406 (22001): Data too long for column 'c1' at row 1
        
        

        經常使用的sql_mode值:

        Sql_mode值 描述
        ANSI 更改語法和行為,使其更符合標準SQL。
        STRICT_TRANS_TABLES 如果不能將給定的值插入到事務表中,則放棄該語句。對于非事務表,如果值出現在單行語句或多行語句的第1行,則放棄該語句。本節后面給出了更詳細的描述。
        TRADITIONAL Make MySQL的行為象“傳統”SQL數據庫系統。該模式的簡單描述是當在列中插入不正確的值時“給出錯誤而不是警告”。注釋:一旦發現錯誤立即放棄INSERT/UPDATE。如果你使用非事務存儲引擎,這種方式不是你想要的,因為出現錯誤前進行的數據更改不會“滾動”,結果是更新“只進行了一部分”。

        說明:如果把sql_mode的值設置成后面的兩個值(也就是我們說的嚴格模式),那么當在列中插入或更新不正確的值時,mysql將會給出錯誤,并且放棄insert/update操作。在我們的一般應用中建議使用這兩種模式,而不是使用默認的空或ANSI模式。但是需要注意的問題是,如果數據庫運行在嚴格模式下,并且你的存儲引擎不支持事務,那么有數據不一致的風險存在,比如一組sql中有兩個dml語句,如果后面的一個出現了問題,但是前面的已經操作成功,那么mysql并不能回滾前面的操作。因此說設置sql_mode需要應用人員權衡各種得失,從而得到一個合適的選擇。

        Sql_mode的值還有很多,這里不再累述,可以參考相關的手冊。

        二、SQL Mode與可移植性

        如果mysql與其它異構數據庫之間有數據移植的需求的話,那么下面的sql_mode的組合設置可以達到相應的效果:

        數據庫 Sql_mode值
        DB2 PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS
        MAXDB PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、 NO_AUTO_CREATE_USER
        MSSQL PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、 NO_FIELD_OPTIONS
        ORACLE PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、NO_AUTO_CREATE_USER
        POSTGRESQL PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS

        三、SQL Mode與數據效驗

        SQL Mode 還可以實現對數據效驗和轉移等功能如:

        1.效驗日期數據合法性.
        2.在INSERT或UPDATE過程中,如果被零除(或MOD(X,0)),則產生錯誤
        3.將‘"'視為識別符引號(‘`'引號字符)
        4.禁用反斜線字符(‘\')做為字符串內的退出字符。啟用NO_BACKSLASH_ESCAPES模式,反斜線則成為普通字符。
        5.將||視為字符串連接操作符(+)(同CONCAT()),而不視為OR。

        您可能感興趣的文章:

      1. MySql版本問題sql_mode=only_full_group_by的完美解決方案
      2. mysql sql_mode="" 的作用說明
      3. 解決MySQL 5.7.9版本sql_mode=only_full_group_by問題
      4. MySQL5.7中的sql_mode默認值帶來的坑及解決方法
      5. MySQL關于sql_mode解析與設置講解
      6. 關于MySQL的sql_mode合理設置詳解
      7. 聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Mysql之SQLMode用法詳解

        Mysql之SQLMode用法詳解:一、Mysql SQL Mode簡介 通常來說MySQL服務器能夠工作在不同的SQL模式下,并能針對不同的客戶端以不同的方式應用這些模式。這樣,應用程序就能對服務器操作進行量身定制以滿足自己的需求。這類模式定義了MySQL應支持的SQL語法,以及應該在數據上執行何種確認
        推薦度:
        標簽: 使用 用法 sql
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 激情小说亚洲图片| 国产成人精品亚洲日本在线| 黄色a级免费网站| 在线看片无码永久免费aⅴ| 久久久精品国产亚洲成人满18免费网站 | 色拍自拍亚洲综合图区| 亚洲国产成人无码av在线播放| 久久国产免费一区| 国产乱弄免费视频| 亚洲精品成人久久| 国产免费内射又粗又爽密桃视频| 亚洲精品高清在线| 国产 亚洲 中文在线 字幕| 操美女视频免费网站| 99ri精品国产亚洲| 成人免费午夜无码视频| 色偷偷噜噜噜亚洲男人| 69av免费视频| 亚洲国产精品VA在线观看麻豆| 国产精品偷伦视频观看免费 | 亚洲国产成人手机在线电影bd| 日韩免费精品视频| 国产亚洲Av综合人人澡精品| 亚洲国产精品日韩| 欧洲精品99毛片免费高清观看| 亚洲视屏在线观看| 特级淫片国产免费高清视频| 亚洲美免无码中文字幕在线| 免费精品国偷自产在线在线| 污污免费在线观看| 女人与禽交视频免费看| 手机永久免费的AV在线电影网| 日本特黄特黄刺激大片免费| 中文字幕av免费专区| 亚洲成人高清在线观看| 免费视频精品一区二区三区| 四虎亚洲精品高清在线观看| 亚洲区不卡顿区在线观看| 曰批全过程免费视频网址| 美女的胸又黄又www网站免费| 亚洲AV乱码久久精品蜜桃|