截断DDL或DML命令

时间:2018-04-01 19:20:39

标签: sql-server ddl truncate

我一直都知道TRUNCATE是一个DDL命令,但Microsoft文档让我感到困惑。

This链接表示TRUNCATE是DDL命令,this表示TRUNCATE是DML命令

另外,DDL和DML的说明在不同的数据库中是否有所不同?防爆。 Oracle,MySql等。

4 个答案:

答案 0 :(得分:2)

就个人而言,我会说TRUNCATE是一个DML命令;您使用它来操纵数据,而不是更改定义。

文档中有一些内容存在冲突,主要是因为e比其他版本更旧。他们甚至无法决定CASE是一个陈述还是一个表达。

答案 1 :(得分:1)

好吧,TRUNCATE TABLE,如Microsoft文档中描述的类似于DELETE(由他们自己承认)。 DELETE是DML,因此,TRUNCATE TABLE也应该是DML。

也许编写第一篇文章的人错误地把它放在那里。或许他/她想要指出这是一个与你用于DDL同样谨慎使用的命令。

我必须承认这是我第一次看到这个命令,而且我不知道它是否包含在SQL标准中。

答案 2 :(得分:1)

维基百科说TRUNCATE是DML:

  

在SQL中,TRUNCATE TABLE语句是一种数据操作语言   (DML)操作,用于标记表的扩展区以进行解除分配   (空可重复使用)。此操作的结果很快就会删除所有操作   来自表的数据,通常绕过许多完整性强制执行   机制。它是在SQL:2008标准中正式引入的。

https://en.wikipedia.org/wiki/Truncate_(SQL)

答案 3 :(得分:0)

事实是TRUNCATE是DDL命令。您提供的第一个链接是正确的,第二个链接是昨天的fixed

Wikipedia还将其定义为DDL命令,但是在12 February 2018‎上进行的不正确编辑(并在3 April 2018‎上正确地还原)使它在一段时间内以其他方式表示。