sql怎样用DELETE语句删除表中特定记录 sql删除数据的基础语句用法

上周我查看了运行数据库的文档。

使用 DELETE 语句删除记录时要小心。

先说一下基本用法。

从表名where条件中删除;
比如删除员工这样。

从员工中删除,其中department='sales'且salary<5>注意where子句。

如果你忘记写WHERE条件。

例如,输入delete fromEmployees;
这将删除整个表。

非常危险。

小心点。

我们来谈谈常见的错误。

有时术语写得不正确。

例如,您要删除ID=1 0的员工。

结果写为delete fromEmployees where id=1 ;
这是误删除的。

验证方法很重要。

删除前尝试使用 SELECT 语句。

SELECT FROM EMPLOYEES WHERE ID=1 ;
看看结果是否正确。

再次确认。

还要注意权限问题。

如果没有权限删除。

询问管理员。

大量数据删除缓慢。

可以批量删除。

或者使用数据库优化工具。

例如,创建索引。

或者使用分区表。

这会提高速度。

子查询可以提高灵活性。

例如,您想要删除非活动部门中的员工。

您需要参考分区表。

可以这样写。

DELETE FROM EMPLOYEES WHERE Department_id IN (SELECT Department_id FROM Departments WHERE Department_name='Inactive');
当子查询结果很大时。

您可以考虑使用 JOIN。

比如改成这样。

从员工中删除并加入部门 d ON e.department_id = d.department_id WHERE d.department_name='Inactive';
加入通常比子查询更快。

必须采取必要措施防止滥用。

您应该做的第一件事是制作数据的备份副本。

定期备份数据库。

MySQL可以使用binlog进行恢复。

第二就业事务。

开始事务;
从 id = 1 的员工中删除;
检查一下。

如果回滚是错误的。

如果是,请提交。

第三权威。

普通用户无法删除敏感表。

仅供管理员使用。

第四个施工流程。

批量删除需要同意。

算了。

sql常用语句写法

我曾经为了处理一个紧急的数据库需求而加班到深夜。
客户要求将他们现有的系统迁移到新的服务器。
数据库必须是只读的,不能任意修改。
我打开 SQL 命令行,想知道如果我在输入时犯了错误并且我的所有数据都被破坏了怎么办。
于是,我先用USE切换到目标数据库,然后运行EXEC sp_dboption 'MyDB', 'readonly', 'true',当然数据库被设置为只读了。
即使在那时,我们也使用 DBCC SHRINKDATABASE 来收缩数据库以释放大量空间。
整个过程不到1 0分钟,顺利通过了客户的测试。

等一下。
还有一件事。
这意味着,如果您在创建表时忘记添加主键或约束,则必须稍后使用 ALTER TABLE 添加它。
例如,创建用户表时,忘记添加主键。
我使用了 ALTER TABLE users ADD CONSTRAINT pk_users PRIMARY KEY(id) 因为我只是在创建表后才记住它。
每次都必须注意这些小细节。
突然我想到IDENTITY属性也很重要。
自动编号可以为您省去很多麻烦。
例如,如果 id 是 INT IDENTITY(1 ,1 ),则每次 INSERT 时都不必担心主键。