数据库实验—更新操作

在这里插入图片描述

  • 张兰老师因评上教授,需将其职称(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了整个表,长记性了就不会忘记了。

posted @ 2023-06-29 00:05  竹等寒  阅读(19)  评论(0编辑  收藏  举报  来源