SQL 中的 DDL 命令

2025年7月16日 | 阅读 8 分钟

在 SQL 中,DDL 代表 数据定义语言。它是一种 SQL 命令,用于定义和管理数据库结构。数据定义语言的命令处理数据应如何存储在数据库中。它们允许用户在数据库中 创建修改删除 数据。

DDL 有许多用于对数据库执行多种操作的命令。这些命令有助于管理数据库结构。

DDL 命令

以下是用于管理数据库的 DDL 命令列表

DDL Commands in SQL
  • CREATE
  • ALTER
  • DROP
  • TRUNCATE
  • 重命名

CREATE 命令

CREATE 命令用于创建数据库、表、触发器和其他数据库对象。

SQL 中 CREATE 命令的示例

示例 1:使用 CREATE DDL 命令创建新数据库

数据库 是存储在其内部的数据的集合,而 创建数据库 是设计关系数据系统的第一步。因此,让我们了解如何创建它。

创建数据库的语法

假设您要创建 Entertainment 数据库。要做到这一点,您需要编写以下 DDL 命令

示例 2:使用 CREATE DDL 命令创建新表

在数据库中,数据以表的形式存储。表是存储列中数据的数据库对象。让我们了解如何创建表。

创建新表的语法

参数

CREATE TABLE: 此关键字用于创建新表。

table_name: 在此处,我们写入分配给表的表名。

column_name_1, column_name_2, ..... column_name_3: 在此处,我们写入要在表中创建的每个列名。

data_type: 它定义了列的数据类型。

假设您想在数据库中创建一个名为 movies 的包含三个列的表。要做到这一点,您需要编写以下 DDL 命令

示例

说明

在上面的示例中,CREATE TABLE 语句用于创建新表。在表中,movie_id 被定义为 uniqueNOT NULL,通过 primary key 实现。我们将 title 的类型定义为 VARCHAR(100),表示它将存储最多 100 个字符,而 release_year 只存储 INT 类型的数据。

示例 3:使用 CREATE DDL 命令创建新索引

创建新索引的语法

参数

CREATE INDEX: 这是用于在表上创建索引的命令。

ON: 这是一个关键字,用于告知将创建索引的表的名称。

Name_of_Index: 这是索引的名称。

Name_of_Table: 这是表的名称。

column_name_1 , column_name_2 , ... . , column_name_N: 这些是将在其上应用索引的列名。

让我们看 movies

movie_idtitlerelease_year
101Harry Potter and the Chamber of Secrets2002
102Red Notice2021
10328 Days Later2002
104Pushpa: The Rule2024
105Baahubali 2: The Conclusion2016

假设您想在 movies 表的 title 字段上创建索引。为此,我们必须使用以下 DDL 命令

示例 4:使用 DDL CREATE 命令在数据库中创建触发器

创建触发器的语法

参数

CREATE TRIGGER: 这是创建新 触发器 的 DDL 命令。

BEFORE|AFTER: 它用于指示触发器是在事件 之前 还是 之后 触发。

INSERT | UPDATE | DELETE: 这些是触发器命中时执行的操作,例如插入、更新或从表中删除数据

ON: 它选择将应用触发器的表。

table_name: 这是将应用触发器的表的名称。

FOR EACH ROW: 此语句用于为每一行运行一次触发器。

BEGIN: 代码块从这里开始执行,当触发器命中时。

END: 它表示代码块的结束。SQL 语句写在 BEGINEND 关键字之间。

假设您想在 movies 表上创建一个触发器,以便在删除行后将日志插入 movies_log 表。要做到这一点,您需要编写以下 DDL 命令

SQL 查询

输出

log_idaction_typelog_messagelog_message
1AFTER DELETEMovie "Pushpa: The Rule" deleted.2025-07-02 17:20:11

说明

在上面的示例中,我们创建了一个 after_delete_movies 触发器,以便当我们从 movies 表中删除一行时,触发器会运行并将相应的日志条目插入 movie_log 表。

正如我们在输出中看到的,通过 AFTER DELETE 触发器,在 movies_log 表中创建了一个新的条目,其 log_id = 1

ALTER 命令

ALTER 命令用于在不删除或重新创建表的情况下修改现有表的数据库结构。如果用户想添加、删除或修改表,则可以通过 ALTER 命令轻松完成任务。

