描述
現有一張試卷信息表examination_info,表結構如下圖所示:
Filed | Type | Null | Key | Extra | Default | Comment |
id | int(11) | NO | PRI | auto_increment | (NULL) | 自增ID |
exam_id | int(11) | NO | UNI | (NULL) | 試卷ID | |
tag | char(32) | YES | (NULL) | 類別標簽 | ||
difficulty | char(8) | YES | (NULL) | 難度 | ||
duration | int(11) | NO | (NULL) | 時長 | ||
release_time | datetime | YES | (NULL) | 發布時間 |
請把examination_info表中tag為PYTHON的tag字段全部修改為Python。
后臺會通過執行'SELECT exam_id,tag,difficulty,duration,release_time FROM examination_info;'語句來對比結果。
UPDATE examination_info
SET tag='Python'
WHERE tag='PYTHON';
SQL?UPDATE
?語句?
作用:修改表中已存在的記錄。
基本語法:
UPDATE 表名
SET 列1=新值1, 列2=新值2, ...
[WHERE 條件];
關鍵點:
WHERE
是必須的(除非想改全表):- 它指定哪些行需要更新。
- 漏寫?
WHERE
?會更新所有行!(危險!) - 執行前,先用?
SELECT
?驗證?WHERE
?條件。
示例:
UPDATE examination_info SET tag='Python' WHERE tag='PYTHON'; -- 只改 tag 是 'PYTHON' 的行
- 目的:將標簽從全大寫?
'PYTHON'
?修正為?'Python'
。 - 安全:
WHERE
?精準定位目標行,避免誤改。
- 目的:將標簽從全大寫?
可以更新多列:
UPDATE examination_info SET level='medium', duration=75 WHERE exam_id=9003;
可以使用表達式:
UPDATE exam_record SET score = score + 5 -- 分數加5分 WHERE score < 80;
與
REPLACE INTO
的區別:UPDATE
:直接修改現有行,主鍵不變。REPLACE INTO
:沖突時先刪后插,主鍵會變。
一句話總結:
用
UPDATE ... SET ... WHERE ...
安全地修改數據,WHERE
條件是生命線。