为什么alter命令被称为DDL而不是DML?

时间:2016-02-02 06:47:45

标签: sql ddl alter dml

我正在浏览SQL中的不同命令,我遇到了alter命令,它被称为DDL(数据定义语言)。我们可以更改其中的列和值,因此我们可以使用此命令操作数据,那么为什么alter命令不会被称为DML(数据操作语言)。

我用谷歌搜索了,我无法得到一些好的解释,所以请帮助我。

5 个答案:

答案 0 :(得分:3)

ALTER命令用于改变数据库的结构。这就是DDL所做的事情,即DDL语句用于定义数据库结构或模式。

而DML语句用于管理模式对象中的数据。

答案 1 :(得分:2)

DDL - 更改架构

这包括创建表,重命名列,删除视图等。这些语句是DDL,即使这可能会创建(默认值),更改(通过转换),甚至丢失(删除列)数据作为过程的一部分。基本上,任何CREATE/DROP/ALTER命令都是DDL。

DML - 更改架构中的信息/数据; 没有更新架构。

这包括DELETEUPDATE声明。

有时必须一起使用DDL和DML才能正确迁移模式;但它们是两个不同类别的SQL命令,DML永远不会导致架构被更改。

答案 2 :(得分:1)

原因ALTER命令未操作数据。它用于更改o列或表或其他DB对象的定义。

请参阅 http://www.w3schools.com/sql/sql_alter.asp

答案 3 :(得分:0)

“数据”是用户通过DDL定义的表中的数据。 “元数据”是DBMS预定义的表中的数据,用于描述表(本身和用户定义的表)。所以DML 操纵用户表中的数据或(通常只)从系统表中读取元数据,而DDL 定义(CREATE,ALTER,DROPs)用户表并作为副作用更新系统表中的元数据。

答案 4 :(得分:0)

ALTER命令可以是DDL和DML。我知道ALTER过去是DDL,就像大多数对此做出回应的人一样。但是,使用MySQL 5.7.x,您将看到使用mysqld --initialize --console初始化数据库后不久,将创建一个默认的root用户帐户及其相应的密码。您可以使用此新创建的root用户帐户访问数据库,但登录后绝对无法执行任何操作。此阶段允许的唯一SQL语句是ALTER语句。这用于更改初始化期间生成的默认密码。语法为ALTER USER 'root'@'localhost' IDENTITIED BY 'new_password';。这是数据库接受的唯一语句。这将修改/更新/处理用户表中的数据(密码)。在这方面,我得出的结论是,ALTER语句既可以是DDL也可以是DML