更新现有数据
利用 UPDATE 命令可以修改表里的现有数据。这个命令不向表里添加新记录,也不删除记录,它只是修改现有的数据。它一般每次只更新数据库里的一个表,但可以同时更新表里的多个字段。
一、更改记录操作
语法:UPDATE 表名 SET 列名 = 新值
[ WHERE 更新条件 ];
叙述: WHERE 子句是判断语句,用来设定条件,限制只更新匹配的行。如果不带 WHERE 子句,则更新所有行数据。
注意事项: 1. 使用该命令可以对符合 WHERE 条件的所有记录进行修改;
2. 需要指明表名和要改变的字段值,这个字段的值由 SET 引导,用来告诉 SQL 要改变哪个字段,以及要将其改为何值;
3. 如果不加条件,那么将会是针对于表中的所有记录的修改。
例1:将 Students 表中的所有学生名称为 "Alex" 的改为 "Tom":
UPDATE Students SET Sname="Tom" WHERE Sname="Alex";
例2:更新数据行 Ssex:
UPDATE Students SET Ssex = 0;
注意到在这个例子里,所有记录的 Ssex 字段都被更新成0了。在使用没有 WHERE 子句的 UPDATE 语句时要特别小心,这时表里所有记录的相应字段都会被更新。大多数情况下,UPDATE 语句都需要使用 WHERE 子句 。
例3:将 Sc 表中的所有 '刺绣系' 改为 '家政系' :
UPDATE Sc
SET Sdept ='家政系'
WHERE Sdept = '刺绣系';
例4: 将 Students 表中的所有95分及以下的成绩加5分:
UPDATE Students
SET Sgrade = Sgrade + 5
WHERE Sgrade <= 95;
例5:将 stu 表中所有 id 大于900的记录中 Score 的值加上5:
UPDATE stu
SET score=score+5
WHERE id>900
例6:有 Store_Information 表:
store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999
我们发现说 Los Angeles 在01/08/1999 的营业额实际上是$500,而不是表格中所储存的$300,因此我们用以下的 SQL 语句来修改那一笔记录:
UPDATE Store_Information
SET Sales = 500
WHERE store_name = "Los Angeles"
AND Date = "Jan-08-1999"
现在 Store_Information 表的内容变成:
store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $500 Jan-08-1999
Boston $700 Jan-08-1999
在这个例子中,只有一个记录符合 WHERE 子句中的条件。如果有多个记录符合条件的话,每一个符合条件的记录都会被修改的。
二、更改记录里的多个字段
语法:UPDATE 表名
SET 列1 = 新值1,
[ 列2 = 新值2 , ]
[ 列3 = 新值3 , ] ......
[ WHERE 更新条件 ];
注意其中使用的 SET,这里只有一个 SET,但是有多个列,每个列之间以逗号分隔。SQL 通常使用逗号来分隔不同类型的参数。
例: UPDATE Students
SET Sname='何梅', Sgrade=91, Ssex=0
WHERE Scode=5;
【参考资料】
W3school 在线SQL教程 http://www.w3school.com.cn/sql/sql_update.asp SQL UPDATE 语句
课后练习:
创建员工表 employee:
create table employee
(id int,
name varchar(20),
gender varchar(4),
birthday date,
entry_date date,
job varchar(40),
salary double,
resume text );
要求:1)使用 INSERT 语句向表里 id,name,birthday,entry_date,job,salary,resume 列插入一个员工的信息:
(1,'aaa','1980-09-09','1980-09-09','bbb',1000,'bbbbbbbb')
2)使用 INSERT 语句向表里 id,name,birthday,entry_date,job,salary,resume 列插入一个员工的信息:
(2,'小李子','1980-09-09','1980-09-09','bbb',1000,'bbbbbbbb')
3)将所有员工薪水修改为5000元;
4)将姓名为'aaa'的员工薪水修改为3000元;
5)将姓名为'aaa'的员工薪水修改为4000元,job改为ccc;
6)将aaa的薪水在原有基础上增加1000元。