数据库实验—更新操作
-
张兰老师因评上教授,需将其职称(Tprof)由副教授改为教授,并将工资(Tsal)改为3900,岗位津贴(Tcomm)改为2400
update Teachers set Tprof='教授',Tsal=3900,Tcomm=2400 where Tname='张兰'
-
分别任命李力、张兰和张雪为本学院的院长
update Department set Dheader = DT.Tno from Department D,(select Dno,Tno from Teachers where Tname in ('李力','张兰','张雪')) DT where D.Dno = DT.Dno
-
用学号为2014112103的学生的数据结构课程的补考成绩63分,更新原有的考试成绩。
update Reports set Grade=63 from Reports R,Courses C where R.Sno='2014112103' and C.Cname='数据结构' and C.Cno = R.Cno
-
2018第1学期,为20171151班的所有学生开设了计算机网络课程,并由“许永军”教授进行授课,请根据要求,完成对各基本表的更新操作。
- 分两步走,涉及到两份表
- 可以为空的就不用插入,比如评价这些,我们无法直接插入
- TutID使用newid函数来创建唯一的值(之前的博客说过)
insert into Tutors(Tno,Cno,Tacademicyear,Tterm,Sclass,TutID) values((select Tno from Teachers where Tname='许永军'), (select Cno from Courses where Cname='计算机网络'), 2018,1,'20171151',newid() )
insert into Reports(Sno,Cno,Racademicyear,Rterm) values(select S.Sno ,C.Cno,2018,1 from Courses C ,Students S where C.Cname='计算机网络' and Sclass='20171151')
-
学号为2017120202的学生因病退学了,需要将他的相关信息全部删除
delete from Reports where Sno='2017120202' delete from Students where Sno='2017120202'
-
因为培养方案改变,需要将计算机组成原理这门课的学分改为4分,学时改为48,前序课程改为编号为112p0021的课程
update Courses set Ccredit=4,Chours=48,Pre_Cno='112p0021' where Cname='计算机组成原理'
-
李桂清教授光荣退休了,需要将他在2018学年第2学期给20161121班的学生所上的数字图像制作课程将改由李力授课。
update Tutors set Tno=(select Tno from Teachers where Tname='李力') from Tutors Tu where Tu.Tno=(select Tno from Teachers where Tname='李桂清') and Tu.Sclass='20161121' and Tacademicyear=2018 and Tterm=2 and Cno=(select Cno from Courses where Cname ='数字图像制作')
-
学号为2017120201的学生转专业了,转到了计算机与信息工程学院的计算机科学与技术(非师范)专业,更新他的专业号与学院号。
update Students set Mno=(select Mno from Major where Mname='计算机科学与技术(非师范)'), Dno=(select Dno from Department where Dname='计算机与信息工程学院') where Sno='2017120201'
-
学号为2015210101的学生在大三第一学期时选修了操作系统这门课程,在选课表添加记录
insert into Reports(Sno,Cno,Racademicyear,Rterm) values('2015210101', (select Cno from Courses where Cname='操作系统'), 2018,1 )
-
计算机与信息工程学院新来了一位叫王红的男老师,教师编号是T012,职称是副教授,工资和岗位津贴与张兰老师一样。
- 在本题中学到了可以通过select查询批量插入,但是不能用values(括住select来插入)
insert into Teachers(Tno,Tname,Tgender,Dno,Tprof,Tsal,Tcomm) select 'T012','王红','男',D.Dno,'副教授',T.Tsal,T.Tcomm from Department D,Teachers T where T.Tname='张兰' and D.Dname='计算机与信息工程学院'
-
学院表更新表格信息,新增了新的学院,学院号是23,学院名称是材料学院,学院院长为赵飞燕老师。
insert into Department values('23','材料学院', (select Tno from Teachers where Tname='赵飞燕'))
-
学生张勇在注册时填错学生信息,现在需要将其生源地改为广西桂林,将出生日期往后增加5天。
update Students set Snative='广西桂林',Sbirth=dateadd(day,5,Sbirth)
where Sname='张勇'
总结:无论是更新还是删除,这俩操作十分危险,如果没写where筛选条件就会将所有都批量更新或者删除掉,在本实验中本人已经吃过教训了,忘记写条件update了整个表,长记性了就不会忘记了。
本文来自博客园,作者:竹等寒,转载请注明原文链接。