1
数据库原理与应用技术
1.6.4.2 5.4.2 修改数据
5.4.2 修改数据

修改数据的一般语句格式为

UPDATE <表名>

SET <列名>=<表达式>[,<列名>=<表达式>]…

[WHERE <条件>]

其功能为:修改指定表中满足WHERE子句条件的元组。UPDATE给出要修改的表名。SET关键字后给出表中一些要修改的列及相应的表达式,每个表达式的值就是对应列被修改的新值。注意表达式的数据类型要与等号左边的列的数据类型相匹配。WHERE子句中的逻辑表达式给出修改记录的条件,若省略该子句,则应修改表中所有的记录。

1. 用WHERE子句修改元组的值

【例5-54】给例5-1的student表中的所有学生的年龄加一岁,写出相关语句。

解:UPDATE student

SET age=age+1

该语句省略了WHERE子句,就可将该表中所有学生的年龄都加一岁。

若只修改student表中某一学生“张春明”的年龄,则语句更改为:

UPDATE student

SET age=age+1

WHERE sname='张春明'

若修改student表中所有男生的年龄,则语句为:

UPDATE student

SET age=age+1

WHERE sex='男'

从以上例子可以看出,修改的范围都是由WHERE子句确定的。

2. 用子查询修改数据

【例5-55】将enroll这个表中选修了数据库这门课的学生的成绩修改为60分,写出相关语句。

解:UPDATE enroll

SET grade=60

WHERE cno IN

(SELECT cno FROM course

WHERE cname='数据库')

【例5-56】学生“张春明”在c1号课程的考试中作弊,将其成绩修改为零分,写出相关语句。

解:UPDATE enroll

SET grade=0

WHERE cno='c1' AND sno=

(SELECT sno FROM student WHERE sname='张春明')

关系数据库管理系统在执行修改语句时会检查修改操作是否破坏表上已定义的完整性规则,包括实体完整性、主码不允许修改、用户定义的完整性(NOT NULL约束、UNIQUE约束、值域约束)。