我一直都知道TRUNCATE是一个DDL命令,但Microsoft文档让我感到困惑。
This链接表示TRUNCATE是DDL命令,this表示TRUNCATE是DML命令
另外,DDL和DML的说明在不同的数据库中是否有所不同?防爆。 Oracle,MySql等。
答案 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标准中正式引入的。
答案 3 :(得分:0)
事实是TRUNCATE
是DDL命令。您提供的第一个链接是正确的,第二个链接是昨天的fixed。
Wikipedia还将其定义为DDL命令,但是在12 February 2018上进行的不正确编辑(并在3 April 2018上正确地还原)使它在一段时间内以其他方式表示。