create table student (sno varchar(10),sname varchar(20));
学生表
STUDENT (SNO,SNAME
)
字段
: SNO(
学号
)
,
SNAME(
姓名
)
课程表
COURSE (CNO,CNAME,CTEACHER)
字段
: CNO(
课程号
)
,
CNAME(
课程名
)
,
CTEACHER(
任课教师
)
选课表
STU_COR(SNO,CNO,SCGRADE)
字段
:
前
2
个为外键字段
, SCGRADE(
成绩
)
create table course (cno varchar(10),cname varchar(20), cteacher varchar(20)) ;
create table stu_cor(sno varchar(10),cno varchar(10),scgrade float);
SELECT * from student;
select * from course;
select * from stu_cor;
insert into stu_cor values(4,1,90),(4,2,70),(4,3,70)
1
.
找出没有选修过“李明”老师讲授课程的所有学生姓名
select sname from student s where sno not in
(select cor.sno from course c,stu_cor cor where cteacher ='
李明
' and cor.cno=c.cno)
2
.
列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
select s.sname,avg(cor.scgrade) from student s,stu_cor cor where s.sno=cor.sno and s.sno in (
select sno from (
(select sno,count(*) from stu_cor cor where scgrade<60 group by sno having count(*) >=2) a
)) group by s.sname
3
.
列出既学过“
1
”
号课程,又学过“
2
”
号课程的所有学生姓名
select s.sname from student s,stu_cor cor where s.sno=cor.sno and cor.cno=1
union
select s.sname from student s,stu_cor cor where s.sno=cor.sno and cor.cno=2
4
.
列出“
1
”
号课成绩比“
2
”
号同学该门课成绩高的所有学生的学号
select st.sno
from student st
join stu_cor sc on sc.sno=st.sno and sc.cno='1'
join stu_cor sc2 on sc2.sno=st.sno and sc2.cno='2'
where sc.scgrade>sc2.scgrade
5
.
列出“
1
”
号课成绩比“
2
”
号课成绩高的所有学生的学号及其“
1
”
号课和“
2
”
号课的成绩
评论