DROPTABLEIFEXISTS`course`;CREATETABLE`course`(`cno`char(4)NOTNULL,`cname`varchar(16)NOTNULL,`tno`char(4)DEFAULTNULL,PRIMARYKEY(`cno`),KEY`fk_course_tno_teacher_tno`(`tno`),CONSTRAINT`fk_course_tno_teacher_tno`FOREIGNKEY(`tno`)REFERENCES`teacher`(`tno`))ENGINE=InnoDBDEFAULTCHARSET=utf8;-- ------------------------------ Records of course-- ----------------------------INSERTINTO`course`VALUES('c001','J2SE','t002');INSERTINTO`course`VALUES('c002','Java Web','t002');INSERTINTO`course`VALUES('c003','SSH','t001');INSERTINTO`course`VALUES('c004','Oracle','t001');INSERTINTO`course`VALUES('c005','SQL SERVER 2005','t003');INSERTINTO`course`VALUES('c006','C#','t003');INSERTINTO`course`VALUES('c007','JavaScript','t002');INSERTINTO`course`VALUES('c008','DIV+CSS','t001');INSERTINTO`course`VALUES('c009','PHP','t003');INSERTINTO`course`VALUES('c010','EJB3.0','t002');-- ------------------------------ Table structure for sc-- ----------------------------DROPTABLEIFEXISTS`sc`;CREATETABLE`sc`(`scno`int(11)NOTNULLAUTO_INCREMENT,`sno`char(4)DEFAULTNULL,`cno`char(4)DEFAULTNULL,`score`doubleDEFAULTNULL,PRIMARYKEY(`scno`),KEY`fk_sc_sno`(`sno`),KEY`fk_sc_cno`(`cno`),CONSTRAINT`fk_sc_cno`FOREIGNKEY(`cno`)REFERENCES`course`(`cno`),CONSTRAINT`fk_sc_sno`FOREIGNKEY(`sno`)REFERENCES`student`(`sno`))ENGINE=InnoDBAUTO_INCREMENT=15DEFAULTCHARSET=utf8;-- ------------------------------ Records of sc-- ----------------------------INSERTINTO`sc`VALUES('1','s001','c001','64');INSERTINTO`sc`VALUES('2','s002','c001','78.4');INSERTINTO`sc`VALUES('3','s003','c001','79.9');INSERTINTO`sc`VALUES('4','s004','c001','62.9');INSERTINTO`sc`VALUES('5','s001','c002','85.9');INSERTINTO`sc`VALUES('6','s003','c002','70.9');INSERTINTO`sc`VALUES('7','s003','c004','39.9');INSERTINTO`sc`VALUES('8','s001','c004','62');INSERTINTO`sc`VALUES('9','s004','c004','48');INSERTINTO`sc`VALUES('10','s008','c003','58');INSERTINTO`sc`VALUES('11','s008','c002','45');INSERTINTO`sc`VALUES('12','s008','c001','34');INSERTINTO`sc`VALUES('13','s008','c001','61');INSERTINTO`sc`VALUES('14','s002','c004','86');-- ------------------------------ Table structure for student-- ----------------------------DROPTABLEIFEXISTS`student`;CREATETABLE`student`(`sno`char(4)NOTNULL,`sname`varchar(16)DEFAULTNULL,`sage`int(11)DEFAULTNULL,`ssex`char(1)DEFAULT'男',PRIMARYKEY(`sno`))ENGINE=InnoDBDEFAULTCHARSET=utf8;-- ------------------------------ Records of student-- ----------------------------INSERTINTO`student`VALUES('s001','张三','39','男');INSERTINTO`student`VALUES('s002','李四','44','男');INSERTINTO`student`VALUES('s003','吴鹏','46','男');INSERTINTO`student`VALUES('s004','琴沁','37','女');INSERTINTO`student`VALUES('s005','王丽','37','女');INSERTINTO`student`VALUES('s006','李波','42','男');INSERTINTO`student`VALUES('s007','刘玉','42','男');INSERTINTO`student`VALUES('s008','萧蓉','38','女');INSERTINTO`student`VALUES('s009','陈萧晓','40','女');INSERTINTO`student`VALUES('s010','陈美','20','女');INSERTINTO`student`VALUES('s011','陈美妹','46','男');INSERTINTO`student`VALUES('s012','赵力','20','男');-- ------------------------------ Table structure for teacher-- ----------------------------DROPTABLEIFEXISTS`teacher`;CREATETABLE`teacher`(`tno`char(4)NOTNULL,`tname`varchar(16)DEFAULTNULL,PRIMARYKEY(`tno`),UNIQUEKEY`tname`(`tname`))ENGINE=InnoDBDEFAULTCHARSET=utf8;-- ------------------------------ Records of teacher-- ----------------------------INSERTINTO`teacher`VALUES('t006',null);INSERTINTO`teacher`VALUES('t001','刘阳');INSERTINTO`teacher`VALUES('t004','刘阳阳');INSERTINTO`teacher`VALUES('t005','张三');INSERTINTO`teacher`VALUES('t003','胡明星');INSERTINTO`teacher`VALUES('t002','谌燕');
2 SQL题
-- 1、查询两门以上不及格课程的同学的学号及其平均成绩-- 子查询 可以 select sno,avg(score)from sc
where sno in(select sno from sc where score<60groupby sno havingcount(cno)>0)groupby sno
-- 2、查询没有学全所有课的同学的学号、姓名;select sno,sname from student where sno in(select sno from sc GROUPBY sno havingCOUNT(DISTINCT cno)<(selectcount(*)from course))select s.sno,s.sname from student s,sc where s.sno=sc.sno
groupby s.sno havingcount(distinct sc.cno)<(selectcount(*)from course )-- 3、查询至少学过学号为“s001”同学所有课的其他同学学号和姓名;select cno from sc where sno='s001'-- 筛选出学过这些课程的人select*from sc ,(select cno from sc where sno='s001') c
where sc.cno =c.cno and sc.sno!='s001'groupby sc.sno
havingcount(DISTINCT sc.cno)>=(selectcount(*)from sc where sno='s001')-- 4、查询所有的课程成绩小于60 分的同学的学号、姓名;-- 如果最大的成绩都小于60,肯定所有的都小于60select s.sno,s.sname,max(score)from sc,student s where sc.sno=s.sno
groupby s.sno havingmax(score)<60-- 5、查询课程编号为c001 且课程成绩在80 分以上的学生的学号和姓名;selectDISTINCT s.sno,s.sname from sc,student s where sc.sno=s.sno
and sc.cno='c001'and score>=80-- 6、查询出只选修了一门课程的全部学生的学号和姓名select s.sno,s.sname from student s,sc where s.sno=sc.sno
groupby sc.sno havingcount(DISTINCT sc.cno)=1-- 7、查询课程名称为“Oracle”,且分数低于60 的学生姓名select s.sname from student s,sc,course c WHERE
s.sno=sc.sno and sc.cno =c.cno
and c.cname="Oracle"and sc.score<60-- 8、查询任何一门课程成绩在80 分以上的姓名;select s.sname from student s,sc where s.sno=sc.sno
groupby s.sno havingmax(score)>80-- 9、删除学习“谌燕”老师课的SC 表记录;deletefrom sc where
cno in(select cno from course c,teacher t
where c.tno=t.tno and t.tname="谌燕")-- 10、查看学生张三参加考试的全部科目的编号和对应名称,相同的科目只显示一次。selectDISTINCT c.cno,c.cname from student s,sc,course c where
s.sno=sc.sno and sc.cno=c.cno and s.sname="张三"