首页 理论教育 使用DELETE删除数据|数据库应用基础

使用DELETE删除数据|数据库应用基础

时间:2023-11-02 理论教育 版权反馈
【摘要】:DELETE删除的数据在没有被提交时可以回滚,而TRUNCATE TABLE执行成功数据不能回滚。如果删除大数据量的表DELETE速度会很慢,同时会占用很多的ROLLBACK空间。TRUNCATE只能对TABLE,DELETE可以是TABLE,VIEW,SYNONYM。

使用DELETE删除数据|数据库应用基础

对于数据库的数据,并不需要把所有的数据进行保存。例如已经没有保留价值的数据、输入错误的数据等。这时需要用到DML中的DELETE命令。

DELETE命令语句的语法规则如示例代码4-18所示。

由于DELETE命令的语法结构和UPDATE命令类似,这里不再对命令DELETE作解释。

应用程序开发时,经常需要对系统进行各种测试,有时需要对同一类型进行多次测试,这时数据库表里将有很多测试数据,每次测试或应用系统正式运行前都需要删除测试数据,如示例代码4-19,执行结果如图4-12所示。

图4-12 查看customer表中的所有数据

通过图4-12,发现电子商城购物系统的customer表含有4条记录,需要对它们进行删除,需要做以下操作:

1.使用DELETE删除满足查询的库表行集

使用DELETE删除满足查询条件的库表行集,就是使用WHERE条件子句删除表中记录。例如,删除上面记录中CusName字段值为“大毛”的数据记录,示例代码如4-20,执行结果如图4-13所示。

图4-13 删除满足条件的记录

从图4-13的输出信息“(1行受影响)”可以看出,该行数据已经被删除了。

2.使用DELETE删除整个表数据(www.xing528.com)

使用DELETE删除整个表数据就是把整个表的数据清空,使得记录行数为“0”。例如,开发的新系统正式投入生产运行前,需要把一些数据库表清空。如要把customer表清空,如示例代码4-21所示。

3.TRUNCATE TABLE删除库表数据与DELETE删除库表数据的区别

在删除数据库表数据时经常使用DELETE和TRUNCATE TABLE命令,下面介绍一下这两个命令的区别:

(1)DELETE和TRUNCATE TABLE都可以删除整个表中的数据,但是DELETE命令不会释放数据使用过的表空间,除非再用其他命令回收其表空间,而TRUNCATE TABLE可以回收数据曾占用过的表空间。但是,它们都不会删除表结构。

(2)DELETE删除的数据在没有被提交时可以回滚(ROLLBACK),而TRUNCATE TABLE执行成功数据不能回滚。

(3)如果删除大数据量的表DELETE速度会很慢,同时会占用很多的ROLLBACK空间。

(4)TRUNCATE是DDL操作,不产生ROLLBACK,速度快一些。

(5)TRUNCATE只能对TABLE,DELETE可以是TABLE,VIEW,SYNONYM。

(6)TRUNCATE TABLE的对象必须是本模式下的,或者有DROP ANY TABLE的权限,而DELETE则是对象必须是本模式下的,或被授予DELETE ON SCHEMA.TABLE或DELETE ANY TABLE的权限。

TRUNCATE TABLE命令语法规则如示例代码4-22所示。

使用TRUNCATE TABLE命令示例如示例代码4-23所示。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