MySQL-从表中删除

时间:2020-02-23 14:41:00  来源:igfitidea点击:

在本教程中,我们将学习从MySQL中的表中删除数据。

我们使用DELETE FROM table_name从表中删除数据。

删除语法

DELETE FROM table_name
WHERE condition;

使用主键删除单行

在以下示例中,我们将删除具有注释ID 10的注释。

删除之前:

mysql> SELECT * FROM comments;
+-----------+------------+---------------------+---------------------+---------------------+
| commentid | employeeid | commentbody         | lastmodified        | created             |
+-----------+------------+---------------------+---------------------+---------------------+
|         1 | e03        | Awesome             | 2016-01-01 02:03:04 | 2016-01-01 02:03:04 |
|         2 | e03        | Hello World         | 2016-01-02 01:02:03 | 2016-01-02 01:02:03 |
|         3 | e01        | Happy               | 2016-01-02 01:04:03 | 2016-01-02 01:04:03 |
|         4 | e04        | This is my comment. | 2016-01-01 02:03:04 | 2016-01-01 02:03:04 |
|         5 | e01        | Keep coding....     | 2016-04-04 03:02:01 | 2016-05-04 03:02:01 |
|         6 | e04        | Hello               | 2016-01-01 04:03:04 | 2016-01-01 04:03:04 |
|         7 | e01        | ABC...              | 2016-04-04 04:04:01 | 2016-05-04 04:02:01 |
|         8 | e05        | Andriod             | 2016-01-01 04:03:04 | 2016-01-01 04:03:04 |
|         9 | e03        | Apple               | 2016-04-04 04:04:01 | 2016-05-04 04:02:01 |
|        10 | e01        | Super               | 2016-01-01 04:03:04 | 2016-01-01 04:03:04 |
|        11 | e02        | Awesome             | 2016-04-04 04:04:01 | 2016-05-04 04:02:01 |
+-----------+------------+---------------------+---------------------+---------------------+
11 rows in set (0.00 sec)

删除查询:

mysql> DELETE FROM comments WHERE commentid = 10;
Query OK, 1 row affected (0.00 sec)

删除后:

mysql> SELECT * FROM comments;
+-----------+------------+---------------------+---------------------+---------------------+
| commentid | employeeid | commentbody         | lastmodified        | created             |
+-----------+------------+---------------------+---------------------+---------------------+
|         1 | e03        | Awesome             | 2016-01-01 02:03:04 | 2016-01-01 02:03:04 |
|         2 | e03        | Hello World         | 2016-01-02 01:02:03 | 2016-01-02 01:02:03 |
|         3 | e01        | Happy               | 2016-01-02 01:04:03 | 2016-01-02 01:04:03 |
|         4 | e04        | This is my comment. | 2016-01-01 02:03:04 | 2016-01-01 02:03:04 |
|         5 | e01        | Keep coding....     | 2016-04-04 03:02:01 | 2016-05-04 03:02:01 |
|         6 | e04        | Hello               | 2016-01-01 04:03:04 | 2016-01-01 04:03:04 |
|         7 | e01        | ABC...              | 2016-04-04 04:04:01 | 2016-05-04 04:02:01 |
|         8 | e05        | Andriod             | 2016-01-01 04:03:04 | 2016-01-01 04:03:04 |
|         9 | e03        | Apple               | 2016-04-04 04:04:01 | 2016-05-04 04:02:01 |
|        11 | e02        | Awesome             | 2016-04-04 04:04:01 | 2016-05-04 04:02:01 |
+-----------+------------+---------------------+---------------------+---------------------+
10 rows in set (0.00 sec)

使用WHERE子句删除多行

在下面的示例中,我们将删除员工编号'e03'的所有注释。

mysql> DELETE FROM comments WHERE employeeid = 'e03';
Query OK, 3 rows affected (0.00 sec)

删除后:

mysql> SELECT * FROM comments;
+-----------+------------+---------------------+---------------------+---------------------+
| commentid | employeeid | commentbody         | lastmodified        | created             |
+-----------+------------+---------------------+---------------------+---------------------+
|         3 | e01        | Happy               | 2016-01-02 01:04:03 | 2016-01-02 01:04:03 |
|         4 | e04        | This is my comment. | 2016-01-01 02:03:04 | 2016-01-01 02:03:04 |
|         5 | e01        | Keep coding....     | 2016-04-04 03:02:01 | 2016-05-04 03:02:01 |
|         6 | e04        | Hello               | 2016-01-01 04:03:04 | 2016-01-01 04:03:04 |
|         7 | e01        | ABC...              | 2016-04-04 04:04:01 | 2016-05-04 04:02:01 |
|         8 | e05        | Andriod             | 2016-01-01 04:03:04 | 2016-01-01 04:03:04 |
|        11 | e02        | Awesome             | 2016-04-04 04:04:01 | 2016-05-04 04:02:01 |
+-----------+------------+---------------------+---------------------+---------------------+
7 rows in set (0.00 sec)

不带WHERE子句的删除

在下面的示例中,我们正在运行没有任何WHERE子句的DELETE查询,因此,它将导致所有行的删除。

如果没有WHERE条件,请勿运行DELETE查询。
您最终将删除不需要的内容。

mysql> DELETE FROM comments;
Query OK, 7 rows affected (0.00 sec)

删除后:

mysql> SELECT * FROM comments;
Empty set (0.00 sec)