【发布时间】:2011-03-05 05:58:00
【问题描述】:
我想删除表中的所有数据行,但不删除表。删除语句有一个 where 子句,所以我必须为每一行一一给出。有没有其他方法可以删除表中的整个数据行?
这是Oracle 并使用sqlplus
【问题讨论】:
-
SQL 中的
WHERE子句是完全可选的。所以DELETE FROM mytable;是完全有效的,并且会起作用。
我想删除表中的所有数据行,但不删除表。删除语句有一个 where 子句,所以我必须为每一行一一给出。有没有其他方法可以删除表中的整个数据行?
这是Oracle 并使用sqlplus
【问题讨论】:
WHERE 子句是完全可选的。所以DELETE FROM mytable; 是完全有效的,并且会起作用。
您可以尝试: TRUNCATE TABLE 表名
【讨论】:
Truncate Table tablename
http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands
您也可以使用delete from tablename 删除所有记录,但截断要快得多
【讨论】:
你最好放弃约束,然后使用 Truncate 命令,在删除数据后,再次应用约束。
【讨论】:
尝试使用FORALL 进行批量删除。这样一来,可以在单个删除事务中删除整个批量,而不是一次删除一行。
【讨论】: