2022年SQL面试题.pdf
题目 1问题描述 :为管理岗位业务培训信息,建立3 个表 :S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄C (C#,CN ) C#,CN 分别代表课程编号、课程名称SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩1. 使用标准SQL嵌套语句查询选修课程名称为税收基础的学员学号和姓名- 实现代码 :SELECT SN,SD FROM SWHERE S# IN(SELECT S# FROM C,SCWHERE C.C#=SC.C#AND CN=N 税收基础 )2. 使用标准SQL嵌套语句查询选修课程编号为C2 的学员姓名和所属单位- 实现代码 :SELECT , FROM S,SCWHERE S.S#=SC.S#精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 10 页 - - - - - - - - - - AND SC.C#=C23. 使用标准SQL嵌套语句查询不选修课程编号为C5 的学员姓名和所属单位- 实现代码 :SELECT SN,SD FROM SWHERE S# NOT IN(SELECT S# FROM SCWHERE C#=C5)4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位- 实现代码 :SELECT SN,SD FROM SWHERE S# IN(SELECT S# FROM SCRIGHT JOINC ON SC.C#=C.C# GROUP BY S#HAVING COUNT(*)=COUNT(S#)5. 查询选修了课程的学员人数- 实现代码 :精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 10 页 - - - - - - - - - - SELECT 学员人数 =COUNT(DISTINCT S#) FROM SC6. 查询选修课程超过5 门的学员学号和所属单位- 实现代码 :SELECT SN,SD FROM SWHERE S# IN(SELECT S# FROM SCGROUP BY S#HAVING COUNT(DISTINCT C#)5)题目 2问题描述 :已知关系模式 :S (SNO,SNAME) 学生关系。 SNO 为学号, SNAME 为姓名C (CNO,CNAME,CTEACHER) 课程关系。 CNO 为课程号, CNAME 为课程名, CTEACHER 为任课教师SC(SNO,CNO,SCGRADE) 选课关系。 SCGRADE 为成绩1. 找出没有选修过“李明”老师讲授课程的所有学生姓名- 实现代码 :SELECT SNAME FROM S精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 10 页 - - - - - - - - - - WHERE NOT EXISTS(SELECT * FROM SC,CWHERE =AND CNAME= 李明 AND =2. 列出有二门以上( 含两门 ) 不及格课程的学生姓名及其平均成绩- 实现代码 :SELECT ,AVG_SCGRADE=AVGFROM S,SC,(SELECT SNOFROM SCWHERE SCGRADE=2)A WHERE = AND =GROUP BY ,3. 列出既学过“ 1”号课程,又学过“ 2”号课程的所有学生姓名精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 10 页 - - - - - - - - - - - 实现代码 :SELECT ,FROM S,(SELECT FROM SC,CWHERE =AND IN(1,2)GROUP BY SNOHAVING COUNT(DISTINCT CNO)=2)SC WHERE =4. 列出“ 1”号课成绩比“ 2”号同学该门课成绩高的所有学生的学号- 实现代码 :SELECT ,FROM S,(SELECT FROM SC SC1,C C1,SC SC2,C C2WHERE = AND =1精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 10 页 - - - - - - - - - - AND = AND =2AND )SC WHERE =5. 列出“ 1”号课成绩比“ 2”号课成绩高的所有学生的学号及其“1”号课和“ 2”号课的成绩- 实现代码 :SELECT ,SC.1号课成绩 ,SC.2号课成绩 FROM S,(SELECT ,1 号课成绩 =,2号课成绩 =FROM SC SC1,C C1,SC SC2,C C2WHERE = AND =1AND = AND =2AND )SC WHERE =SQL经典面试题一(ORACLE) 说明:有三个表,项目表、合同表、付款表精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 10 页 - - - - - - - - - - - 下面是建立表的语句create table 项目 ( 项目编号 int,项目名称 varchar(50) insert into 项目select 1, 项目 1 from dual union all select 2, 项目 2 from dual union all select 3, 项目 3 from dual;create table 合同 ( 合同编号 int,项目编号 int,合同金额 number(7,3)insert into 合同select 1,1,1000 from dual union all select 2,1,1500 from dual union all select 3,2,2000 from dual;create table 付款 ( 付款编号 int,合同编号 int,付款金额 number(7,3)insert into 付款select 1,1,100 from dual union all select 2,2,200 from dual union all select 3,2,800 from dual;一个项目可能会有签署多个合同,每个合同会分几次付款,精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 10 页 - - - - - - - - - - 问题 ( 一) 设计一个查询,要求返回结果如下:项目编号项目名称项目所有合同的金额- - - 1 项目 1 2500 2 项目 2 2000 3 项目 3 NULL解答:SELECT L.项目编号 ,MAX(L. 项目名称 ),SUM(R. 合同金额 ) AS 合同金额FROM 项目 L LEFT OUTER JOIN 合同 R ON L.项目编号 =R.项目编号GROUP BY L.项目编号问题 ( 二) 设计一个查询,要求返回结果如下:项目编号项目所有合同已付款金额- - 1 1100 2 NULL -解答:SELECT T2.项目编号 ,SUM(T3.付款金额 ) AS 项目所有合同已付款金额FROM 合同 T2 LEFT OUTER JOIN 付款 T3 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 10 页 - - - - - - - - - - ON T2. 合同编号 =T3.合同编号GROUP BY T2. 项目编号问题 ( 三) 设计一个查询,要求返回结果如下:项目编号项目名称项目所有合同已付款金额- - 1 项目 1 1100 2 项目 2 NULL -解答:SELECT T1.项目编号,MAX(T1. 项目名称 ) ,SUM(T3. 付款金额 ) AS 项目所有合同已付款金额FROM 项目 T1 JOIN 合同 T2 ON T1.项目编号 =T2. 项目编号LEFT OUTER JOIN 付款 T3 ON T2. 合同编号 =T3.合同编号GROUP BY T1. 项目编号问题 ( 四) 请您设计一个查询语句,检索的格式如下- 项目编号项目名称项目所有合同的金额项目所有合同已付款金精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 10 页 - - - - - - - - - - 额1 项目 1 2 项目 2 NULL -解答:select L.项目编号 ,L. 项目名称 ,L. 项目所有合同的金额,R. 项目所有合同已付款金额from (select A.项目编号 ,A. 项目名称 ,sum(B. 合同金额 ) 项目所有合同的金额 from 项目 A LEFT JOIN 合同 B ON A. 项目编号 =B.项目编号 group by A.项目编号 ,A. 项目名称 ) L JOIN (select B.项目编号 , sum( 付款金额 ) 项目所有合同已付款金额 from 合同 B LEFT JOIN 付款 C ON B. 合同编号 =C.合同编号 group by B.项目编号 ) R ON L.项目编号 =R.项目编号精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 10 页 - - - - - - - - - -