MySQL中SQL模式的特点总结

作者:CrazyCodes 时间:2024-01-13 16:08:05 

前言

SQL模式影响MySQL支持的SQL语法和执行的数据验证检查。

MySQL服务器可以在不同的SQL模式下运行,并且可以针对不同的客户端以不同的方式应用这些模式,具体取决于sql_mode系统变量的值。DBA可以设置全局SQL模式以匹配站点服务器操作要求,并且每个应用程序可以将其会话SQL模式设置为其自己的要求。

模式会影响MySQL支持的SQL语法以及它执行的数据验证检查。这使得在不同环境中使用MySQL以及将MySQL与其他数据库服务器一起使用变得更加容易。

下面话不多说了,来一起看看详细的介绍吧

设置SQL模式

要在运行时更改SQL模式,请sql_mode使用以下SET 语句设置全局或会话 系统变量


SET GLOBAL sql_mode = 'modes';
SET SESSION sql_mode = 'modes';

模式列表

模式注释
ALLOW_INVALID_DATES无效日期会生成错误
ERROR_FOR_DIVISION_BY_ZERO除0错误
NO_BACKSLASH_ESCAPES禁止使用反斜杠字符(\)作为字符串中的转义字符。启用此模式后,反斜杠就像其他任何一个普通字符一样。
NO_UNSIGNED_SUBTRACTION在整数值之间减去(其中一个是类型) UNSIGNED,默认情况下会产生无符号结果。如果结果否则为负,则会导致错误
NO_ZERO_IN_DATE'0000-00-00' 则允许并且插入产生警告
ONLY_FULL_GROUP_BYselect 内指定字段必须出现在 groupby 中,否则错误
STRICT_TRANS_TABLES为事务存储引擎启用严格的SQL模式,并在可能的情况下为非事务性存储引擎启用。
STRICT_ALL_TABLES为所有存储引擎启用严格SQL模式。无效的数据值被拒绝。

详情请参考 https://dev.mysql.com/doc/ref...

严格SQL模式

MySQL服务器可以在不同的SQL模式下运行,并且可以针对不同的客户端以不同的方式应用这些模式,具体取决于sql_mode系统变量的值。在严格SQL模式下,服务器会将某些警告升级为错误。

严格SQL模式适用于以下语句

  • ALTER TABLE

  • CREATE TABLE

  • CREATE TABLE ... SELECT

  • DELETE

  • INSERT

  • LOAD DATA

  • LOAD XML

  • SELECT SLEEP()

  • UPDATE

在存储的程序中,如果在严格模式生效时定义了程序,则列出的类型的单个语句将以严格的SQL模式执行。

严格的SQL模式适用于以下错误,表示输入值无效或缺失的一类错误。如果值具有错误的列数据类型或可能超出范围,则该值无效。如果要插入的新行不包含其定义中NOT NULL没有显式DEFAULT子句的列的值,则缺少值。

  • ER_BAD_NULL_ERROR

  • ER_CUT_VALUE_GROUP_CONCAT

  • ER_DATA_TOO_LONG

  • ER_DATETIME_FUNCTION_OVERFLOW

  • ER_DIVISION_BY_ZERO

  • ER_INVALID_ARGUMENT_FOR_LOGARITHM

  • ER_NO_DEFAULT_FOR_FIELD

  • ER_NO_DEFAULT_FOR_VIEW_FIELD

  • ER_TOO_LONG_KEY

  • ER_TRUNCATED_WRONG_VALUE

  • ER_TRUNCATED_WRONG_VALUE_FOR_FIELD

  • ER_WARN_DATA_OUT_OF_RANGE

  • ER_WARN_NULL_TO_NOTNULL

  • ER_WARN_TOO_FEW_RECORDS

  • ER_WRONG_ARGUMENTS

  • ER_WRONG_VALUE_FOR_TYPE

  • WARN_DATA_TRUNCATED

致谢

感谢你看到这里,希望本篇文章可以帮到你,谢谢。

来源:https://segmentfault.com/a/1190000016357524

标签:mysql,sql模式
0
投稿

猜你喜欢

  • Python实战实现爬取天气数据并完成可视化分析详解

    2022-01-04 09:33:44
  • python 生成器协程运算实例

    2021-11-22 05:27:51
  • Javascript中的函数声明与函数表达式(奇技淫巧)

    2024-04-23 09:08:43
  • 如何利用JavaScript读取excel文件并绘制echarts图形

    2023-08-27 07:51:16
  • Go语言下载网络图片或文件的方法示例

    2024-02-13 17:20:52
  • 计算Python Numpy向量之间的欧氏距离实例

    2022-08-14 08:21:56
  • 基于spring boot 日志(logback)报错的解决方式

    2022-05-12 08:13:46
  • python jenkins 打包构建代码的示例代码

    2022-10-05 02:22:02
  • php注册和登录界面的实现案例(推荐)

    2024-04-30 08:48:47
  • 迎来2009年CSS裸奔节(CSS Naked Day )

    2009-04-24 12:41:00
  • Python线程条件变量Condition原理解析

    2022-07-23 02:52:06
  • javascript 函数声明与函数表达式的区别介绍

    2024-04-23 09:08:50
  • INPUT的对齐问题

    2008-05-24 08:32:00
  • oracle join on 数据过滤问题

    2009-07-14 21:17:00
  • 解读tf.keras.layers模块中的函数

    2023-04-02 04:26:29
  • 关于PyTorch中nn.Module类的简介

    2023-03-19 13:31:15
  • 通过python将大量文件按修改时间分类的方法

    2023-04-11 00:26:03
  • python dataframe NaN处理方式

    2022-12-01 18:49:33
  • Python基础教程之增加和去除数字的千位分隔符

    2021-12-04 13:46:12
  • 图片预载ImageLoader 1.1 Release

    2008-11-04 20:04:00
  • asp之家 网络编程 m.aspxhome.com