三个表的编辑
use work
create table student(
sno varchar(7)primary key,
sname varchar(10) not null,
ssex varchar(4),
sage int,
sdept varchar(20)
)
create table course (
cno varchar(10) primary key ,
cname varchar(20) not null ,
ccredit int ,
semster int ,
period int)
create table sc(
sno varchar(7),
cno varchar(7),
grade int check(grade>=0 and grade<=100))
alter table sc add (xklb varchar(4));
alter table sc modify column xklb varchar(6)
alter table course drop period
insert into student value (9512101,'李勇','男',19,'计算机系');
insert into student value (9512102,'刘晨','男',20,'计算机系');
insert into student value (9512103,'王敏','女',20,'计算机系');
insert into student value (9521101,'张立','男',22,'信息系');
insert into student value (9521102,'吴宾','女',21,'信息系');
insert into student value (9521103,'张海','男',20,'信息系');
insert into student value (9531101,'钱小平','女',18,'数学系');
insert into student value (9531102,'王大力','男',19,'数学系');
insert into course value ('c01','计算机文化学',3,1);
insert into course value ('c02','VB',2,3);
insert into course value ('c03','计算机网络',4,7);
insert into course value ('c04','数据库基础',6,6);
insert into course value ('c05','高等数学',8,2);
insert into course value ('c06','数据结构',5,4);
insert into sc value ('9512101','c01',90,'必修');
insert into sc value ('9512101','c02',86,'选修');
insert into sc value ('9512101','c06',NULL,'必修');
insert into sc value ('9512102','c02',78,'选修');
insert into sc value ('9512102','c04',66,'必修');
insert into sc value ('9521102','c01',82,'选修');
insert into sc value ('9521102','c02',75,'选修');
insert into sc value ('9521102','c04',92,'必修');
insert into sc value ('9521102','c05',50,'必修');
insert into sc value ('9521103','c02',68,'选修');
insert into sc value ('9521103','c06',null,'必修');
insert into sc value ('9531101','c01',80,'选修');
insert into sc value ('9531101','c05',95,'必修');
insert into sc value ('9531102','c05',85,'必修');
题6: 查询全体学生的学号与姓名。
select sname,sno from student
题7: 查询全体学生的姓名,学号和所在系。
select sname,sno,sdept from student
题8: 查询全体学生的记录。
select * from student
题9: 查询全体学生的姓名及其出生年份。
select sname,sage from student
题11: 在选课表(SC)中查询有哪些学生选修了课程,并列出学生的学号。
select distinct sno from sc
题12: 查询计算机系全体学生的姓名。
select sname from student where sdept='计算机系'
题13: 查询所有年龄在20岁以下的学生的姓名及年龄。
select sname,sage from student where sage <20
题14: 查询考试成绩不及格的学生的学号。
select sno from sc where grade <60
题15: 查询年龄在20~23岁之间的学生的姓名,所在系和年龄。
select sname,sage,sdept from student where sage between 20 and 23
题16: 查询年龄不在20~23之间的学生的姓名,所在系和年龄。
select sname,sage,sdept from student where sage>23 or sage<20
题17: 查询信息系,数学系和计算机系学生的姓名和性别。
select sname,ssex,sdept from student where sdept in ('信息系','数学系','计算机系')
题18: 查询既不属于信息系,数学系,也不属于计算机系的学生的姓名和性别。
select sname,ssex from student where not sdept='信息系'and sdept='数学系'and sdept='计算机系'
题19: 查询姓“张”的学生的详细信息。
select * from student where sname like '张%'
题20: 查询学生表中姓“张”,姓“李”和姓“刘”的学生的情况。
select * from student where sname like '张%'or sname like'李%'or sname like'刘%'
题21: 查询名字中第2个字为“小”或“大”字的学生的姓名和学号。
select sname,sno from student where sname like '%大%' or sname like '%小%'
题22: 查询所有不姓“刘”的学生。
select * from student where not sname like '刘%'
题23: 从学生表中查询学号的最后一位不是2,3,5的学生的情况。
select * from student where not( sno like '%2' or sno like '%3' or sno like '%5')
题24: 查询无考试成绩的学生的学号和相应的课程号。
select sno,cno from sc where grade is null
题25: 查询所有有考试成绩的学生的学号和课程号。
select sno,cno from sc where grade>0
题26: 查询计算机系年龄在20岁以下的学生的姓名。
select sname from student where sage <20 and sdept='计算机系'
题27: 将学生按年龄升序排序。
select * from student order by sage
题28: 查询选修了课程“c02”的学生的学号及其成绩,查询结果按成绩降序排列。
select sno,grade from sc where cno='c02' order by grade desc
题29: 查询全体学生的信息,查询结果按所在系的系名升序排列,同一系的学生按年龄降序排列。
select * from student order by sage desc,sdept
题30: 统计学生总人数。
select count(*) from student
题31: 统计选修了课程的学生的人数。
select count(distinct sno) from sc
题32 : 计算学号为9512101的学生的考试总成绩之和。
select sum(grade) from sc where sno='9512101'
题33: 计算课程“c01”的学生的考试平均成绩。
select avg(grade) from sc where cno='c01'
题34: 查询选修了课程“c01”的学生的最高分和最低分。
select max(grade),min(grade) from sc where cno='c01'
题35: 统计每门课程的选课人数,列出课程号和人数。
select cno,count(*) from sc group by cno
题36: 查询每名学生的选课们数和平均成绩。
select count(cno),avg(grade) from sc group by sno
题37: 查询选修了3门以上课程的学生的学号。
select sno,count(cno) from sc group by sno having count(cno)>3
题38: 查询选课门数等于或大于4门的学生的平均成绩和选课门数。
select avg(grade),count(cno) from sc group by sno having count(cno)>=4
题39: 查询每个学生的情况及其选课的情况。
select * from student inner join sc on student.sno=sc.sno
题40: 去掉例38中的重复列。
题41: 查询计算机系学生的选课情况,要求列出学生的名字,所修课的课程号和成绩。
select student.sname,sc.cno,sc.grade from student inner join sc on student.sno=sc.sno where student.sdept='计算机系'
题42: 查询信息系选修VB课程的学生的成绩,要求列出学生姓名,课程名和成绩。
select student.sname,course.cname,sc.grade from sc inner join student on sc.sno=student.sno inner join course on sc.cno=course.cno
where course.cname='VB' and student.sdept='信息系'
题43: 查询所有选修了VB课程的学生的情况,要求列出学生姓名和所在的系。
select student.sname,student.sdept from sc inner join student on sc.sno=student.sno inner join course on sc.cno=course.cno where course.cname='VB'
题44: 查询与刘晨在同一个系学习的学生的姓名和所在系
select sname,sdept from student where sdept=(select sdept from student where sname='刘晨')
题45: 查询学生的选课情况,包括选修课程的学生和没有修课的学生。
select * from sc inner join student on sc.sno=student.sno inner join course on sc.cno=course.cno
题46: 查询与刘晨在同一个系的学生。
select * from student where sdept=(select sdept from student where sname='刘晨')
题47: 查询成绩大于90分的学生的学号和姓名。
select sname,sno from student where sno in (select sno from sc where grade >90)
题48: 查询选修了“数据库基础”课程的学生的学号和姓名。
select sname,sno from student where sno in(select sno from sc where cno=(select cno from course where cname='数据库基础'))
题49: 查询选修了课程“c02”且成绩高于次课程的平均成绩的学生的学号和成绩。
select sno,grade from sc where cno='c02'and grade>(select avg(grade) from sc where cno='c02')
题50: 查询选修了课程“c01”的学生姓名。
select sname from student where sno in (select sno from sc where cno='c01')
题51: 查询没有选修课程“c01”的学生姓名和所在系。
select sname,sdept from student where sno in (select sno from student where sno not in (select sno from sc where cno='c01'))
题52: 查询选修了课程“c01”的学生的姓名和所在系。
select sname,sdept from student where sno in (select sno from sc where cno='c01')
题53: 查询数学系成绩在80分以上的学生的学号,姓名。
select sno,sname from student where sno in(select sno from sc where sno in (select sno from student where sdept='数学系') and grade>80)
题54: 查询计算机系考试成绩最高的学生的姓名。
select sno,sname from student where sno=(select sno from sc where grade =(select max(grade) from sc where sno in (select sno from student where sdept='计算机系')))
题55: 将新生纪录(9521105,陈冬,男,信息系,18岁)插入到Student表中。
insert into student value ('9521105','陈冬','男',18,'信息系')
题56: 在SC表中插入一新记录(9521105,c01),成绩暂缺。
insert into sc value ('9521105','c01',null,null)
题57: 将所有学生的年龄加1。
update student set sage=sage +1
题58: 将“9512101”学生的年龄改为21岁。
update student set sage=21 where sno='9512101'
题59: 将计算机系学生的成绩加5分。
update sc set grade=grade+5
题60: 删除所有学生的选课记录。
delete from sc
题61: 删除所有不及格学生的选课记录。
delete from sc where grade<60
题62: 删除计算机系不及格学生的选课记录。
delete from sc where grade<60 and sno in(select sno from student where sdept='计算机系')