SQL157 更新记录(一)
描述
现有一张试卷信息表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
条件是生命线。