数据修改修改

举报
xcc-2022 发表于 2022/07/24 11:14:28 2022/07/24
【摘要】 12.2 数据更新MySQL支持对数据表中的数据进行更新操作,使用UPDATE语句来更新数据表中的数据记录。可以更新数据表中的所有记录,也可以指定更新条件来更新数据表中的特定记录。更新数据的语法格式如下:UPDATE table_nameSET column1=value1, column2=value2, … , column=valuen[WHERE condition]语法格式说明如下...

12.2 数据更新

MySQL支持对数据表中的数据进行更新操作,使用UPDATE语句来更新数据表中的数据记录。可以更新数据表中的所有记录,也可以指定更新条件来更新数据表中的特定记录。

更新数据的语法格式如下:


UPDATE table_name
SET column1=value1, column2=value2, … , column=valuen
[WHERE condition]

语法格式说明如下:

·table_name:需要更新数据的表名称。

·column1,column2,…,columnn:需要更新的字段名称。

·value1,value2,…,valuen:字段的更新值。

·condition:更新的记录需要满足的条件限制。

其中,WHERE条件语句可以省略,当省略WHERE条件语句时,更新数据表中的全部数据。


12.2.1 更新数据表中的所有记录

更新数据表中的所有记录,只需要将UPDATE语句的WHERE条件省略即可。

例如,将t_goods数据表中的t_upper_time字段统一更新为“2020-12-12 00:00:00”。


mysql> UPDATE t_goods SET t_upper_time = '2020-12-12 00:00:00';
Query OK, 12 rows affected (0.11 sec)
Rows matched: 12  Changed: 12  Warnings: 0

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-12-12 00:00:00 |
|  2 |             1 | 女装/女士精品   | 连衣裙     |   79.90 |    2500 | 2020-12-12 00:00:00 |
|  3 |             1 | 女装/女士精品   | 卫衣       |   79.90 |    1500 | 2020-12-12 00:00:00 |
|  4 |             1 | 女装/女士精品   | 牛仔裤     |    0.00 |       0 | 2020-12-12 00:00:00 |
|  5 |             1 | 女装/女士精品   | 百褶裙     |   29.90 |     500 | 2020-12-12 00:00:00 |
|  6 |             1 | 女装/女士精品   | 呢绒外套   |  399.90 |    1200 | 2020-12-12 00:00:00 |
|  7 |             2 | 户外运动        | 自行车     |  399.90 |    1000 | 2020-12-12 00:00:00 |
|  8 |             2 | 户外运动        | 山地自行车 | 1399.90 |    2500 | 2020-12-12 00:00:00 |
|  9 |             2 | 户外运动        | 登山杖     |   59.90 |    1500 | 2020-12-12 00:00:00 |
| 10 |             2 | 户外运动        | 骑行装备   |  399.90 |    3500 | 2020-12-12 00:00:00 |
| 11 |             2 | 户外运动        | 运动外套   |  799.90 |     500 | 2020-12-12 00:00:00 |
| 12 |             2 | 户外运动        | 滑板       |  499.90 |    1200 | 2020-12-12 00:00:00 |
+----+---------------+-----------------+------------+---------+---------+---------------------+
12 rows in set (0.00 sec)

t_goods数据表中的t_upper_time字段的数据被统一修改为“2020-12-12 00:00:00”,说明数据更新成功。


12.2.2 更新表中特定的数据行

MySQL支持更新表中特定的数据行,此时,需要添加WHERE条件对更新的数据记录进行限制。

例如,将t_goods数据表中id为2的数据记录的商品名称修改为“牛油果绿连衣裙”。首先,查看t_goods数据表中id为2的数据。


mysql> SELECT * FROM t_goods WHERE id = 2;
+----+---------------+---------------------+-----------+---------+---------+-------------------+
| id | t_category_id | t_category          |   t_name   | t_price | t_stock |   t_upper_time    |
+----+---------------+---------------------+-----------+---------+---------+-------------------+
|  2 |             1 | 女装/女士精品       |   连衣裙   |  79.90  |   2500  |2020-12-12 00:00:00|
+----+---------------+---------------------+-----------+---------+---------+-------------------+
1 row in set (0.00 sec)

可以看到,修改数据之前id为2的记录的商品名称为“连衣裙”。执行更新数据的SQL语句。


mysql> UPDATE t_goods SET t_name = '牛油果绿连衣裙' WHERE id = 2;
Query OK, 1 row affected (0.38 sec)
Rows matched: 1  Changed: 1  Warnings: 0

