掌握MySQL sql_mode设置:优化数据库操作与安全性

创始人
2024-12-29 03:08:58
0 次浏览
0 评论

Mode是怎样设置的

正确设置mysql的sql_mode。
正确设置mysql的sql_mode是一个很容易被忽视的变量。
默认值为null通过这个设置,可能会允许一些非法操作,比如允许插入一些非法数据。
在生产环境中,这个值必须设置为严格模式,所以在开发和测试环境中也必须设置数据库,这样在开发和测试阶段可能会遇到问题。
sql_mode的常用值如下:Only_FULL_GROUP_BY:对于GROUPBY聚合操作,如果SELECT中的列没有出现在GROUPBY中,则这条SQL无效,因为该列不在GROUPBY子句中:该值影响列的插入具有自动增量。
默认情况下,输入0或NULL表示生成下一个自增值。
如果用户想要输入0值并且该列自动递增,则此选项非常有用。
STRICT_TRANS_TABLES:在此模式下,如果无法将值插入到事务表中,则中止当前操作,并且对非事务表没有限制NO_ZERO_IN_DATE:在严格模式下,日期和月份不能为零。
NO_ZERO_DATE:设置此值,mysql数据库不允许插入零日期,插入零日期将生成错误而不是警告。
ERROR_FOR_DIVISION_BY_ZERO:在INSERT或UPDATE过程中,如果数据除以零,则会生成错误而不是警告。
如果未提供模式,则当数据除以零时,MySQL将返回NULLNO_AUTO_CREATE_USER:阻止GRANT创建密码为空的用户NO_ENGINE_SUBSTITUTION:如果禁用或未编译所需的存储引擎,则抛出错误。
当未设置此值时,将使用默认存储引擎并抛出PIPES_AS_CONCAT异常:考虑“||”作为字符串连接运算符而不是OR运算符,这与Oracle数据库相同,也与.Concat字符串连接功能与ANSI_QUOTES类似:启用ANSI_QUOTES后,不能使用双引号将字符括起来。
解释为标识符的字符串ORACLEsql_mode设置相当于:PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、NO_AUTO_CREATE_USER。
如果使用mysql,要延续使用Oracle的习惯,可以设置mysql的sql_mode如下:在my.cnf中添加如下配置[mysqld]sql_mode='ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION、PIPES_AS_CONCAT、ANSI_QUOTES'

使用SQL语句create创建一个表然后让某一列的值固定为空格可以实现吗应该怎么写

可以实现,

原理是创建表,默认值为空字符串

创建表A(keyIdint,infovarchar(20)default'')goinsertinA(keyId)values(1);goselect*fromAGotruncatTableAdropTableA

拜托!

文章标签:
sql_mode MySQL
热门文章
1
高效掌握:CMD命令轻松启动、关闭及登录... 如何用cmd命令快速启动和关闭mysql数据库服务开发中经常使用MySQL数据库...

2
MySQL分区删除技巧与8.0版本新特性... mysql删除分区在MySQL中,删除分区操作主要使用“可替代”的命令与“ dr...

3
Python代码实现:如何判断三角形的三... python三角形三条边长,判断能否构成三角形Python三角形的三个长边如下:...

4
深度解析:MySQL查询语句执行顺序及优... mysql查询语句执行顺序当这是由于执行SQL的过程时,了解其过程很重要。 ...

5
SQL教程:使用SUBSTRING和IN... sql取特定字符的前面几位字符selectsubstr('L-0FCLDRBCT...

6
MySQL日期差异计算方法:轻松获取日期... MySQL计算时间差两日期相减得月份mysql两时间相减得月MySQL计算时间之...

7
MySQL及SQL查询获取前10条数据方... MySql查询前10条数据sql语句是从MySQL获取前1 0个数据的SQL查询...

8
MySQL启动问题排查与解决指南 Mysql为什么启动不了如果要配置MySQL,则遇到无法启动的问题,可能是由于配...

9
DbVisualizer添加MySQL数... 如何在DbVisualizer中添加本地mysql数据库由于DbVisualiz...

10
SQL字段默认值设置全攻略:轻松实现自动... sql如何设置字段默认值设置SQL中某个字段的默认值;需要遵循几个步骤。首先您需...