SQL 中的 DML 命令

12 Feb 2025 | 7 分钟阅读

DML 是 数据操纵语言 的缩写。

存储在数据库表中的信息以及查询表上的视图可以通过一组称为数据操纵语言(Data Manipulation Language,简称 DML)的命令进行修改。对于科学家、工程师、数据分析师或任何处理结构化查询语言 (SQL) 的人来说,DML 对于获取、转换或处理数据至关重要。每个曾经接触过 SQL 的人,都一定在实践中使用过 DML 命令。

DML Commands in SQL

数据操纵语言 (DML):它是什么?

有一组 SQL 命令用于更改数据库表和查询视图的内容,称为数据操纵语言,或 DML。对于 SQL 用户,如科学家、工程师、数据分析师等,DML 至关重要,因为它提供了在分析过程中获取和操纵数据的方法。每次使用 SQL 时都会使用 DML,所有相关人员都了解这些命令。

以下是 SQL 中四个主要的 DML 命令

DML Commands in SQL
  1. SELECT 命令
  2. INSERT 命令
  3. UPDATE 命令
  4. DELETE 命令

SELECT DML 命令

SELECT 是结构化查询语言中最重要的数据操纵命令。SELECT 命令显示指定表的记录。它还通过使用 WHERE 子句显示特定列的特定记录。

SELECT DML 命令的语法

这里,column_Name_1, column_Name_2, ……, column_Name_N 是我们想要从表中检索数据的列的名称。

如果我们要从表的所有列中检索数据,我们必须使用以下 SELECT 命令

SELECT 命令的示例

示例 1:此示例显示表中每个列的所有值。

此 SQL 语句显示学生表的以下值

学生编号 (Student_ID)学生姓名学生分数
BCA1001Abhay85
BCA1002Anuj75
BCA1003Bheem60
BCA1004Ram79
BCA1005Sumit80

示例 2:此示例显示表中特定列的所有值。

此 SELECT 语句显示 Employee 表中 Emp_SalaryEmp_Id 列的所有值

员工 IDEmp_Salary
20125000
20245000
20330000
20429000
20540000

示例 3:此示例描述如何将 WHERE 子句与 SELECT DML 命令一起使用。

让我们看下面的学生表

学生编号 (Student_ID)学生姓名学生分数
BCA1001Abhay80
BCA1002Ankit75
BCA1003Bheem80
BCA1004Ram79
BCA1005Sumit80

如果你想从上表中访问所有分数是 80 的学生的记录,那么你必须在 SQL 中编写以下 DML 命令

上述 SQL 查询显示以下结果表

学生编号 (Student_ID)学生姓名学生分数
BCA1001Abhay80
BCA1003Bheem80
BCA1005Sumit80

INSERT DML 命令

INSERT 是结构化查询语言中另一个最重要的数据操纵命令,它允许用户在数据库表中插入数据。

INSERT 命令的语法

INSERT 命令的示例

示例 1:此示例描述如何在数据库表中插入记录。

让我们来看下面的学生表,它只包含 2 条学生记录。

学号学生姓名 (Stu_Name)学生分数 (Stu_Marks)学生年龄 (Stu_Age)
101Ramesh9220
201贾丁8319

假设你想在学生表中插入一条新记录。为此,你必须编写以下 DML INSERT 命令

UPDATE DML 命令

UPDATE 是结构化查询语言中另一个最重要的数据操纵命令,它允许用户更新或修改数据库表中现有数据。

UPDATE 命令的语法

这里,“UPDATE”、“SET”和“WHERE”是 SQL 关键字,“Table_name”是你想要更新其值的表的名称。

UPDATE 命令的示例

示例 1:此示例描述如何更新单个字段的值。

让我们看一个包含以下记录的产品表

产品编号Product_Name产品价格产品数量
P101Chip2020
P102巧克力6040
P103Maggi755
P201酥饼(Biscuits)8020
P203南肯4050

假设你想更新产品编号为 P102 的产品的 Product_Price。为此,你必须编写以下 DML UPDATE 命令

示例 2:此示例描述如何更新数据库表的多个字段的值。

让我们看一个包含以下记录的学生表

学号学生姓名 (Stu_Name)学生分数 (Stu_Marks)学生年龄 (Stu_Age)
101Ramesh9220
201贾丁8319
202Anuj8519
203蒙蒂9521
102Saket6521
103Sumit7819
104阿希什9820

