1.什么是安全模式
在mysql中,如果在update和delete没有加上where条件,数据将会全部修改。不只是初识mysql的开发者会遇到这个问题,工作有一定经验的工程师难免也会忘记写入where条件。为了避免失误造成的数据全部修改和删除,可开启mysql的安全模式。
3.查看安全模式
- show variables like "%safe%"
- sql_safe_updates就是数据库的 安全模式。默认问关闭状态。
- 开启数据库可以对数据进行一些不当操作的保护。
- 比如:在使用update,delete操作的时候没有where条件或者limit条件的时候,就会容易误操作整张表的数据。
- 安全模式也是属于mysql系统变量的,所以查看的时候可以用variable
2.设置安全模式
- 上面查询命令实例表示当前mysql处于安全模式打开的状态。
set sql_safe_updates=1; //安全模式打开状态
set sql_safe_updates=0; //安全模式关闭状态
3.update、delete操作
- update
- (1)无where条件的update,操作失败,会提示需要使用where条件作为主键。
- (2)无where条件但是有limit的update,操作成功,虽然没有where条件,但是加入了limit限制。
- (3)使用非索引字段作为条件进行更新,操作失败,因为条件字段不是索引字段并且没有加入limit限制。
- (4)使用非索引字段作为条件并且加入limit进行更新,操作成功,虽然条件字段不是索引字段,但是有加入limit限制,所以执行成功。
- (5)使用索引字段作为条件并且不加入limit进行更新,操作成功,虽然没有加入limit限制,但是条件字段为索引字段,所以执行成功。
- delete
- (1)无where条件的delete,操作失败,没有where条件
- (2)非索引键进行条件删除,操作失败
- (3)使用索引键并且不加limit限制进行删除。操作成功
- (4)加入limit但是不使用where条件删除。操作失败,因为没有加入where检索条件。