Oracle DELETE 语句用于从表中删除记录,语法为:DELETE FROM table_name WHERE condition。条件可选,限制删除记录。支持级联删除,即删除父表记录时,也可删除子表记录。使用时需谨慎,因删除操作不可逆。

Oracle DELETE 语句
DELETE 语句用于从 Oracle 数据库表中删除记录。其基本语法如下:
DELETE FROM table_name WHERE condition;
其中:
- table_name 是要从中删除记录的表名。
- condition 是可选的,用于限制要删除的记录。如果不指定 condition,则将删除表中的所有记录。
示例:
删除名为 "customers" 表中所有记录:
DELETE FROM customers;
删除 "customers" 表中 customer_id 为 10 的记录:
DELETE FROM customers WHERE customer_id = 10;
删除多个条件的记录:
可以使用逻辑运算符(AND、OR)删除满足多个条件的记录。
示例:
删除 "customers" 表中城市为 "New York" 且年龄大于 30 的记录:
DELETE FROM customers WHERE city = 'New York' AND age > 30;
级联删除:
当表之间存在外键约束时,删除父表中的记录可能会导致子表中的记录也被删除。这被称为级联删除。
要启用级联删除,必须在创建外键约束时指定 ON DELETE CASCADE 选项。
示例:
考虑以下表结构:
CREATE TABLE orders ( order_id NUMBER PRIMARY KEY, product_id NUMBER, CONSTRAINT FK_order_product FOREIGN KEY (product_id) REFERENCES products (product_id) ON DELETE CASCADE );
如果从 "products" 表中删除产品,则也会删除 "orders" 表中引用该产品的所有订单。
注意事项:
- 使用 DELETE 语句时要小心,因为它是一种不可逆的操作。删除的记录无法恢复。
- 在删除大量记录之前,请先使用 SELECT 语句验证删除条件。
- 使用事务控制语句(如 COMMIT 和 ROLLBACK)来控制对数据库的更改。










