数据修改删除

举报
xcc-2022 发表于 2022/07/26 10:40:34 2022/07/26
【摘要】 12.3 数据删除MySQL中使用DELETE语句删除数据。使用DELETE语句删除数据时,可以使用WHERE子句增加删除数据的条件限制。语法格式如下:DELETE FROM table_name [WHERE condition]语法格式说明如下:·table_name:需要删除数据的表名称。·condition:WHERE子句的条件。其中,WHERE子句可以省略,当省略WHERE子句时,...

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数据表中的所有数据。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。