删除和截断
SQL(结构查询语言)命令Delete和Truncate都用于删除数据库中存储在表中的数据。Delete是一个DML(数据操作语言)语句,它删除表的部分或所有行。' Where子句'用于指定需要删除的行,如果Where子句没有与Delete语句一起使用,它将删除表中的所有数据。Truncate是一个DDL(数据定义语言)语句,它从表中删除整个数据。这两个命令都不会破坏表结构和对表的引用,只在需要时删除数据。
Delete语句
Delete语句允许用户根据指定的条件从数据库中现有的表中删除数据,而“Where子句”用于确定该条件。Delete命令被称为有日志记录的执行,因为它每次只删除一行,并且在事务日志中为每一行删除保留一个条目。因此,这会导致操作变慢。Delete是一个DML语句,因此在执行命令时不会自动提交。因此,如果需要,可以回滚Delete操作以再次访问数据。执行Delete命令后,应该提交或回滚该命令,以便永久保存更改。Delete语句不会从数据库中删除表的表结构。它也不会释放表使用的内存空间。
Delete命令的典型语法如下所示。
从< table_name >删除
或
DELETE FROM
截断的声明
Truncate语句从数据库中现有表中删除所有数据,但它保留相同的表结构、完整性约束、访问权限以及与其他表的关系。因此,不需要重新定义表,如果用户希望再次重用表,则可以使用旧的表结构。Truncate通过释放用于保存数据的数据页来删除整个数据,并且只有这些页面释放被保留在事务日志中。因此,truncate命令只占用较少的系统和事务日志资源进行操作,因此比其他相关命令运行速度快。Truncate是一个DDL命令,因此它在语句执行前后使用自动提交。因此,truncate不能以任何方式再次回滚数据。它在执行后释放表使用的内存空间。但是Truncate语句不能应用于由外键约束引用的表。
下面是Truncate语句的常用语法。
截断表< table_name >
删除和截断的区别是什么? 1.Delete和Truncate命令从数据库中现有的表中删除数据,而不损害表结构或对表的其他引用。 2.但是,Delete命令可以只使用相关条件删除表中的特定行,或者不使用任何条件删除所有行,而Truncate命令只能用于删除表中的整个数据。 3.Delete是一个DML命令,它可以在必要时回滚操作,但Truncate是一个DDL命令,因此它是一个自动提交语句,不能以任何方式回滚。因此,在数据库管理中谨慎使用此命令非常重要。 4.Truncate操作比Delete操作消耗的系统资源和事务日志资源更少,因此认为Truncate操作比Delete操作更快。 5.此外,Delete不会释放表使用的空间,而Truncate会释放执行后使用的空间,因此在从数据库表中删除整个数据的情况下,Delete是低效的。 6.但是,当表被外键约束引用时,不允许使用Truncate,在这种情况下,可以使用Delete命令而不是Truncate。 7.最后,在数据库管理系统中应用这两个命令各有优点和缺点,用户应该注意适当地使用这些命令以获得良好的结果。 |
留下一个回复