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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。