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)
- 删除符合条件的行:
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)
- 删除所有行:
DELETE FROM username;
结果:
mysql> DELETE FROM username;
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM Username;
Empty set (0.00 sec)
- 使用子查询删除符合条件的行:
注意:当你尝试在一个 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)