SQL语句执行成功,再次查看t_goods数据表中id为2的数据记录。


mysql> SELECT * FROM t_goods WHERE id = 2;                       
+----+---------------+---------------+-----------------+---------+---------+-------------------+
| id | t_category_id |   t_category   | t_name          | t_price | t_stock |   t_upper_time    |
+----+---------------+---------------+-----------------+---------+---------+-------------------+
|  2 |             1 | 女装/女士精品 | 牛油果绿连衣裙  |   79.90 |2500     |2020-12-12 00:00:00|
+----+---------------+-------- ------+-----------------+---------+---------+-------------------+
1 row in set (0.00 sec)

数据已经被修改为“牛油果绿连衣裙”,说明数据修改成功。


12.2.3 更新某个范围内的数据

MySQL支持更新某个范围内的数据,可以通过BETWEEN…AND语句或者“>”“>=”“<”“<=”“<>”“!=”等运算符,或者LIKE、IN、NOT IN等语句实现。

1.使用BETWEEN…AND语句更新数据

例如,将t_goods数据表中id为1~6的数据记录的t_upper_time字段的值更新为“2020-11-11 00:00:00”。


mysql> UPDATE t_goods SET t_upper_time = '2020-11-11 00:00:00' WHERE id BETWEEN 1 AND 6;
Query OK, 6 rows affected (0.00 sec)
Rows matched: 6  Changed: 6  Warnings: 0

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-11-11 00:00:00|
|  3 |             1 | 女装/女士精品 | 卫衣            |   79.90 |   1500  | 2020-11-11 00:00:00|
|  4 |             1 | 女装/女士精品 | 牛仔裤         |    0.00 |      0  | 2020-11-11 00:00:00|
|  5 |             1 | 女装/女士精品 | 百褶裙         |   29.90 |    500  | 2020-11-11 00:00:00|
|  6 |             1 | 女装/女士精品 | 呢绒外套       |  399.90 |   1200  | 2020-11-11 00:00:00|
|  7 |             2 | 户外运动      | 自行车         |  399.90 |   1000  | 2020-12-12 00:00:00|
|  8 |             2 | 户外运动      | 山地自行车      | 1399.90 |   2500  | 2020-12-12 00:00:00|
|  9 |             2 | 户外运动      | 登山杖         |   59.90 |   1500  | 2020-12-12 00:00:00|
| 10 |             2 | 户外运动      | 骑行装备       |  399.90 |   3500  | 2020-12-12 00:00:00|
| 11 |             2 | 户外运动      | 运动外套       |  799.90 |    500  | 2020-12-12 00:00:00|
| 12 |             2 | 户外运动      | 滑板           |  499.90 |   1200  | 2020-12-12 00:00:00|
+----+---------------+---------------+----------------+---------+---------+--------------------+
12 rows in set (0.01 sec)

id为1~6的数据记录的t_upper_time字段的数据被成功修改为“2020-11-11 00:00:00”。

2.使用运算符更新数据

例如,将商品价格大于或者等于399.90元,小于或者等于799.90元的商品的上架时间修改为“2020-06-18 00:00:00”。


mysql> UPDATE t_goods SET 
    -> t_upper_time = '2020-06-18 00:00:00'
    -> WHERE 
    -> t_price >= 399.90 AND t_price <= 799.90;
Query OK, 5 rows affected (0.00 sec)
Rows matched: 5  Changed: 5  Warnings: 0

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 0:00:00 |
|  2 |             1 | 女装/女士精品 | 牛油果绿连衣裙 |   79.90 |    2500 | 2020-11-11 00:00:00 |
|  3 |             1 | 女装/女士精品 | 卫衣           |   79.90 |    1500 | 2020-11-11 00:00:00 |
|  4 |             1 | 女装/女士精品 | 牛仔裤         |    0.00 |       0 | 2020-11-11 00:00:00 |
|  5 |             1 | 女装/女士精品 | 百褶裙         |   29.90 |     500 | 2020-11-11 00:00:00 |
|  6 |             1 | 女装/女士精品 | 呢绒外套       |  399.90 |    1200 | 2020-06-18 00:00:00 |
|  7 |             2 | 户外运动      | 自行车         |  399.90 |    1000 | 2020-06-18 00:00:00 |
|  8 |             2 | 户外运动      | 山地自行车     | 1399.90 |    2500 | 2020-12-12 00:00:00 |
|  9 |             2 | 户外运动      | 登山杖         |   59.90 |    1500 | 2020-12-12 00:00:00 |
| 10 |             2 | 户外运动      | 骑行装备       |  399.90 |    3500 | 2020-06-18 00:00:00 |
| 11 |             2 | 户外运动      | 运动外套       |  799.90 |     500 | 2020-06-18 00:00:00 |
| 12 |             2 | 户外运动      | 滑板           |  499.90 |    1200 | 2020-06-18 00:00:00 |
+----+---------------+---------------+----------------+---------+---------+--------------------+
12 rows in set (0.00 sec)

