use teaching
--1.在STUDENTS表中插入如下两个学生的相应记录信息----
insert into 
 Students(studentid,sname,idcard,sex)
VALUES('201141531118','吴昕','432325199310203511','女');


insert into 
 Students(studentid,sname,idcard,sex)
VALUES('201141531202','江哲','430510199408026426','男');
--select *from students where sname='江哲';
--insert into 插入多条记录,原理就是将另一张表的查询结果插入到目标表

insert into Students(studentid,sname,idcard,sex)
select '201141531118','吴昕','432325199310203511','女'
union
select '201141531202','江哲','430510199408026426','男'

--2.查找全部课程总成绩totalmark在60分以下的
--学生学号、姓名、课程名称以及成绩信息,
--并将查找到的数据保存到关系表TS中;
/*这种方式不用自己建表*/
select  S.studentid,S.sname,C.cname,SC.total_mark into TS
from students S,scts SC,courses C
where S.studentid=SC.studentid and SC.courseid=C.courseid and SC.total_mark<60




--3.将学号为'200742347114'的学生姓名改为'刘国华',
--民族(nation)改为'景颇族';
update students
set sname = '刘国华',
    nation='景颇族'
where studentid='200742347114';


---select *from students where studentid='200742347114';
--4.将选修了'20812B0'号课程但成绩不及格的学生的对应成绩信息,
-- 全部改为空值(NULL);
update SCTS 
set total_mark = NULL,
    Exam_Grade = NULL,
    Regular_Grade=NULL,
    exam_date=NULL
where  SCTS.courseid='20812B0' and SCTS.total_mark<60
----测试:select *from scts where SCTS.courseid='20812B0'


--5.学生'郑宛然'在'20483B2'号课程的考试中作弊,将该生的该科成绩
--(total_mark ,Exam_Grade)置为0
update SCTS --这里不能取别名
set total_mark=0,
    Exam_Grade=0
where SCTS.courseid='20483B2' and SCTS.studentid=(
      select studentid
 from students S
      where S.sname='郑宛然'
   )
---测试select *from scts where SCTS.courseid='20483B2'
/*6.将选修了'20815B0'号课程,且成绩((total_mark)低于
该课程平均分的学生对应成绩提高20%;*/


update SCTS
set total_mark=1.2*total_mark
where SCTS.courseid='20815B0' and total_mark<(
select AVG(total_mark)
from SCTS
where SCTS.courseid='20815B0')


/*测试select total_mark
from SCTS
where SCTS.courseid='20815B0'*/
--7.在基本表SCTS中,将总成绩total_mark为空值(NULL)的选课记录全部删除;
delete from SCTS
where total_mark is null 
/*测试select *
from SCTS
where total_mark is null
*/


--8.将所有姓'赵'的学生的选课记录删除;
delete
from scts
where scts.studentid in(
Select studentid
from students S
where S.sname like '赵%'
)
/*9.将'动物科学技术学院'所有学生的选课记录全部删除; */
delete 
from SCTS
where  SCTS.studentid in(
     select S.studentid
     from  students S
     where S.college=(
 select collegeid from colleges C
where  C.cname='动物科学技术学院'
     )
)
/*10.学号为'200740512223'的学生因为考试舞弊被勒令退学,
能否在学生表中直接删除其记录信息?
如果一定要删除该生记录的话,应该如何操作?
写出对应的SQL语句。 */


--先删除scts中的数据
delete from scts where studentid='200740512223'
delete from students where studentid='200740512223' 
/*
delete RESTRICT
from students  
where studentid='200740512223' */