数据库SQL面试题2(关于学生、课程、成绩、教师四张表)

这是一篇关于数据库SQL面试的实战题目,涉及学生、课程、成绩和教师四张表。文章提供模拟数据,并基于Oracle数据库给出解答,包括表的创建、数据插入及问题解决。
摘要由CSDN通过智能技术生成

下面和大家分享一个比较经典的场景,数据库的面试题目,主要的表是学生、课程、成绩、教师四张表,本示例的特点是有模拟数据,加深理解和印象,答案主要基于Oracle来实现

1、四张表分别为:

Student(S#,Sname,Sage,Ssex) 学生表            S#:学号;Sname:学生姓名;Sage:学生年龄;Ssex:学生性别
Course(C#,Cname,T#) 课程表                    C#:课程编号;Cname:课程名字;T#:教师编号
SC(S#,C#,score) 成绩表                        S#:学号;C#,课程编号;score:成绩
Teacher(T#,Tname) 教师表                      T#:教师编号; Tname:教师名字

2、题目要求

1、查询“111”课程比“112”课程成绩高的所有学生的学号;
2、查询平均成绩大于60分的同学的学号和平均成绩;
3、查询所有同学的学号、姓名、选课数、总成绩;
4、查询姓“李”的老师的个数;
5、查询没学过'陈奕迅'老师课的同学的学号、姓名;
6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;
7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;
8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名
9、查询所有课程成绩小于60分的同学的学号、姓名
10、查询没有学全所有课的同学的学号、姓名
11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名
12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名
13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩
14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名
15、删除学习'陈奕迅'老师课的SC表记录
16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2号课的平均成绩
17、按平均成绩从高到低显示所有学生的“语文1”、“生物2”、“化学1”三门的课程成绩,按如下形式显示
18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分
19、按各科平均成绩从低到高和及格率的百分数从高到低顺序
20、查询如下课程平均成绩和及格率的百分数(用"1行"显示)
21、查询不同老师所教不同课程平均分从高到低显示
22、查询如下课程成绩第 3 名到第 6 名的学生成绩单:语文1(111),语文2(112),数学1 (113),数学2(11423、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85] 优秀人数,[85-70] 良好人数,[70-60] 一般人数,[ <60] 刚及格人数
24、查询学生平均成绩及其名次 
25、查询各科成绩前三名的记录:(不考虑成绩并列情况)
26、查询每门课程被选修的学生数
27、查询出只选修了一门课程的全部学生的学号和姓名
28、查询男生、女生人数
29、查询名字中有''的学生名单
30、查询同名同性学生名单,并统计同名人数
32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列 33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩 34、查询课程名称为'语文1',且分数低于60的学生姓名和分数 35、查询所有学生的选课情况 36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数 37、查询不及格的课程,并按课程号从大到小排列 38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名 39、求选了课程的学生人数 40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩 41、查询各个课程及相应的选修人数 42、查询不同课程成绩相同的学生的学号、课程号、学生成绩 43、查询每门功成绩最好的前两名 44、统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,查询结果按人数降序排列,若人数相同,按课程号升序排列 45、检索至少选修两门课程的学生学号 46、查询全部学生都选修的课程的课程号和课程名 47、查询没学过'陈奕迅'老师讲授的任一门课程的学生姓名 48、查询两门以上不及格课程的同学的学号及其平均成绩 49、检索'114'课程分数小于60,按分数降序排列的同学学号 50、删除'2'同学的'111'课程的成绩

3、在数据库建表

/*====================================*/
/*===== CREATE TABLE ======*/
/*====================================*/
--学生表
CREATE TABLE STUDENT (
S# NUMBER(12,0) PRIMARY KEY,
SNAME VARCHAR2(10) NOT NULL,
SAGE NUMBER(3,0) NOT NULL,
SSEX CHAR(2) NOT NULL
);
COMMENT ON TABLE STUDENT IS
'学生信息表';
COMMENT ON COLUMN STUDENT.S# IS
'学号';
COMMENT ON COLUMN STUDENT.SNAME IS
'学生姓名';
COMMENT ON COLUMN STUDENT.SAGE IS
'学生年龄';
COMMENT ON COLUMN STUDENT.SSEX IS
'学生性别';

--课程表
CREATE TABLE COURSE (
C# NUMBER(12,0) PRIMARY KEY,
CNAME VARCHAR2(10) NOT NULL,
T# NUMBER(12,0) NOT NULL
);
COMMENT ON TABLE COURSE IS
'课程表';
COMMENT ON COLUMN COURSE.C# IS
'课程编号';
COMMENT ON COLUMN COURSE.CNAME IS
'课程名字';
COMMENT ON COLUMN COURSE.T# IS
'教师编号';

--成绩表
CREATE TABLE SC (
S# NUMBER(12,0),
C# NUMBER(12,0),
SCORE NUMBER(3,0) NOT NULL
);
ALTER TABLE SC ADD CONSTRAINTS PK_SC PRIMARY KEY (S#,C#);
COMMENT ON TABLE SC IS
'成绩表';
COMMENT ON COLUMN SC.S# IS
'学号';
COMMENT ON COLUMN SC.C# IS
'课程编号';
COMMENT ON COLUMN SC.SCORE IS
'成绩';

--教师表
CREATE TABLE TEACHER (
T# NUMBER(12,0) PRIMARY KEY,
TNAME VARCHAR2(10) NOT NULL
);
COMMENT ON TABLE TEACHER IS
'教师表';
COMMENT ON COLUMN TEACHER.T# IS
'教师编号';
COMMENT ON COLUMN TEACHER.TNAME IS
'教师名字';
View Code

*注:别的数据库将备注修改成相应的格式

4、模拟数据

     学生表

--学生表
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(1,'小红',10,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(2,'小明',12,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(3,'小绿',13,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(4,'小蓝',15,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(5,'小青',11,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(6,'小白',10,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(7,'小紫',14,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(8,'小黄',13,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(9,'小粉',12,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(10,'小橙',11,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(11,'小黑',9,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(12,'小粉',14,'');
View Code

     课程表

INSERT INTO COURSE(C#,CNAME,T#) VALUES(111,'语文1',50);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(112,'语文2',51);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(113,'数学1',52);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(114,'数学2',53);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(115,'英语1',54);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(116,'英语2',55);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(117,'生物1',56);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(118,'生物2',57);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(119,'物理1',58);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(120,'物理2',59);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(121,'化学1',60);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(122,'化学2',61);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(123,'政治1',50);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(124,'政治2',54);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(125,'历史1',58);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(126,'历史2',53);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(127,'地理1',56);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(128,'地理2',60);
View Code

     成绩表

INSERT INTO SC(S#,C#,SCORE) VALUES(1,111,69);
INSERT INTO SC(S#,C#,SCORE) VALUES(1,112,80);
INSERT INTO SC(S#,C#,SCORE) VALUES(1,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值