产品动态
产品公告
SET [ SESSION | GLOBAL ] sql_mode='modes' 语句设置 SQL 模式来设置全局或者会话级别的 SQL Mode。也可以通过 SELECT @@sql_mode 来查询当前 SQL 的 SQL Mode。名称 | 含义 |
PIPES_AS_CONCAT | 将 || 视为字符串连接操作符 (+)(同 CONCAT()),而不视为 OR。 |
ANSI_QUOTES | 将 " 视为识别符,如果启用 ANSI_QUOTES,只有单引号内的会被认为是 String Literals,双引号被解释为识别符,因此不能用双引号来引用字符串。 |
IGNORE_SPACE | 若开启该模式,系统忽略空格。例如:“user”和“user ”是相同的。 |
ONLY_FULL_GROUP_BY | 如果未被聚合函数处理或未被 GROUP BY 的列,出现在 SELECT、HAVING、ORDER BY 中,此 SQL 不合法。 |
NO_UNSIGNED_SUBTRACTION | 在减运算中,如果某个操作数没有符号,不要将结果标记为 UNSIGNED(支持)。 |
NO_BACKSLASH_ESCAPES | 若启用该模式,\\ 反斜杠符号仅代表它自己。 |
STRICT_TRANS_TABLES | 对于事务存储引擎启用严格模式,insert 非法值之后,回滚整条语句。 |
STRICT_ALL_TABLES | 对于事务型表,写入非法值之后,回滚整个事务语句。 |
NO_ZERO_IN_DATE | 在严格模式时,不接受月或日部分为0的日期。如果使用 IGNORE 选项,我们为类似的日期插入“0000-00-00”。在非严格模式时,可以接受该日期,但会生成警告。 |
NO_ZERO_DATE | 在严格模式时,不要将“0000-00-00”作为合法日期。您仍然可以用 IGNORE 选项插入0日期。在非严格模式时,可以接受该日期,但会生成警告。 |
ALLOW_INVALID_DATES | 不检查全部日期的合法性,仅检查月份值是否在1至12之间,以及日期值是否在1到31之间,仅适用于 DATE 和 DATATIME 列,TIMESTAMP 列需要全部检查其合法性。 |
ERROR_FOR_DIVISION_BY_ZERO | 启用该模式,在 INSERT 或 UPDATE 过程中,被除数为0值时,系统产生错误。若未启用该模式,被除数为0值时,系统产生警告,并用 NULL 代替。 |
REAL_AS_FLOAT | 将 REAL 视为 FLOAT 的同义词,而不是 DOUBLE 的同义词。 |
NO_DIR_IN_CREATE | 创建表时,忽视所有 INDEX DIRECTORY 和 DATA DIRECTORY 指令,该选项仅对从复制服务器有用。 |
NO_AUTO_CREATE_USER | 防止 GRANT 自动创建新用户,但指定密码除外(但是在分析引擎中没有实际作用)。 |
NO_ENGINE_SUBSTITUTION | 如果需要的存储引擎被禁用或未编译,可以防止自动替换存储引擎(但是在分析引擎中没有实际作用)。 |
字符集 | 描述 | 支持的排序规则 | 最大大小 |
utf8 | UTF-8 Unicode | utf8_bin | 3 |
utf8mb4 | UTF-8 Unicode | utf8mb4_bin | 4 |
SELECT …… GROUP BY expr 的返回结果与 MySQL 8.0 保持一致,默认不排序,与 MySQL 5.7 会有一定区别,MySQL 5.7 会默认排序。因此,无论是在 MySQL 5.7 版本还是 MySQL 8.0 版本中构建的分析引擎,都是如此的逻辑。文档反馈