数据更新
插入数据
插入元组
插入元组是指将新的元组插入指定表中。
语句格式为:
insert into <表名>[<属性列1>,<属性列2>…]
values([<常量1>,<常量2>…])
例:将一个新学生元组(学号:2014213000,;姓名:Larry;性别:男;所在系:CS)插入到Student表中
**insert into** Student(Sno,Sname,Ssex,Sdept) **values**('2014213000','Larry','男','CS');
如果元组的每一个属性都要插入新值,那么可以省略表名后面的属性列表
例:将一个新学生元组(学号:2014213000,;姓名:Larry;性别:男;所在系:CS,年龄:21)插入到Student表中
insert into Student values('2014213000','Larry','男','CS',21);
插入子查询结果
例:对每一个系,求学生的平均年龄,并把结果存入数据库
首先在数据库中建立一个新表,其中一列存放系名,另一列存放相应的学生平均年龄
create table Dept_age(
Sdept char(15),
Avg_age smallint
);
然后对Student表按系分组求平均年龄,再把系名和平均年龄存入新表中
insert into Dept_age(Sdept,Avg_age)
select Sdept,avg(Sage)
from Student
Group by Sdept;
修改数据
其功能是修改指定表中满足where子句条件的元组。
其语句格式为:
update <表名> set <列名>=<表达式>[,<列名>=<表达式>]
[where<条件>];
修改某一个元组的值
例:将学生2014213000的年龄改为22岁
update Student set Sage = 22
where Sno = '2014213000';
修改多个元组的值
例:将所有的学生的年龄都加一岁
uodate Student set Sage = Sage + 1;
带子查询的修改语句
例:将计算机系全体学生的成绩置零
update SC set Grade = 0
where Sno in(
select Sno
from Student
where Sno = SC.Sno and Sdept = 'CS'
);
或者为:
update SC set Grade = 0
where 'CS' = (
select Sdept
from Student
where Student.Sno = SC.Sno
);
删除数据
删除语句的格式为:
delete from <表名>
[where<条件>];
删除某一个元组的值
例:删除学号为2014213000的学生记录
delete from Student where Sno = '2014213000';
删除多个元组的值
例:删除所有学生的选课记录
delete from SC;
带子查询的删除语句
例:删除计算机系所有学生的选课记录
delete from SC
where Sno in(
select Sno
from Student
where Sno = SC.Sno and Sdept = 'CS'
);