价格在399.90~799.90的商品的上架时间被修改为“2020-06-18 00:00:00”,说明数据修改成功。

注意:在更新数据时,其他运算符的使用方式相同,不再赘述。

3.使用LIKE语句更新数据

例如,将t_goods数据表中商品名称包含“牛”字的商品上架时间修改为“2020-03-08 00:00:00”。


mysql> UPDATE t_goods SET
    -> t_upper_time = '2020-03-08 00:00:00'
    -> WHERE t_name LIKE '%牛%';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

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-03-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-11-11 00:00:00 |
|  6 |             1 | 女装/女士精品 | 呢绒外套      |  399.90 |    1200 | 2020-06-18 00:00:00 |
|  7 |             2 | 户外运动      | 自行车        |  399.90 |    1000 | 2020-06-18 00:00:00 |
|  8 |             2 | 户外运动      | 山地自行车    | 1399.90 |    2500 | 2020-12-12 00:00:00 |
|  9 |             2 | 户外运动      | 登山杖        |   59.90 |    1500 | 2020-12-12 00:00:00 |
| 10 |             2 | 户外运动      | 骑行装备      |  399.90 |    3500 | 2020-06-18 00:00:00 |
| 11 |             2 | 户外运动      | 运动外套      |  799.90 |     500 | 2020-06-18 00:00:00 |
| 12 |             2 | 户外运动      | 滑板          |  499.90 |    1200 | 2020-06-18 00:00:00 |
+----+---------------+---------------+---------------+---------+---------+---------------------+
12 rows in set (0.00 sec)

商品名称为“牛油果绿连衣裙”和“牛仔裤”的上架时间被修改为“2020-03-08 00:00:00”,说明数据修改成功。

4.使用IN语句更新数据

例如,将t_goods数据表中id为7~12的商品数据的上架时间更新为“2020-10-01 00:00:00”。


mysql> UPDATE t_goods SET
    -> t_upper_time = '2020-10-01 00:00:00'
    -> WHERE id IN (7, 8, 9, 10, 11, 12);  
Query OK, 6 rows affected (0.00 sec)
Rows matched: 6  Changed: 6  Warnings: 0

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-03-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-11-11 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 |
| 12 |             2 | 户外运动     | 滑板           |  499.90 |    1200 | 2020-10-01 00:00:00 |
+----+---------------+--------------+---------------+---------+---------+---------------------+
12 rows in set (0.00 sec)

t_goods数据表中id为7~12的商品数据的上架时间被修改为“2020-10-01 00:00:00”,说明数据修改成功。

注意:NOT IN语句更新数据的使用方式与IN语句相同,只不过IN语句是更新某个字段的值包含在值列表中的数据,NOT IN语句是更新某个字段的值不包含在值列表中的数据,不再赘述。


12.2.4 更新符合正则表达式的数据

MySQL中匹配正则表达式需要使用关键字REGEXP,在REGEXP关键字后面跟上正则表达式的规则即可。

例如,将t_goods数据表中商品名称以“裙”结尾的商品记录的上架时间,修改为“2020-08-08 00:00:00”。


mysql> UPDATE t_goods SET
    -> t_upper_time = '2020-08-08 00:00:00'
    -> WHERE t_name REGEXP '裙$';
Query OK, 2 rows affected (0.21 sec)
Rows matched: 2  Changed: 2  Warnings: 0

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 |
| 12 |             2 | 户外运动     | 滑板           |  499.90 |    1200 | 2020-10-01 00:00:00 |
+----+---------------+--------------+---------------+---------+---------+---------------------+
12 rows in set (0.00 sec)

商品名称为“牛油果绿连衣裙”和“百褶裙”的数据记录的上架时间被修改为“2020-08-08 00:00:00”,说明数据修改成功。

注意:有关正则表达式的知识,读者可以参考相关的学习资料,不再赘述。

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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