滴(drop)和截断(truncate)的区别

Drop和Truncate是数据库管理系统中使用的两个SQL(结构化查询语言)语句,我们希望从数据库中删除数据记录。Drop和Truncate语句都会删除表中的整个数据和相关的SQL语句。在这种情况下,Delete操作无效,因为它比Drop和Truncate占用更多的存储空间。...

删除vs截断

Drop和Truncate是数据库管理系统中使用的两个SQL(结构化查询语言)语句,我们希望从数据库中删除数据记录。Drop和Truncate语句都会删除表中的整个数据和相关的SQL语句。在这种情况下,Delete操作无效,因为它比Drop和Truncate占用更多的存储空间。

如果我们想放弃数据库中的一个表及其所有数据,SQL允许我们使用Drop语句轻松地执行此操作。Drop命令是一个DDL(数据定义语言)命令,可用于销毁现有的数据库、表、索引或视图。它从数据库中删除表中的全部信息以及表结构。另外,我们可能希望简单地删除表中的所有数据,但是没有表,在这种情况下,我们可以在SQL中使用Truncate语句。Truncate也是一个DDL命令,它消除了表中的所有行,但保留了相同的表定义以供将来使用。

Drop命令

如前所述,Drop命令删除表定义及其所有数据、完整性约束、索引、触发器和访问特权,这些都是在特定表上创建的。因此,它会从数据库中完全删除现有对象,并且在执行命令后,与其他表的关系也将不再有效。它还从数据字典中删除有关表的所有信息。下面是对表使用Drop语句的典型语法。

删除表格<表格名称>

我们只需替换上面Drop命令示例中要从数据库中删除的表名。

必须指出的是,Drop语句不能用于删除已被外键约束引用的表。在这种情况下,必须首先删除引用外键约束或该特定表。此外,Drop语句不能应用于数据库中的系统表。

由于Drop命令是一个auto commit语句,一旦触发操作就不能回滚,也不会触发触发器。当删除一个表时,对该表的所有引用都将无效,因此,如果我们想再次使用该表,则必须使用所有完整性约束和访问权限重新创建该表。所有与其他表的关系,也必须重新定位。

截断命令

Truncate命令是一个DDL命令,它删除表中的所有行而不使用任何用户指定的条件,并释放表使用的空间,但表结构及其列、索引和约束保持不变。Truncate通过取消分配用于存储表数据的数据页来消除表中的数据,并且只有这些页释放保留在事务日志中。因此,与Delete等其他相关SQL命令相比,它使用的事务日志资源和系统资源更少。所以Truncate语句比其他语句快一点。以下是Truncate命令的典型语法。

截断表格<表格名称>

我们应该用上面的语法替换要从中删除整个数据的表名。

不能对已被外键约束引用的表使用Truncate。它在操作之前自动使用一个提交,然后再使用另一个提交,所以事务的回滚是不可能的,并且不会触发触发器。如果我们想重用表,我们只需要访问数据库中现有的表定义。

Drop和Truncate有什么区别?

Drop和Truncate命令都是DDL命令,也是自动提交语句,因此无法回滚使用这些命令执行的事务。

Drop和Truncate之间的主要区别是Drop命令不仅删除表中的所有数据,而且还会从数据库中永久删除包含所有引用的表结构,而Truncate命令只删除表中的所有行,并保留表结构及其引用。

如果删除一个表,与其他表的关系将不再有效,并且完整性约束和访问权限也将被删除。因此,如果需要重用表,则必须使用关系、完整性约束以及访问权限来重新构建表。但是,如果表被截断,表结构及其约束将保留以备将来使用,因此,重用时不需要上述任何重新创建。

  • 发表于 2020-11-04 15:26
  • 阅读 ( 195 )
  • 分类:IT

你可能感兴趣的文章

ddl公司(ddl)和dml公司(dml)的区别

...言。这种语言用于改变数据库的结构。Create、Alter、Drop、Truncate是一些DDL命令。 图01:SQL ddl命令示例 请参阅以下用TSQL(MSSQL server)编写的DDL示例; 下面的语句将创建一个名为“employee”的数据库。 创建数据库员工; 下面的语句...

  • 发布于 2020-10-24 04:48
  • 阅读 ( 266 )

