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 员工表;
警示:此操作权限要求高,需确认无其他对象依赖该表(如视图、存储过程),否则会导致关联对象失效。
通用注意事项: