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

Why alter command is referred as DDL and not DML?

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

我已经用谷歌搜索了,但找不到很好的解释,所以请帮助我。

DDL - 改变架构

这包括创建表、重命名列、删除视图等。此类语句是 DDL,即使作为过程。基本上,任何 CREATE/DROP/ALTER 命令都是 DDL。

DML - 改变模式中的 information/data没有 更新架构。

这包括 DELETEUPDATE 语句。

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

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

而 DML 语句用于管理架构对象中的数据。

原因是 ALTER 命令没有处理数据。它用于更改 o 列或 table 或其他数据库对象的定义。

http://www.w3schools.com/sql/sql_alter.asp

"data"是用户通过DDL定义的表中的数据。 "metadata" 是 DBMS 预定义的表中的数据,用于描述表(本身和用户定义的表)。因此 DML 操作 用户表中的数据或(通常仅) 从系统表中读取 元数据,而 DDL 定义 (CREATEs、ALTERs、DROPs)用户表并作为副作用更新系统表中的元数据。

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