如何阻止超过140个字符的tweet(如果你真的必须的话)

...feed只发送短的文本信息,那就太好了。 在编写Tweets时,Truncator会为Firefox用户修剪Twitter消息,但Opera似乎没有选择。随着Twitter用户厌倦了双重生活,这种情况可能会很快改变。 请注意,所有这些扩展都需要权限才能查看您在其...

  • 发布于 2021-04-07 02:57
  • 阅读 ( 182 )

滴(drop)和撤退(withdraw)的区别

放弃与撤回 我们可以讨论英语单词“retrach”和“drop”在意义上的差异,但这两个词通常用于学术领域,指的是退学或从某门课程中退学。词典中“drop”的含义 突然从一条线或一层下降到另一层 删除一个类单个类或整个计划...

  • 发布于 2021-06-23 18:11
  • 阅读 ( 155 )

截断(truncate)和删除(delete)的区别

...因的。在前面的讨论中你会明白的。 什么是截断命令(a truncate command)? Truncate命令的目的是删除整个表。因此,当您使用Truncate命令时,您将丢失表中的所有数据,在使用它时应谨慎。让我们知道如何使用它。 Truncate的语法: 截...

  • 发布于 2021-06-25 01:12
  • 阅读 ( 314 )

删除(delete)和截断(truncate)的区别

delete和truncate的主要区别是delete从表中删除单个、多个或所有记录,truncate从数据库中删除所有记录以及表的结构。 数据库是相关数据的集合。数据库管理系统(DBMS)允许在数据库中创建和管理数据。此外,遵循关系模型的DBMS...

  • 发布于 2021-07-01 07:59
  • 阅读 ( 250 )

滴(drop)和在sql中删除(delete in sql)的区别

SQL中DROP和DELETE的主要区别在于DROP是一个数据定义语言(DDL)命令,而DELETE是一个数据操作语言(DDL)命令。 数据库是数据的集合。数据库管理系统(DBMS)是一种方便地存储、检索和操作数据库中数据的软件。数据库将数据存...

  • 发布于 2021-07-01 13:05
  • 阅读 ( 238 )

ddl公司(ddl)和dbms中的dml(dml in dbms)的区别

...令用于更改表的内容。drop表用于从表中删除一些数据。Truncate命令用于删除表中的所有内容,rename命令用于重命名整个数据库。数据定义语言接受用于创建数据库的所有命令。数据操作中的Select用于从表中检索数据。**数据操作...

  • 发布于 2021-07-08 12:02
  • 阅读 ( 212 )

滴耳液(ear drops)和口服抗生素(oral antibiotics)的区别

... drops) vs. 口服抗生素(oral antibiotics)滴耳液和口服抗生素的区别在于,滴耳液通常是一种液体形式的药物,直接放在或敷在感染部位,可以使感染更快地恢复。另一方面,口服抗生素是通过口腔口服的片剂和胶囊,只有它们被消化...

  • 发布于 2021-07-12 00:16
  • 阅读 ( 321 )

滴耳液(ear drops)和滴眼液(eye drops)的区别

...一。滴耳液(ear drops) vs. 滴眼液(eye drops)滴耳液和滴眼液的区别在于,滴耳液用于治疗耳朵感染,而滴眼液用于治疗眼睛感染和疾病。滴耳液可以应用于外耳,也可以灌输在中耳而不是内耳。滴眼液滴在眼袋里,眼袋就在眼睑下面...

  • 发布于 2021-07-12 01:30
  • 阅读 ( 215 )

删除(delete)和截断(truncate)的区别

...行的命令。该命令属于DML或更确切地说是数据操作语言。TRUNCATE命令允许程序员从SQL数据库的表中删除所有行。该命令属于数据定义语言或DDL。 DELETE和TRUNCATE是数据库管理系统中常见的两个术语。这些术语对计算机的普通用户来...

  • 发布于 2021-07-12 12:06
  • 阅读 ( 151 )