假设你想更新学号为 103 和 202 的学生的 Stu_Marks 和 Stu_Age。为此,你必须编写以下 DML Update 命令

DELETE DML 命令

DELETE 是一种 DML 命令,它允许 SQL 用户从数据库表中删除单个或多个现有记录。

数据操纵语言的此命令不会永久删除数据库中存储的数据。我们使用 WHERE 子句与 DELETE 命令一起从表中选择特定行。

DELETE 命令的语法

DELETE 命令的示例

示例 1:此示例描述如何从表中删除单个记录。

让我们看一个包含以下记录的产品表

产品编号Product_Name产品价格产品数量
P101Chip2020
P102巧克力6040
P103Maggi755
P201酥饼(Biscuits)8020
P203南肯4050

假设你想从产品表中删除产品编号为 P203 的产品。为此,你必须编写以下 DML DELETE 命令

示例 2:此示例描述如何从数据库表中删除多条记录或行。

让我们看一个包含以下记录的学生表

学号学生姓名 (Stu_Name)学生分数 (Stu_Marks)学生年龄 (Stu_Age)
101Ramesh9220
201贾丁8319
202Anuj8519
203蒙蒂9521
102Saket6521
103Sumit7819
104阿希什9820

假设你想删除分数大于 70 的学生的记录。为此,你必须编写以下 DML Update 命令

DML 命令与其他命令类型的比较

SQL DML 指令专门用于应用于存储在数据库中的数据。这些过程还可以用于更新、删除甚至插入到已创建的表中。

以下是一些其他 SQL 命令:当您沿着数据路径到达目的地时,您会遇到多种形式的命令,包括数据查询语言 (DQL) 和数据定义语言 (DDL)。

DML 与 DDL 中的命令

使用 DDL 语句可以有效地定义、更改和控制数据库对象的排列。数据库的组成部分(表、索引、视图和模式)通过这些操作创建、修改或删除。

DDL 语句与数据库结构的创建和管理相关,而 DML 语句则侧重于操纵和选择存储在数据库中的信息。我们可以在数据项目中利用以下 DDL 命令作为示例

CREATE:构造表及其部分。

ALTER:添加、删除或更改列的名称

TRUNCATE:清除表中的信息,但不会真正删除表。

RENAME:可以删除表中的数据,而无需删除表。

DROP:删除信息及其表。

DML 与 DQL 中的命令

另一方面,存储表中的数据使用 DQL 查询进行查询和分析。SELECT、DISTINCT 以及 COUNT、SUM、AVG、MIN 和 MAX 等数学运算符是 DQL 指令的几个示例。这些运算符让我们实现以下目标

DISTINCT:提取不同的值,同时消除给定列中的重复项。

COUNT:返回满足给定条件的行数。

SUM:确定数值列的总和。

AVG:确定数值列的平均值。

MIN:确定列的最小值。\MAX:确定列的最大值。

DML 命令的 MCQ

1. 以下哪个 SQL 命令不是数据操纵语言命令?

  1. 创建
  2. 更新
  3. TRUNCATE
  4. 删除

答案:a

解释: Create 不是数据操纵语言,因为 create 用于创建新表,而不是操纵任何数据。


2. 以下哪个术语描述了应用程序用于从数据库管理系统请求数据的语言?

  1. 查询语言
  2. DDL
  3. DML
  4. 以上全部

答案:a

解释: 数据操纵语言 (DML) 用于管理数据库中的数据。DML 命令不会自动提交。这表明使用 DML 命令对数据库进行的修改是可逆的。


3. SQL 中哪个命令用于向表中添加更多条目?

  1. 插入
  2. 添加行
  3. 修改表
  4. Append

答案:c

解释: Alter Table 可以修改表的结构。


4. 以下哪项不描述 SQL 语句类型?

  1. 数据通信语言 (DCL)
  2. 数据定义语言 (DDL)
  3. 数据控制语言 (DCL)
  4. 数据操纵语言 (DML)

答案:a

解释: DCL 或数据通信语言不是 SQL 语句的类型。


5. 栈的另一个名称是 ________。

  1. 后进先出 (LIFO)
  2. 先进先出 (FIFO)
  3. HDFS
  4. 先来先服务 (FCFS)

答案:a

解释: 栈按照后进先出的原则操作。


下一个主题SQL CASE