除了"only_full_group_by",还有哪些常见的sql_mode模式?
时间: 2024-03-14 11:41:24 浏览: 62
除了"only_full_group_by",还有以下几种常见的SQL_MODE模式:
1. STRICT_TRANS_TABLES:在插入或更新数据时,如果数据类型不匹配或者值超出范围,将会产生错误。
2. NO_ZERO_IN_DATE:禁止在日期中使用零值,例如'0000-00-00'。
3. NO_ZERO_DATE:禁止在日期和时间中使用零值,例如'0000-00-00 00:00:00'。
4. ERROR_FOR_DIVISION_BY_ZERO:当除数为零时,将产生错误。
5. NO_AUTO_CREATE_USER:禁止GRANT语句自动创建新用户。
6. NO_ENGINE_SUBSTITUTION:如果指定的存储引擎不可用,将产生错误,而不是使用默认的存储引擎替代。
7. PIPES_AS_CONCAT:将"||"视为字符串连接运算符,而不是按位或运算符。
8. ANSI_QUOTES:启用ANSI_QUOTES模式后,双引号将被视为标识符引用,而不是字符串引号。
相关问题
什么是sql_mode=only_full_group_by模式?
sql_mode=only_full_group_by是MySQL数据库中的一个模式,它是用来控制GROUP BY语句的行为的。在这个模式下,当使用GROUP BY语句进行分组查询时,必须将SELECT列表中的非聚合列都包含在GROUP BY子句中。
具体来说,当启用only_full_group_by模式时,如果SELECT列表中包含了非聚合列而没有在GROUP BY子句中出现,MySQL会抛出错误,阻止查询的执行。这样做是为了确保查询结果的准确性,避免出现模糊或不确定的结果。
只有在sql_mode中设置了only_full_group_by模式,才会启用该模式。如果没有设置该模式,MySQL会使用默认的GROUP BY语义,允许SELECT列表中的非聚合列不出现在GROUP BY子句中。
如何将sql_mode设置为非only_full_group_by模式?
要将sql_mode设置为非only_full_group_by模式,可以按照以下步骤进行操作:
1. 首先,登录到MySQL数据库。
2. 然后,运行以下命令来查看当前的sql_mode设置:
```sql
SELECT @@GLOBAL.sql_mode;
```
3. 接下来,根据需要进行修改。如果您想要禁用only_full_group_by模式,可以使用以下命令:
```sql
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
```
如果您想要设置其他的sql_mode值,可以使用适当的参数替换上述命令中的"ONLY_FULL_GROUP_BY"。
4. 最后,再次运行以下命令来确认修改是否生效:
```sql
SELECT @@GLOBAL.sql_mode;
```
阅读全文