为了更清楚地解释,我们提供了一些示例及其语法和说明。

示例 1:向表中添加新列

语法

参数

ALTER TABLE: ALTER TABLE 命令用于更改现有表的结构。

ADD: 此关键字告诉 SQL 用户想要添加一个新列。

table_name: 这是表的名称。

column_name: 这是列的名称。

datatype: 在这里,将出现数据类型的名称。

假设您想在现有 employees 表中添加 email 列。要做到这一点,您需要编写以下 DDL 命令

说明

在上面的查询中,我们在 employees 表中添加了一个名为 email 的新列,并且 email 的数据类型是 VARCHAR(100)

示例 2:更改现有列的名称或数据类型

语法

参数

MODIFY: 此关键字告诉 SQL 用户想要修改现有列。

假设您想更改现有 movies 表的 title 列的数据类型。要做到这一点,您需要编写以下 DDL 命令

说明

在上面的示例中,我们将 title 列的数据类型从 VARCHAR(100) 修改为 VARCHAR(200)

示例 3:从表中删除列

语法

参数

DROP COLUMN: 通过此命令,我们可以永久地从表中删除一列。

查询

说明

根据上面的查询,我们使用 DROP COLUMN 关键字删除了 release_year 列。

示例 4:重命表中列

语法

参数

RENAME TO: 这是用于更改现有表名称的 SQL 命令。

查询

说明

在上面的示例中,我们使用 RENAME TO 命令将 'movies' 表重命名为 'films'

DROP 命令

DROP 是一个 DDL 命令,用于删除/移除数据库中的数据库对象。我们可以使用此 DDL 命令轻松地从数据库中删除整个表、视图或索引。

SQL 中 DROP 命令的示例

示例 1:从数据库中删除数据库

删除数据库的语法

假设您想从数据库中删除 Entertainment 数据库。要做到这一点,您需要编写以下 DDL 命令

示例 2:从数据库中删除现有表

删除表的语法

假设您想从数据库中删除 movies 表。要做到这一点,您需要编写以下 DDL 命令

示例 3:从数据库中删除现有索引

删除索引的语法

假设您想从数据库中删除 index_title。要做到这一点,您需要编写以下 DDL 命令

TRUNCATE 命令

TRUNCATE 命令 用于当我们想删除表中的所有记录但表结构不被删除时。它比删除更快,因为它只需单击一下即可删除所有行。我们保留结构以便将来使用,并将数据插入到相同的结构中。此命令还删除用于存储表记录的空间。

语法

参数

TRUNCATE TABLE: 此命令删除表中的所有行。

table_name: 这是将删除记录的表的名称。

示例

假设您想删除 movies 表的记录。要做到这一点,您需要编写以下 DDL 命令

说明

在上面的示例中,我们删除了 movies 表中的所有行。

RENAME 命令

RENAME 是一个 DDL 命令,用于更改数据库对象的名称,例如列名和表名。

示例 1:将旧表名更改为新表名

语法

参数

RENAME TABLE: RENAME TABLE 命令告知数据库用户想要更改表的名称。

TO: 此关键字将旧表连接到新表。

old_table_name: 这是旧表的名称。

new_table_name: 这是新表的名称。

假设您想将表名从 'movies' 更改为 'films'。要做到这一点,您需要编写以下 DDL 命令

说明

在上面的示例中,我们将 'movies' 表更改为 'films' 表。

示例 2:将旧列名更改为新列名

语法

参数

RENAME COLUMN: 此命令告知数据库用户想要更改指定列的名称。

TO: 此关键字将旧列连接到新列。

old_column_name: 这是旧列的名称。

new_column_name: 这是新列的名称。

假设您想将 movies 表的 'title' 列名更改为 'film_title'。要做到这一点,您需要编写以下 DDL 命令

说明

在上面的示例中,我们将 movies 表的列名从 'title' 更改为 'film_title'

结论

SQL 中的 DDL 命令 用于处理数据库结构。这些命令允许用户在数据库中 创建修改删除 对象。DDL 命令帮助用户创建新表或修改现有表。这些命令有助于创建灵活、可扩展且高效的数据库,支持可靠的数据管理。