数据修改删除
12.3 数据删除
MySQL中使用DELETE语句删除数据。使用DELETE语句删除数据时,可以使用WHERE子句增加删除数据的条件限制。语法格式如下:
DELETE FROM table_name [WHERE condition]
语法格式说明如下:
·table_name:需要删除数据的表名称。
·condition:WHERE子句的条件。
其中,WHERE子句可以省略,当省略WHERE子句时,将删除数据表中的所有数据。
12.3.1 删除数据表中特定的数据
MySQL支持删除数据表中特定的某一条数据记录,只需要在DELETE语句中使用WHERE子句限制删除某条特定的数据记录即可。
例如,删除t_goods数据表中id为12的数据记录。
mysql> DELETE FROM t_goods WHERE id = 12;
Query OK, 1 row affected (0.00 sec)
SQL语句执行成功,查看t_goods数据表中的数据。
mysql> SELECT * FROM t_goods;
+----+---------------+--------------+---------------+---------+---------+---------------------+
| id | t_category_id | t_category | t_name | t_price | t_stock | t_upper_time |
+----+---------------+--------------+---------------+---------+---------+---------------------+
| 1 | 1 | 女装/女士精品| T恤 | 39.90 | 1000 | 2020-11-11 00:00:00 |
| 2 | 1 | 女装/女士精品| 牛油果绿连衣裙 | 79.90 | 2500 | 2020-08-08 00:00:00 |
| 3 | 1 | 女装/女士精品| 卫衣 | 79.90 | 1500 | 2020-11-11 00:00:00 |
| 4 | 1 | 女装/女士精品| 牛仔裤 | 0.00 | 0 | 2020-03-08 00:00:00 |
| 5 | 1 | 女装/女士精品| 百褶裙 | 29.90 | 500 | 2020-08-08 00:00:00 |
| 6 | 1 | 女装/女士精品| 呢绒外套 | 399.90 | 1200 | 2020-06-18 00:00:00 |
| 7 | 2 | 户外运动 | 自行车 | 399.90 | 1000 | 2020-10-01 00:00:00 |
| 8 | 2 | 户外运动 | 山地自行车 | 1399.90 | 2500 | 2020-10-01 00:00:00 |
| 9 | 2 | 户外运动 | 登山杖 | 59.90 | 1500 | 2020-10-01 00:00:00 |
| 10 | 2 | 户外运动 | 骑行装备 | 399.90 | 3500 | 2020-10-01 00:00:00 |
| 11 | 2 | 户外运动 | 运动外套 | 799.90 | 500 | 2020-10-01 00:00:00 |
+----+---------------+--------------+---------------+---------+---------+---------------------+
11 rows in set (0.00 sec)
t_goods数据表中已经不存在id为12的数据记录,说明数据删除成功。
12.3.2 删除某个范围内的数据
MySQL支持删除某个范围内的数据,同样可以通过BETWEEN…AND语句或者“>”“>=”“<”“<=”“<>”“!=”等运算符,或者LIKE、IN、NOT IN等语句实现。
1.使用BETWEEN…AND语句删除数据
例如,删除t_goods数据表中id范围在10~11的数据记录。
mysql> DELETE FROM t_goods WHERE id BETWEEN 10 AND 11;
Query OK, 2 rows affected (0.00 sec)
SQL语句执行成功,查看t_goods数据表中的数据。
mysql> SELECT * FROM t_goods;
+----+---------------+--------------+---------------+---------+---------+---------------------+
| id | t_category_id | t_category | t_name | t_price | t_stock | t_upper_time |
+----+---------------+--------------+---------------+---------+---------+---------------------+
| 1 | 1 | 女装/女士精品| T恤 | 39.90 | 1000 | 2020-11-11 00:00:00 |
| 2 | 1 | 女装/女士精品| 牛油果绿连衣裙 | 79.90 | 2500 | 2020-08-08 00:00:00 |
| 3 | 1 | 女装/女士精品| 卫衣 | 79.90 | 1500 | 2020-11-11 00:00:00 |
| 4 | 1 | 女装/女士精品| 牛仔裤 | 0.00 | 0 | 2020-03-08 00:00:00 |
| 5 | 1 | 女装/女士精品| 百褶裙 | 29.90 | 500 | 2020-08-08 00:00:00 |
| 6 | 1 | 女装/女士精品| 呢绒外套 | 399.90 | 1200 | 2020-06-18 00:00:00 |
| 7 | 2 | 户外运动 | 自行车 | 399.90 | 1000 | 2020-10-01 00:00:00 |
| 8 | 2 | 户外运动 | 山地自行车 | 1399.90 | 2500 | 2020-10-01 00:00:00 |
| 9 | 2 | 户外运动 | 登山杖 | 59.90 | 1500 | 2020-10-01 00:00:00 |
+----+---------------+--------------+---------------+---------+---------+---------------------+
9 rows in set (0.00 sec)
查询结果显示t_goods数据表中已经不存在id为10和11的数据记录,说明数据删除成功。
2.使用运算符删除数据
例如,删除t_goods数据表中id范围在8~9的数据记录。
mysql> DELETE FROM t_goods WHERE id >= 8 AND id <= 9;
Query OK, 2 rows affected (0.00 sec)
SQL语句执行成功,再次查看t_goods数据表中的数据。
mysql> SELECT * FROM t_goods;
+----+---------------+--------------+---------------+---------+---------+---------------------+
| id | t_category_id | t_category | t_name | t_price | t_stock | t_upper_time |
+----+---------------+--------------+---------------+---------+---------+---------------------+
| 1 | 1 | 女装/女士精品| T恤 | 39.90 | 1000 | 2020-11-11 00:00:00 |
| 2 | 1 | 女装/女士精品| 牛油果绿连衣裙 | 79.90 | 2500 | 2020-08-08 00:00:00 |
| 3 | 1 | 女装/女士精品| 卫衣 | 79.90 | 1500 | 2020-11-11 00:00:00 |
| 4 | 1 | 女装/女士精品| 牛仔裤 | 0.00 | 0 | 2020-03-08 00:00:00 |
| 5 | 1 | 女装/女士精品| 百褶裙 | 29.90 | 500 | 2020-08-08 00:00:00 |
| 6 | 1 | 女装/女士精品| 呢绒外套 | 399.90 | 1200 | 2020-06-18 00:00:00 |
| 7 | 2 | 户外运动 | 自行车 | 399.90 | 1000 | 2020-10-01 00:00:00 |
+----+---------------+--------------+---------------+---------+---------+---------------------+
7 rows in set (0.00 sec)
可以看到,此时t_goods数据表中只剩下7条数据,已经不存在id为8和9的数据记录,说明数据删除成功。
注意:在删除数据时,其他运算符的使用方式相同,不再赘述。
3.使用LIKE语句删除数据
例如,删除t_goods数据表中名称包含“车”的数据记录。
mysql> DELETE FROM t_goods WHERE t_name LIKE '%车%';
Query OK, 1 row affected (0.09 sec)
SQL语句执行成功,查看t_goods数据表中的数据。
mysql> SELECT * FROM t_goods;
+----+---------------+--------------+---------------+---------+---------+---------------------+
| id | t_category_id | t_category | t_name | t_price | t_stock | t_upper_time |
+----+---------------+--------------+---------------+---------+---------+---------------------+
| 1 | 1 | 女装/女士精品| T恤 | 39.90 | 1000 | 2020-11-11 00:00:00 |
| 2 | 1 | 女装/女士精品| 牛油果绿连衣裙 | 79.90 | 2500 | 2020-08-08 00:00:00 |
| 3 | 1 | 女装/女士精品| 卫衣 | 79.90 | 1500 | 2020-11-11 00:00:00 |
| 4 | 1 | 女装/女士精品| 牛仔裤 | 0.00 | 0 | 2020-03-08 00:00:00 |
| 5 | 1 | 女装/女士精品| 百褶裙 | 29.90 | 500 | 2020-08-08 00:00:00 |
| 6 | 1 | 女装/女士精品| 呢绒外套 | 399.90 | 1200 | 2020-06-18 00:00:00 |
+----+---------------+--------------+---------------+---------+---------+---------------------+
6 rows in set (0.01 sec)
可以看到,名称为“自行车”的数据记录被成功删除。
4.使用IN语句删除数据
例如,删除t_goods数据表中id为1和6的数据。
mysql> DELETE FROM t_goods WHERE id IN (1, 6);
Query OK, 2 rows affected (0.00 sec)
SQL语句执行成功,查看t_goods表中的数据。
mysql> SELECT * FROM t_goods;
+----+---------------+--------------+---------------+---------+---------+---------------------+
| id | t_category_id | t_category | t_name | t_price | t_stock | t_upper_time |
+----+---------------+--------------+---------------+---------+---------+---------------------+
| 2 | 1 | 女装/女士精品| 牛油果绿连衣裙 | 79.90 | 2500 | 2020-08-08 00:00:00 |
| 3 | 1 | 女装/女士精品| 卫衣 | 79.90 | 1500 | 2020-11-11 00:00:00 |
| 4 | 1 | 女装/女士精品| 牛仔裤 | 0.00 | 0 | 2020-03-08 00:00:00 |
| 5 | 1 | 女装/女士精品| 百褶裙 | 29.90 | 500 | 2020-08-08 00:00:00 |
+----+---------------+--------------+---------------+---------+---------+---------------------+
4 rows in set (0.00 sec)
t_goods数据表中id为1和6的数据已经被成功删除。
注意:NOT IN语句删除数据的使用方式与IN语句相同,只不过IN语句是删除某个字段的值包含在值列表中的数据,NOT IN语句是删除某个字段的值不包含在值列表中的数据,不再赘述。
12.3.3 删除符合正则表达式的数据
MySQL支持在DELETE语句中使用WHERE子句结合正则表达式来限制删除条件。例如,删除t_goods数据表中名称以“牛”开头的数据记录。
mysql> DELETE FROM t_goods WHERE t_name REGEXP '^牛';
Query OK, 2 rows affected (0.12 sec)
SQL语句执行成功,再次查看t_goods数据表中的数据。
mysql> SELECT * FROM t_goods;
+----+---------------+--------------+---------------+---------+---------+---------------------+
| id | t_category_id | t_category | t_name | t_price | t_stock | t_upper_time |
+----+---------------+--------------+---------------+---------+---------+---------------------+
| 3 | 1 | 女装/女士精品| 卫衣 | 79.90 | 1500 | 2020-11-11 00:00:00 |
| 5 | 1 | 女装/女士精品| 百褶裙 | 29.90 | 500 | 2020-08-08 00:00:00 |
+----+---------------+--------------+---------------+---------+---------+---------------------+
2 rows in set (0.00 sec)
t_goods数据表中名称为“牛油果绿连衣裙”和“牛仔裤”的数据记录已经被成功删除。
12.3.4 删除数据表中的所有数据
当需要删除MySQL数据表中的所有数据时,只需要省略DELETE语句中的WHERE子句即可。
例如,删除t_goods数据表中的所有数据。
mysql> DELETE FROM t_goods;
Query OK, 2 rows affected (0.00 sec)
SQL语句执行成功,查看t_goods数据表中的数据。
mysql> SELECT * FROM t_goods;
Empty set (0.00 sec)
此时t_goods数据表中的数据为空,说明成功删除了t_goods数据表中的所有数据。
- 点赞
- 收藏
- 关注作者
评论(0)