Mysql 简明教程

MySQL - Delete Query

MySQL DELETE Statement

如果我们希望从任何 MySQL 表中删除记录,那么我们可以使用 SQL 命令 DELETE FROM 。此语句是 SQL 中数据操作语言的一部分,因为它与 MySQL 表而不是结构中的数据进行交互。

DELETE 语句可用于删除单个表中的多行,以及跨多个表的记录。然而,为了筛选要删除的记录,我们可以将 WHERE 子句与 DELETE 语句一起使用。

我们可以在 mysql> 提示符以及任何脚本(如 PHP、Node.js、Java 和 Python)中使用此命令。

Syntax

以下是 DELETE 命令的基本 SQL 语法,可从 MySQL 表中删除数据:

DELETE FROM table_name [WHERE Clause]
  1. 如果未指定 WHERE 子句,则将从给定的 MySQL 表中删除所有记录。

  2. 我们可以使用 WHERE 子句指定任何条件。

  3. 我们可以一次删除一张表中的记录。

当你想删除表中的选定行时,WHERE 子句非常有用。

Deleting Data from a MySQL Table

我们使用 MySQL DELETE 查询从数据库表中删除记录。然而,我们可以一次删除单行、多行,甚至在一个查询中从表中删除所有记录。让我们在本文档中一一用适当的示例讨论它们。

Example

首先,让我们使用以下查询创建一个名为 CUSTOMERS 的表:

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR(20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

以下查询在上述创建的表中插入 7 条记录 −

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(2, 'Khilan', 25, 'Delhi', 1500.00 ),
(3, 'Kaushik', 23, 'Kota', 2000.00 ),
(4, 'Chaitali', 25, 'Mumbai', 6500.00 ),
(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
(6, 'Komal', 22, 'Hyderabad', 4500.00 ),
(7, 'Muffy', 24, 'Indore', 10000.00 );

执行以下 SELECT 语句以检索 CUSTOMERS 表中存在的所有记录:

Select * From CUSTOMERS;

以下为 CUSTOMERS 表 −

现在,让我们使用 DELETE 语句从 CUSTOMERS 表中删除 single record (ID = 1),如下所示:

DELETE FROM CUSTOMERS WHERE ID = 1;

Output

执行给定的查询后,输出如下:

Query OK, 1 row affected (0.00 sec)

Verification

执行以下查询以验证上述记录是否已被删除:

Select * From CUSTOMERS;

正如我们在输出中看到的,ID=1 的行已被删除:

Deleting Multiple Rows

我们还可以使用 DELETE 语句删除多行。为此,我们只需要在 WHERE 子句中指定多个条件,所有待删除的记录都满足这些条件。

Example

在这里,我们正在从以前创建的 CUSTOMERS 表中删除 ID 为 2 和 3 的记录:

DELETE FROM CUSTOMERS WHERE ID = 2 OR ID = 3;

Output

以上程序的输出如下所示:

Query OK, 2 rows affected (0.01 sec)

Verification

执行以下查询以验证上述记录是否已被删除:

Select * From CUSTOMERS;

正如我们在输出中看到的,具有 ID 值 2 和 3 的行已删除:

Deleting All Rows

如果我们想从 MySQL 表中删除所有记录,只需执行 DELETE 语句而不使用 WHERE 子句。以下是语法:

DELETE FROM table_name;

Example

以下查询将删除 CUSTOMERS 表中的所有记录:

DELETE FROM CUSTOMERS;

Output

执行给定的程序后,输出如下所示:

Query OK, 4 rows affected (0.01 sec)

Verification

执行以下查询以验证是否已删除 CUSTOMERS 表中的所有记录:

Select * From CUSTOMERS;

正如我们在下面看到的输出中,已返回一个空集,即所有记录都已删除。

Empty set (0.00 sec)

Delete Query in MySQL Using a Client Program

除了使用 MySQL 查询删除数据库表中的记录外,我们还可以使用客户端程序来执行 DELETE 操作。

Syntax

以下是此操作在各种编程语言中的语法 −

Example

以下是这些程序 −