UPDATE
语句用于修改表中的现有记录。
警告
对于要更新其值的列,您需要 UPDATE
权限。
用法
UPDATE table_name
SET column1 = value1, column2 = value2 ...
WHERE condition;
例子
请考虑下表,了解一些学生是否持有驾驶执照:
student_id |
full_name |
年龄 |
has_license |
---|---|---|---|
1 |
天空镇 |
17 |
0 |
2 |
本·戴维斯 |
19 |
1 |
3 |
特拉维斯·苹果 |
18 |
0 |
4 |
亚瑟·大卫 |
16 |
0 |
5 |
本杰明镇 |
17 |
1 |
可以使用此处的代码创建上述示例表。
单列更新
要将 Sky Towner
的年龄更新为 18
,因为今天是他的生日:
UPDATE drivers_license
SET age = 18
WHERE student_id = 1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
这里的 WHERE
子句指定我们只想更新 Sky Towner
的年龄。
我们可以看到 Sky Towner
的年龄现在更新为 18
:
SELECT *
FROM drivers_license;
+------------+---------------+------+-------------+
| student_id | full_name | age | has_license |
+------------+---------------+------+-------------+
| 1 | Sky Towner | 18 | 0 |
| 2 | Ben Davis | 19 | 1 |
| 3 | Travis Apple | 18 | 0 |
| 4 | Arthur David | 16 | 0 |
| 5 | Benjamin Town | 17 | 1 |
+------------+---------------+------+-------------+
警告
每当您在表上执行更新时都要小心。如果我们忘记在上面的示例中添加 WHERE
子句,则表中所有学生的年龄将设置为 18
。
将所有学生的年龄设置为18
:
UPDATE drivers_license
SET age = 18;
SELECT *
FROM drivers_license;
+------------+---------------+------+-------------+
| student_id | full_name | age | has_license |
+------------+---------------+------+-------------+
| 1 | Sky Towner | 18 | 0 |
| 2 | Ben Davis | 18 | 1 |
| 3 | Travis Apple | 18 | 0 |
| 4 | Arthur David | 18 | 0 |
| 5 | Benjamin Town | 18 | 1 |
+------------+---------------+------+-------------+
多列更新
要更新 student_id=1
的 age
和 has_license
列值:
UPDATE drivers_license
SET age = 18, has_license = TRUE
WHERE student_id = 1;
SELECT *
FROM drivers_license;
+------------+---------------+------+-------------+
| student_id | full_name | age | has_license |
+------------+---------------+------+-------------+
| 1 | Sky Towner | 18 | 1 |
| 2 | Ben Davis | 19 | 1 |
| 3 | Travis Apple | 18 | 0 |
| 4 | Arthur David | 16 | 0 |
| 5 | Benjamin Town | 17 | 1 |
+------------+---------------+------+-------------+
如上所示,通过指定逗号分隔的 column=value
对来执行多列更新。
根据当前值更新
要通过将当前值增加 1
来更新学生 1 的 age
:
UPDATE drivers_license
SET age = age + 1WHERE student_id = 1;
SELECT *
FROM drivers_license;
+------------+---------------+------+-------------+
| student_id | full_name | age | has_license |
+------------+---------------+------+-------------+
| 1 | Sky Towner | 18 | 0 |
| 2 | Ben Davis | 19 | 1 |
| 3 | Travis Apple | 18 | 0 |
| 4 | Arthur David | 16 | 0 |
| 5 | Benjamin Town | 17 | 1 |
+------------+---------------+------+-------------+
请注意, Sky Towner
的 age
已从 17
增加到 18
1
。
相关用法
- MySQL UPPER方法用法及代码示例
- MySQL UPPER()用法及代码示例
- MySQL UCASE方法用法及代码示例
- MySQL UTC_DATE()用法及代码示例
- MySQL UNIX_TIMESTAMP()用法及代码示例
- MySQL UNION用法及代码示例
- MySQL UNHEX()用法及代码示例
- MySQL UNCOMPRESSED_LENGTH( )用法及代码示例
- MySQL UUID_SHORT()用法及代码示例
- MySQL UNIX_TIMESTAMP方法用法及代码示例
- MySQL UTC_DATE方法用法及代码示例
- MySQL UCASE()用法及代码示例
- MySQL USER( )用法及代码示例
- MySQL UTC_TIME()用法及代码示例
- MySQL UTC_TIME方法用法及代码示例
- MySQL UUID()用法及代码示例
- MySQL UNHEX方法用法及代码示例
- MySQL UTC_TIMESTAMP方法用法及代码示例
- MySQL UTC_TIMESTAMP()用法及代码示例
- MySQL UNCOMPRESS( )用法及代码示例
- MySQL ROUND()用法及代码示例
- MySQL REPEAT()用法及代码示例
- MySQL POWER()用法及代码示例
- MySQL LEAD() and LAG()用法及代码示例
- MySQL IS_IPV4()用法及代码示例
注:本文由纯净天空筛选整理自Arthur Yanagisawa大神的英文原创作品 MySQL | UPDATE。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。