SQL的常用数据更新操作
1) 应用INSERT,UPDATE,DELETE语句进行更新操作;
a) 插入如下学生记录(学号:95030,姓名:李莉,年龄:18)
b) 插入如下选课记录(95030,1)
c) 计算机系学生年龄改成20
d) 数学系所有学生成绩改成0
e) 把低于总平均成绩的女同学成绩提高5分
f) 修改2号课程的成绩,若成绩小于75分提高5%,成绩大于75时提高
4%(两个语句实现,注意顺序)
g) 删除95030学生信息
h) 删除SC表中无成绩的记录
i) 删除张娜的选课记录
j) 删除数学系所有学生选课记录
k) 删除不及格的学生选课记录
l) 查询每一门课程成绩都大于等于80分的学生学号、姓名和性别,把值送往另一个已经存在的基本表STU(SNO,SNAME,SSEX)中
m) 把所有学生学号和课程号连接追加到新表中
n) 所有学生年龄增1
o) 统计3门以上课程不及格的学生把相应的学生姓名、系别追加到另外一个表中
答案:
a) 插入如下学生记录(学号:95030,姓名:李莉,年龄:18)
Insert into student(sno,sname,sage)
Values(‘95030’,’李莉’,18);
b) 插入如下选课记录(95030,1)
insert into sc(sno,cno)
values(‘95030’,‘001’);
c) 计算机系学生年龄改成20
update student
set sage=20
where sdept=‘cs’;
d) 数学系所有学生成绩改成0
update sc
set grade=0
where
sno in (select sno from student where sdept=‘ma’);
e) 把低于总平均成绩的女同学成绩提高5分
update sc
set grade=grade+5
where sno in
(
select sno
from student
where ssex=‘女’ and grade<(select avg(grade) from sc)
) ;
f) 修改2号课程的成绩,若成绩小于75分提高5%,成绩大于75时提高
4%(两个语句实现,注意顺序)
update sc
set grade=grade*(1+0.05)
where cno=‘002’ and grade<75;
update sc
set grade=grade*(1+0.04)
where cno=‘002’ and grade>75
g) 删除95030学生信息
delete
from student
where sno=‘95030’;
h) 删除SC表中无成绩的记录
delete
from sc
where grade is null;
i) 删除张娜的选课记录
delete
from sc
where sno in
(
select sno
from student
where sname=‘张那’
);
j) 删除数学系所有学生选课记录
delete
from sc
where sno in
(
select sno
from student
where sdept=‘ma’
);
k) 删除不及格的学生选课记录
delete
from sc
where grade<60;
l) 查询每一门课程成绩都大于等于80分的学生学号、姓名和性别,把值送往另一个已经存在的基本表STU(SNO,SNAME,SSEX)中
create table stu
(sno char(8),
sname char(8) ,
ssex char(2)
);
insert into stu(Sno,Sname,Ssex)
select sno,sname,ssex
from student
where sno in
(select sno
from sc
group by sno
having min(grade)>80);
m) 把所有学生学号和课程号连接追加到新表中
create table stu1
(
sno char(8),
cno char(3)
);
insert into stu1(sno,cno)
select sno,cno
from sc;
n) 所有学生年龄增1
update student
set sage=sage+1;
o) 统计3门以上课程不及格的学生把相应的学生姓名、系别追加到另外一个表中
create table stu2
(
sname char(8),
sdept char(20)
);
insert into stu2(sname,sdept)
select sname,sdept
from student
where sno in
(
select distinct sno
from sc
where grade<60
group by sno
having count(grade)>=3
);