SPJ数据库-初始sql语句(6)(注释版)

/*将一个新学生元组
(学号:201215128,姓名:陈冬,性别:男,所在系:IS,年龄:18岁)插入到Student表中
*/
insert
into Student(Sno,Sname,Ssex,Sdept,Sage)
values('201215128','陈冬','男','IS',18)

/*将学生张成民的信息插入到Student表中*/
insert
into Student
values('201215126','张成民','男',18,'CS')

/*插入一条选课记录('201215128','1')(01)*/
insert
into SC(Sno,Cno)
values(201215128,1)

/*插入一条选课记录('201215128','1')(02)*/
insert
into SC
values(201215128,1,null)

/*对每个系,求学生的平均年龄,并把结果存入数据库(01)*/
create table Dept_age
(Sdept char(15),
 Avg_age smallint
)

insert
into Dept_age
select Sdept,AVG(Sage)
from Student
group by Sdept

/*对每个系,求学生的平均年龄,并把结果存入数据库(02)*/
select Sdept,AVG(Sage) 平均年龄 into Dept_age
from Student
group by Sdept

/*将学生201215121的年龄改为22岁。*/
update Student
set Sage=22
where Sno=201215121

/*将所有学生的年龄增加1岁*/
update Student
set Sage=Sage+1

/*将计算机科学系全体学生的成绩置0*/
update SC
set Grade=0
where sno in(select Sno
             from Student
             where Sdept='cs'
             )

/*删除学号为201215128的学生记录*/
delete
from Student --from为可选项,此行可直接写Student
where Sno='201215128'

/*删除所有的学生选课记录(delete清空表数据)*/
delete
SC --from SC

/*注意区分删掉sc表*/
drop table SC

/*删掉计算机科学系所有学生的选课记录*/
delete 
from Sc
where Sno in(select Sno
             from Student
             where Sdept='cs'
             )

--3.6空值的产生
/*向SC表中插入一个元组,学生号是'201215126',课程号是'1',成绩为空*/
insert
into SC
values(201215126,1,null)

--或者

insert
into SC(Sno,Cno)
values(201215126,1)

/*将Student表中学号为'201215200'的学生所属的系改为空值*/
update Student
set Sdept=null
where Sno=201215200

/*从Student表中找出漏填了数据的学生信息*/
select*
from Student
where Sname is null or Ssex is null or Sage is null or Sdept is null

/*选出选修1号课程的不及格学生的学号*/
select Sno
from SC
where Grade<60 and Cno='1'

/*选出选修1号课程的不及格的学生以及缺考的学生的学号*/
select Sno
from SC
where Grade<60 and Cno=1
union
select Sno
from SC
where Grade is null and Cno=1

--或者

select Sno
from SC
where Cno='1' and(Grade<60 or Grade is null)

--3.7视图
/*建立信息系学生的视图*/
create view IS_Student
as
select Sno,Sname,Sage
from Student
where Sdept='IS'

/*建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生*/
create view IS_Student
as
select Sno,Sname,Sage
from Student
where Sdept='IS'
with check option

/*
试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了
WITH CHECK OPTION,
而该操作的一个或多个结果行又不符合 CHECK OPTION 约束。
insert
into IS_Student
values(201215128,'李涛',20)
*/

/*建立信息系选修了1号课程的学生的视图(包括学号、姓名、成绩)*/
create view IS_S1
as
select SC.Cno,Sname,Grade
from Student,SC
where Student.Sno=SC.Sno and Sdept='IS' and Cno=1

————————————————————————————————————————————————————————————————————————--2021.4.13
上一篇:数据库第三章 关系数据库标准语言SQL 课后习题


下一篇:记一次数据库课后作业:SQL查询应用