zoukankan      html  css  js  c++  java
  • sql_mode值的含义

    ONLY_FULL_GROUP_BY
    对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中。
     
     
    NO_AUTO_VALUE_ON_ZERO
    该值影响自增长列的插入。默认情况下,在对自增主键插入NULL或0时,会自动生成下一个值。若开启该MODE,当插入0时,并不会自动生成下一个值。
    如果表中自增主键列存在0值,在进行逻辑备份还原时,可能会导致数据不一致。所以mysqldump在生成备份数据之前,会自动开启该MODE,以避免数据不一致的情况。
    
     
    STRICT_TRANS_TABLES
    在该模式下,如果一个值不能插入到一个事物表中,则中断当前的操作,对非事物表不做限制。
     
     
    NO_ZERO_IN_DATE
    同NO_ZERO_DATE类似,只不过NO_ZERO_DATE针对的是'0000-00-00',而NO_ZERO_IN_DATE针对的是年不为0,但月或者日为0的日期,如,'2010-00-01' or '2010-01-00'。
    实际效果也是取决于是否开启严格模式,同NO_ZERO_DATE一样。 
     
     
    NO_ZERO_DATE
    该MODE会影响'0000-00-00'的插入。实际效果还取决于是否开启严格模式。
    1. 在开启严格模式,且同时开启该MODE,是不允许'0000-00-00'插入的。
    2. 只开启严格模式,不开启该MODE,允许'0000-00-00'值的插入,且不提示warning。
    3. 不开启严格模式,只开启该MODE,允许'0000-00-00'值的插入,但提示warning。
    4. 不开启严格模式,也不开启该MODE,允许'0000-00-00'值的插入,且不提示warning。
    
     
    ERROR_FOR_DIVISION_BY_ZERO
    在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如果未给出该模式,那么数据被零除时MySQL返回NULL。
     
     
    NO_AUTO_CREATE_USER
    MODE禁止的只是不带“identified by”子句的grant语句,对于带有“identified by”子句的grant语句,其并不会禁止。
     
     
    NO_ENGINE_SUBSTITUTION
    在开启该MODE的情况下,在创建表时,如果指定的存储引擎不存在或不支持,则会直接提示“ERROR”。
    若不开启,则只会提示“Warning”,且使用默认的存储引擎。
     
     
    PIPES_AS_CONCAT
    将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似。
     
     
    ANSI_QUOTES
    启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符。
     
     
    ANSI
    宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或截断保存,报warning警告。
     
     
    TRADITIONAL
    严格模式,当向mysql数据库插入数据时,进行数据的严格校验,保证错误数据不能插入,报error错误。用于事物时,会进行事物的回滚。
     
     
    STRICT_TRANS_TABLES
    严格模式,进行数据的严格校验,错误数据不能插入,报error错误。
    
    
    ALLOW_INVALID_DATES
    若开启该MODE,对于month和day的检测会相对宽松。其中,month只需在1~12之间,day只需在1~31之间,而不管其是否有效,如下面的'2004-02-31'。注意,该MODE只适用于DATE和DATETIME,不适用于TIMESTAMP。
     
     
    IGNORE_SPACE
    默认情况下,函数名和左括号(“(”)之间不允许存在空格。若开启该MODE,则允许。
    
    
    NO_BACKSLASH_ESCAPES
    默认情况下,反斜杠“”会作为转义符,若开启该MODE,则反斜杠“”会作为一个普通字符,而不是转义符。
    
    
    NO_DIR_IN_CREATE
    默认情况下,在创建表时,可以指定数据目录(DATA DIRECTORY)和索引目录(INDEX DIRECTORY),若开启该MODE,则会忽略这两个选项。在主从复制场景下,可在从库上开启该MODE。
    
    
    NO_UNSIGNED_SUBTRACTION
    两个整数相减,如果其中一个数是无符号位,默认情况下,会产生一个无符号位的值,如果该值为负数,则会提示“ERROR”。
    
    
    PAD_CHAR_TO_FULL_LENGTH
    在对CHAR字段进行存储时,在Compact格式下,会占用固定长度的字节。
    如下面的c1列,定义为char(10),虽然'ab'只占用两个字节,但在Compact格式下,会占用10个字节,不足部分以空格填充。
    在查询时,默认情况下,会剔除掉末尾的空格。若开启该MODE,则不会剔除,每次都会返回固定长度的字符。
    
    
    REAL_AS_FLOAT
    在创建表时,数据类型可指定为real,默认情况下,其会转化为double,若开启该MODE,则会转化为float。
    
    
    STRICT_ALL_TABLES
    对事务表开启严格模式。
    
    
    STRICT_TRANS_TABLES
    对所有表开启严格模式。
    
    
    TIME_TRUNCATE_FRACTIONAL
    在时间类型定义了小数秒的情况下,如果插入的位数大于指定的位数,默认情况下,会四舍五入,若开启了该MODE,则会直接truncate掉。
    
    
    
    MySQL各版本sql modes区别
    5.5 
    The default SQL mode is empty (no modes set).
     
     
    5.6
    The default SQL mode is NO_ENGINE_SUBSTITUTION.
     
     
    5.7
    The default SQL mode in MySQL 5.7 includes these modes: 
    ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, 
    ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, and NO_ENGINE_SUBSTITUTION.
     
    These modes were added to the default SQL mode in MySQL 5.7: 
    The ONLY_FULL_GROUP_BY and STRICT_TRANS_TABLES modes were added in MySQL 5.7.5. 
    The NO_AUTO_CREATE_USER mode was added in MySQL 5.7.7. 
    The ERROR_FOR_DIVISION_BY_ZERO, NO_ZERO_DATE, and NO_ZERO_IN_DATE modes were added in MySQL 5.7.8.
     
     
    8.0
    The default SQL mode in MySQL 8.0 includes these modes: 
    ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, 
    ERROR_FOR_DIVISION_BY_ZERO, and NO_ENGINE_SUBSTITUTION.
  • 相关阅读:
    1.4.2.3. SETUP(Core Data 应用程序实践指南)
    1.4.2.2. PATHS(Core Data 应用程序实践指南)
    1.4.2.1. FILES(Core Data 应用程序实践指南)
    1.4.2. 实现 Core Data Helper 类(Core Data 应用程序实践指南)
    1.4.1. Core Data Helper 简介(Core Data 应用程序实践指南)
    1.4. 为现有的应用程序添加 Core Data 支持(Core Data 应用程序实践指南)
    1.3.2. App Icon 和 Launch Image(Core Data 应用程序实践指南)
    1.3.1. 新建Xcode项目并设置故事板(Core Data 应用程序实践指南)
    php验证邮箱是否合法
    如何使js函数异步执行
  • 原文地址:https://www.cnblogs.com/liang545621/p/12606231.html
Copyright © 2011-2022 走看看