MySQL DELETE 语句

使用 DELETE FROM 命令来删除 MySQL 数据表中的记录

使用 DELETE 子句从数据表中读取数据,语法如下:

DELETE FROM table_name
WHERE condition;

参数说明:

  • table_name 是你要删除数据的表的名称
  • WHERE condition 是一个可选的子句,用于指定删除的行。如果省略 WHERE 子句,将删除表中的所有行

更多说明:

  • 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除
  • 你可以在 WHERE 子句中指定任何条件
  • 您可以在单个表中一次性删除记录

以下示例在之前创建的RoboMaster数据库下进行操作

当前数据库数据

mysql> SELECT * FROM Username;
+------+------------+-----------+
| id   | Username   | Password  |
+------+------------+-----------+
|    1 | steins_xin | 123456    |
|    2 | xin        | 123456789 |
+------+------------+-----------+
2 rows in set (0.01 sec)
  1. 删除符合条件的行:
DELETE FROM username WHERE id = 1;

结果:

mysql> DELETE FROM username WHERE id = 1;
Query OK, 1 row affected (0.01 sec)

mysql>  SELECT * FROM Username;
+------+----------+-----------+
| id   | Username | Password  |
+------+----------+-----------+
|    2 | xin      | 123456789 |
+------+----------+-----------+
1 row in set (0.00 sec)
  1. 删除所有行:
DELETE FROM username;

结果:

mysql> DELETE FROM username;
Query OK, 1 row affected (0.01 sec)

mysql>  SELECT * FROM Username;
Empty set (0.00 sec)
  1. 使用子查询删除符合条件的行:

注意:当你尝试在一个 DELETE 语句中从一个子查询去删除一个数据,而这个目标表也被包含在子查询中时。MySQL不允许这种自引用的删除

所以需要从其他的数据表中去查询数据并赋值,如下:

// 当前数据表
mysql> show tables;
+----------------------+
| Tables_in_robomaster |
+----------------------+
| test                 |
| username             |
+----------------------+
2 rows in set (0.00 sec)

// test数据表中数据
 mysql>  SELECT * FROM test;
+------+------------+--------------+
| id   | Username   | Password     |
+------+------------+--------------+
|    0 | steins_xin | 1234aaaaaa56 |
+------+------------+--------------+
1 row in set (0.00 sec)

将从 test 表中查询到的名字作为删除的条件

DELETE FROM username
WHERE Username IN (
    SELECT username
    FROM test
    WHERE id = 0
);

结果:

mysql> DELETE FROM username
    -> WHERE Username IN (
    ->     SELECT username
    ->     FROM test
    ->     WHERE id = 0
    -> );
Query OK, 1 row affected (0.01 sec)

mysql>  SELECT * FROM Username;
+------+----------+-----------+
| id   | Username | Password  |
+------+----------+-----------+
|    2 | xin      | 123456789 |
+------+----------+-----------+
1 row in set (0.00 sec)

results matching ""

    No results matching ""