Delete如何同时是DDL和DML语句

时间:2017-03-01 16:05:48

标签: sql sql-server tsql ddl dml

我目前正在阅读微软的官方书籍“数据库管理基础知识”#39;准备参加考试。

我理解DDL和DML是什么,但Microsoft将DELETE显示为DDL和DML语句。我用谷歌搜索了这个,但我不能确认或否认这一点。

对此的一个很好的参考是问题:What is DDL and DML它将其显示为DML。以下是本书中的细分:

  

数据操作语言(DML)是允许的语言元素   您可以使用INSERT,UPDATE,DELETE和MERGE等核心语句   操纵任何SQL Server表中的数据。核心DML语句包括   以下内容:•SELECT:从数据库中检索行并启用   从一个或多个表中选择一个或多个行或列   在SQL Server中。 •INSERT:向表或a添加一个或多个新行   在SQL Server中查看。 •更新:更改一个或多个现有数据   表或视图中的列。 •DELETE:从表中删除行或   视图。 •MERGE:对a执行插入,更新或删除操作   目标表基于与源表的连接结果。

     

六个主要的DDL语句如下:•USE:更改   数据库上下文•CREATE:创建SQL Server数据库对象   (表,视图或存储过程)。 •ALTER:更改现有内容   宾语。 •DROP:从数据库中删除对象。 •TRUNCATE:   从表中删除行并释放这些行使用的空间。 •   DELETE:从表中删除行但不释放使用的空间   删除了那些行。

这本书是否过时/错误。有人可以帮助阐明这一点我看到完整的DDL和DML语句的冲突列表。

1 个答案:

答案 0 :(得分:1)

我同意你的看法,DELETE是DML。而且,我敢说,TRUNCATE也应该被认为是DML,因为逻辑上等同于DELETE语句。 TRUNCATEDROPCREATE的事实在我看来不足以证明将其分配给DDL,因为这两者一起作为一个原子操作执行,不会影响数据库的架构。