【转】《与MySQL的零距离接触》第四章:操作数据表中的记录 (4-4:MySQL 单表更新记录UPDATE)

4-4:MySQL 单表更新记录UPDATE

一.  更新记录 

更新记录(单表更新)的语法结构:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET
col_name1={expr1 | DEFAULT} [,col_name2={expr2 | DEFAULT}]...
[WHERE where_condition]

expr1 | DEFAULT 是指表达式或者默认值

WHERE where_condition如果省略,则会更新所有记录:

mysql> UPDATE users set age=age+5;
Query OK, 8 rows affected (0.00 sec)
Rows matched: 8  Changed: 8  Warnings: 0

mysql> SELECT * FROM users;
+----+----------+----------------------------------+-----+------+
| id | username | password                         | age | sex  |
+----+----------+----------------------------------+-----+------+
|  1 | Tom      | 123                              |  30 |    1 |
|  2 | John     | 123                              |  30 |    1 |
|  3 | Tom      | 123                              |  30 |    1 |
|  4 | John     | 123                              |  29 |    1 |
|  5 | John     | 123                              |  15 |    1 |
|  6 | Tom      | 123                              |  30 |    1 |
|  7 | Rose     | 202cb962ac59075b964b07152d234b70 |  15 |    0 |
|  8 | BEn      | 456                              |  15 | NULL |
+----+----------+----------------------------------+-----+------+
8 rows in set (0.00 sec)

可以看到,8行受到影响,所有的age都在原先的基础上加了5。

二.    根据特定的条件更新记录

比如给所有偶数id用户年龄加10岁:

mysql> UPDATE users SET age = age + 10 WHERE id % 2 = 0;
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> SELECT * FROM users;
+----+----------+----------------------------------+-----+------+
| id | username | password                         | age | sex  |
+----+----------+----------------------------------+-----+------+
|  1 | Tom      | 123                              |  29 |    0 |
|  2 | John     | 123                              |  38 |    0 |
|  3 | Tom      | 123                              |  27 |    0 |
|  4 | John     | 123                              |  35 |    0 |
|  5 | John     | 123                              |  10 |    0 |
|  6 | Tom      | 123                              |  34 |    0 |
|  7 | Rose     | 202cb962ac59075b964b07152d234b70 |   8 |    0 |
|  8 | BEn      | 456                              |  17 |    0 |
+----+----------+----------------------------------+-----+------+
8 rows in set (0.00 sec)

可以看到id为2,4,6,8的记录被修改

你可能感兴趣的:(【转】《与MySQL的零距离接触》第四章:操作数据表中的记录 (4-4:MySQL 单表更新记录UPDATE))