oracle 删除sql语句

oracle 删除sql语句
最新回答
辣条瘾√

2023-03-21 19:29:33

Oracle数据库中常用的删除SQL语句可分为以下四类,具体用法及注意事项如下

1. 删除表中所有数据
使用DELETE FROM 表名;可清空指定表的所有数据,但保留表结构。例如:
DELETE FROM 员工表;
需注意:此操作不可逆,且若表数据量较大,执行时间可能较长。若需彻底删除表结构及数据,应使用DROP TABLE 表名;。

2. 删除满足条件的部分数据
通过WHERE子句指定条件,仅删除符合条件的记录。语法为:
DELETE FROM 表名 WHERE 条件表达式;
条件表达式支持比较运算符(如>、<、=)、逻辑运算符(如AND、OR)及模糊匹配(如LIKE)。例如:
DELETE FROM 员工表 WHERE salary < 5000;
关键点:若省略WHERE子句,将删除全表数据,与第一种情况结果相同但逻辑不同。

3. 删除多表关联数据
需通过表关联条件删除跨表数据,语法为:
DELETE FROM 表1, 表2 WHERE 表1.关联字段=表2.关联字段 AND 其他条件;
例如删除薪水低于5000的员工及其所在部门:
DELETE FROM 员工表, 部门表 WHERE 员工表.dept_id=部门表.dept_id AND 员工表.salary < 5000;
限制:Oracle标准语法中多表删除需使用USING或子查询,上述写法更适用于MySQL。Oracle推荐使用:
DELETE FROM 表1 WHERE 关联字段 IN (SELECT 关联字段 FROM 表2 WHERE 条件);
或通过MERGE语句实现复杂逻辑。

4. 删除整个表结构
使用DROP TABLE 表名;会同时删除表结构及所有数据,且无法恢复。例如:
DROP TABLE 员工表;
警示:此操作权限要求高,需确认无其他对象依赖该表(如视图、存储过程),否则会导致关联对象失效。

通用注意事项

  • 执行删除前建议先备份数据或通过SELECT * FROM 表名 WHERE 条件验证条件范围。
  • 大表删除可分批提交(如添加ROWID条件限制每次删除量)以减少锁表时间。
  • 生产环境建议使用事务控制(COMMIT/ROLLBACK)确保操作可回滚。
  • Oracle 12c及以上版本支持TRUNCATE TABLE 表名 REUSE STORAGE快速清空表并保留存储空间。