当前位置: 移动技术网 > IT编程>数据库>Mysql > MySQL中SQL模式的特点总结

MySQL中SQL模式的特点总结

2018年09月24日  | 移动技术网IT编程  | 我要评论

前言

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_by select 内指定字段必须出现在 groupby 中,否则错误
strict_trans_tables 为事务存储引擎启用严格的sql模式,并在可能的情况下为非事务性存储引擎启用。
strict_all_tables 为所有存储引擎启用严格sql模式。无效的数据值被拒绝。

详情请参考 ...

严格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

致谢

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对移动技术网的支持。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网