下面一起来了解下设置和查询Mysql sql模式方法,相信大家看完肯定会受益匪浅,文字在精不在多,希望设置和查询mysql SQL模式方法这篇短内容是你想要的。设置和查询SQL模式通过修改sql_mode变
下面一起来了解下设置和查询Mysql sql模式方法,相信大家看完肯定会受益匪浅,文字在精不在多,希望设置和查询mysql SQL模式方法这篇短内容是你想要的。
设置和查询SQL模式
通过修改sql_mode变量的值来改变SQL模式。
SQL模式可以在全局级别下设置,也可以在会话级别下设置。在数据库启动时和数据库运行时都可以对sql_mode的值进行修改。
在数据库启动时设置SQL模式
在命令行中使用--sql_mode='modes'选项,或者在配置文件中使用sql_mode="modes"。
modes是一个以逗号分隔的模式的列表。
要清除SQL模式,将它设置为一个空的字符串,例如sql_mode=""
在数据库运行时设置SQL模式
使用SET语句来更改sql_mode的值,例如:
SET GLOBAL sql_mode = 'modes';
SET SESSioN sql_mode = 'modes';
设置全局变量的值需要SUPER权限,设置后应用到之后所有客户端连接的操作。
设置session变量只应用于当前客户端,每个客户端都可以在任何时候更改它的sessionSQL模式。
查询SQL模式
要确定当前使用的SQL模式,使用以下语句进行查询
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;
主要的SQL模式
主要的sql_mode的值为以下几种:
SQL模式的完整列表
sql模式可以大致分为以下几类
在MySQL5.7.4到MySQL5.7.7中,严格模式包括ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE和NO_ZERO_IN_DATE的效果。
在MySQL5.7.4以前版本中,以上三个模式被弃用
在MySQL5.7.4到MySQL5.7.7中,以上三个模式不产生作用,他们的效果包含在严格模式中。
在MySQL5.7.8及以后版本中,以上三个模式才有自己单独的作用,而不是严格模式的一部分。但是,他们应该和严格模式一起使用,并且默认情况下他们都是开启的。如果使用严格模式而不使用上述模式会产生警告,如果使用上述模式中的任何一个但是不启用严格模式也会产生警告。
由于以上三个模式以弃用,在后续的MySQL版本中,他们作为一个单独的模式名会被删除,并且他们的效果将包含在严格模式中。
NO_UNSIGNED_SUBTRACTION
对于整数之间的减法,如果一个值的类型是UNSIGNED,默认生成一个无符号整型的结果,但是如果结果是个负数,就会出现错误
如果启用NO_UNSIGNED_SUBTRACTION,结果为负时不会报错
IGNORE_SPACE
在函数名和(中间允许空格。这将导致内置函数名被当作保留字处理。因此,与函数名相同的标识符必须被引用。
例如,因为存在COUNT()函数,直接使用count作为表名会产生错误
mysql> CREATE TABLE count (i INT);
ERROR 1064 (42000): You have an error in your SQL syntax
应该将表名引用起来:
mysql> CREATE TABLE
count
(i INT);
Query OK, 0 rows affected (0.00 sec)
SQL模式的组合
以下模式是对上述SQL模式完整列表中的部分组合的缩写
名称 | 完整列表 |
---|---|
ANSI | REAL_AS_FLOAT, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE,和 (在MySQL 5.7.5) ONLY_FULL_GROUP_BY |
DB2 | PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS |
MSSQL | PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS |
postgresql | 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 |
MAXDB | PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER |
TRADITIONAL | STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION |
看完设置和查询MYSQL SQL模式方法这篇文章后,很多读者朋友肯定会想要了解更多的相关内容,如需获取更多的行业信息,可以关注我们的数据库栏目。
--结束END--
本文标题: 设置和查询MYSQL SQL模式方法
本文链接: https://lsjlt.com/news/34541.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0