在MySQL中阻止UPDATE, DELETE 语句的执行,在没有添加WHERE条件

本文介绍MySQL中如何通过设置sql_safe_updates参数来确保更新和删除操作的安全性,避免因误操作导致的数据丢失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果在生产环境中使用UPDATE,DELETE语句操作数据,此时如果忘记携带本应该添加的WHERE条件,后果可能不堪设想。在正常的业务情况,也不会更新或者删除所有的记录

1. 阻止update设置(sql_safe_updates

sql_safe_updates这个MySQL自带的参数就可以完美的解决我们的问题,并且该参数是可以在线变更的哦~当该参数开启的情况下,你必须要在UPDATE语句后携带WHERE条件,否则就会报出ERROR。。

# sql_safe_updates=0,即未开启
root@127.0.0.1 : test 07:58:34> set sql_safe_updates=0;
Query OK, 0 rows affected (0.00 sec)

root@127.0.0.1 : test 07:58:43> show variables like 'sql_safe_updates';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| sql_safe_updates | OFF   |
+------------------+-------+
1 row in set (0.00 sec)


# sql_safe_updates=1,即开启
root@127.0.0.1 : test 08:00:00> set sql_safe_updates=1;
Query OK, 0 rows affected (0.00 sec)

root@127.0.0.1 : test 08:00:11> show variables like 'sql_safe_updates';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| sql_safe_updates | ON    |
+------------------+-------+
1 row in set (0.00 sec)

root@127.0.0.1 : test 08:00:27> update t set aaa='aaa';
ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

如上属的例子所示,当参数sql_safe_updates开启的时候,UPDATE语句不携带WHERE条件将会爆出一个错误。


2. 阻止delete设置

直接限制mysql删除
启动MySQL的时候加上参数 -U
-U, --safe-updates  Only allow UPDATE and DELETE that uses keys.
他的作用是防止执行delete的时候没带有条件语句,如果没加上where则语句不执行。



为了在MySQL中成功进行数据的增删改操作,理解INSERT、UPDATEDELETE语句是基础。《国家开放大学《MySQL》实验3:数据增删改操作详解》这一资料将为你提供详细的操作指南,非常适合希望在实际环境中实践这些基本技能的读者。 参考资源链接:[国家开放大学《MySQL》实验3:数据增删改操作详解](https://wenku.youkuaiyun.com/doc/3k1kekjg06?spm=1055.2569.3001.10343) 首先,当你需要向数据库中添加新数据时,可以使用INSERT语句。例如,向一个名为`employees`的表中添加一名新员工的记录: ```sql INSERT INTO employees (employee_id, first_name, last_name, email, hire_date) VALUES (5, 'John', 'Doe', 'john.***', CURDATE()); ``` 在上述示例中,我们向`employees`表中插入了员工ID为5的记录,包括员工的名字、姓氏、电子邮件地址和雇佣日期。 接下来,当你需要更新数据库中已有的数据时,使用UPDATE语句。比如,更新上文提到的员工的电子邮件地址: ```sql UPDATE employees SET email = 'john.***' WHERE employee_id = 5; ``` 这里,我们改变了员工ID为5的员工的电子邮件地址。 最后,如果需要删除不需要的记录,可以使用DELETE语句。例如,删除员工ID为5的员工: ```sql DELETE FROM employees WHERE employee_id = 5; ``` 执行这个语句后,ID为5的员工记录将从`employees`表中被移除。 在学习这些操作时,强烈建议跟随《国家开放大学《MySQL》实验3:数据增删改操作详解》中的指导进行实践。这份资料不仅能帮助你理解上述SQL语句的语法和使用场景,还能提供一个全面的实验环境,使你能够在实际的数据库系统中操作和观察结果。通过这种方式,你将能够更好地掌握SQL语句的使用,并且能够在将来的数据库管理工作中更加自信和熟练地运用这些技术。 参考资源链接:[国家开放大学《MySQL》实验3:数据增删改操作详解](https://wenku.youkuaiyun.com/doc/3k1kekjg06?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值