【发布时间】:2018-09-11 02:38:52
【问题描述】:
我一直都知道 TRUNCATE 是一个 DDL 命令,但 Microsoft 文档让我感到困惑。
This 链接表示 TRUNCATE 是 DDL 命令,this 表示 TRUNCATE 是 DML 命令
另外,不同数据库中对 DDL 和 DML 的澄清是否不同?前任。 Oracle、MySql 等
【问题讨论】:
标签: sql-server ddl truncate
我一直都知道 TRUNCATE 是一个 DDL 命令,但 Microsoft 文档让我感到困惑。
This 链接表示 TRUNCATE 是 DDL 命令,this 表示 TRUNCATE 是 DML 命令
另外,不同数据库中对 DDL 和 DML 的澄清是否不同?前任。 Oracle、MySql 等
【问题讨论】:
标签: sql-server ddl truncate
就个人而言,我会说TRUNCATE 是一个DML 命令;您正在使用它来操作数据,而不是更改定义。
文档中有一些冲突的地方,主要是因为 e 比其他文档更老。他们甚至无法确定CASE 是语句还是表达式。
【讨论】:
维基百科说 TRUNCATE 是 DML:
在 SQL 中,TRUNCATE TABLE 语句是一种数据操作语言 (DML) 操作,标记表的范围以进行释放 (空置可重复使用)。此操作的结果很快删除了所有 表中的数据,通常绕过一些完整性强制 机制。在 SQL:2008 标准中正式引入。
【讨论】:
嗯,Microsoft 文档中描述的 TRUNCATE TABLE 类似于 DELETE(他们自己承认)。并且 DELETE 是 DML,因此,TRUNCATE TABLE 也应该是 DML。
也许写第一篇文章的人把它放在那里是个错误。或者,也许他/她想指出,在使用该命令时要像在 DDL 中一样谨慎使用。
我必须承认这是我第一次看到该命令,我不知道它是否包含在 SQL 标准中。
【讨论】:
事实上,TRUNCATE 是一个 DDL 命令。您提供的第一个链接是正确的,第二个是昨天的fixed。
Wikipedia 也将其定义为 DDL 命令,但在 12 February 2018 上进行的错误编辑(并在 3 April 2018 上正确还原)使得它暂时不这样说。
【讨论】: