数据库面试经典题
来源:互联网 发布:中铁物资西南公司知乎 编辑:程序博客网 时间:2024/05/17 04:18
有3个表S(学生表),C(课程表),SC(学生选课表)
S(SNO,SNAME)代表(学号,姓名)
C(CNO,CNAME,CTEACHER)代表(课号,课名,教师)
SC(SNO,CNO,SCGRADE)代表(学号,课号,成绩)
问题:
1,查询学号为1的学生所学课程的课程名与任课教师名
2,查询至少选修LI老师所授课程中一门课程的学生姓名。
3,查询S3同学不选的课程的课程号与课程名。
4,统计选修每一门课程的学生的人数与平均成绩。
5,查询至少选修三门课程的学生姓名与学号。
6,找出没选过“LiMing”老师的所有学生姓名。
7,列出2门以上(含2门)不及格学生姓名及平均成绩。
8,即学过1号课程又学过2号课所有学生的姓名。
一、建表、插入数据
CREATE TABLE SC( SNO VARCHAR(200), CNO VARCHAR(200), SCGRADE VARCHAR(200));CREATE TABLE S( SNO VARCHAR(200 ), SNAME VARCHAR(200));CREATE TABLE C( CNO VARCHAR(200), CNAME VARCHAR(200), CTEACHER VARCHAR(200));INSERT INTO C ( CNO, CNAME, CTEACHER ) VALUES ( '1', 'Chinese', 'Zhang'); INSERT INTO C ( CNO, CNAME, CTEACHER ) VALUES ( '2', 'Policy', 'Wang'); INSERT INTO C ( CNO, CNAME, CTEACHER ) VALUES ( '3', 'English', 'Li'); INSERT INTO C ( CNO, CNAME, CTEACHER ) VALUES ( '4', 'Math', 'Zhao'); INSERT INTO C ( CNO, CNAME, CTEACHER ) VALUES ( '5', 'Physical', 'LiMing'); commit; INSERT INTO S ( SNO, SNAME ) VALUES ( '1', 'S1'); INSERT INTO S ( SNO, SNAME ) VALUES ( '2', 'S2'); INSERT INTO S ( SNO, SNAME ) VALUES ( '3', 'S3'); INSERT INTO S ( SNO, SNAME ) VALUES ( '4', 'S4'); commit; INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '1', '1', '40'); INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '1', '2', '30'); INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '1', '3', '20'); INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '1', '4', '80'); INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '1', '5', '60'); INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '2', '1', '60'); INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '2', '2', '60'); INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '2', '3', '60'); INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '2', '4', '60'); INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '2', '5', '40'); INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '3', '1', '60'); INSERT INTO SC ( SNO, CNO, SCGRADE ) VALUES ( '3', '3', '80'); commit;
结果如下图
二、答案
问题1:select CNAE,CTEACHER from C inner join SC on C.CNO=SC.CNO where SC.SNO=1;
问题2:select SNAME from S where SNO in(select SNO from SC inner join C on SC.CNO=C.CNO where C.CTEACHER='Li');
问题3:select CNO,CNAME from C where CNO not in(select CNO from SC inner join S on SC.SNO=S.SNO where S.SNAME='S3');
问题4:select CNO 课程号,count(*) 总人数, avg(SCGRADE) 平均成绩 from SC inner join S on SC.SNO=S.SNO group by CNO;
问题5:select SNAME,SNO from S where SNO in(select SNO from SC group by SNO having count(SNO)>=3);
- 数据库面试经典题
- 数据库面试题目经典大全
- 数据库面试题目经典大全
- 面试经典十六题
- 面试经典70题
- 面试经典70题
- 面试经典题
- 面试经典题
- Android面试经典题
- 面试经典33题
- java面试经典题
- 面试经典题--概论
- 面试经典题
- 十个经典的数据库面试问题
- 经典面试有用的数据库的优化
- 十个经典的数据库面试问题
- 数据库经典面试问题-核心概念
- 数据库经典面试问题-leetcode习题
- 【java8】 新特性之 Lambda入门
- CMakeLists.txt 之 多重判断宏定义
- HDU 5884 Sort(二分+单调队列)
- 创建索引的条件和注意事项
- iOS-火爆的旋转式引导页你见过么(源码)
- 数据库面试经典题
- 友盟第三方登录
- Java动态调整数组大小
- Fragment生命周期
- mongodb安装
- spring配置中,properties文件以及xml文件配置问题
- hibernate查询
- uiautomator2.0+脱离PC运行(apk启动uiautomator2.0+)的实现方案
- emacs 使用 etags 阅读代码