数据修改修改
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”,说明数据修改成功。
注意:有关正则表达式的知识,读者可以参考相关的学习资料,不再赘述。
- 点赞
- 收藏
- 关注作者
评论(0)