admin管理员组

文章数量:1532655

2024年6月6日发(作者:)

删除表(记录和结构)的语名delete ———— truncate ———— drop

DELETE (删除数据表里记录的语句)

DELETE FROM表名 WHERE 条件;

注意:删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的

数据块标成unused.

如果确实要删除一个大表里的全部记录, 可以用 TRUNCATE 命令, 它可以释放占用

的数据块表空间

TRUNCATE TABLE 表名;

此操作不可回退.

相同点

truncate和不带where子句的delete, 以及drop都会删除表内的数据

注意:

1.这里说的delete是指不带where子句的delete语句

2.在存储过程中默认是不允许执行truncate table tablename操作的,所以要使用

execute immediate 'truncate table tablename';

例如:

[sql] view plaincopyprint?

1. CREATE OR REPLACE PROCEDURE proc_delete_all_data

2. IS

3. BEGIN

4. execute immediate 'truncate table T_FLOW_ACCOUNT';

5. execute immediate 'truncate table T_FLOW_MERCHANT';

6. END proc_delete_all_data;

不同点:

1. truncate和 delete只删除数据不删除表的结构(定义)

drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依

赖于该表的存储过程/函数将保留,但是变为invalid状态.

语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如

本文标签: 删除数据记录结构操作