没有合适的资源?快使用搜索试试~ 我知道了~
标准SQL语法面试试题
3星 · 超过75%的资源 需积分: 10 26 下载量 65 浏览量
2010-08-10
12:03:15
上传
评论
收藏 110KB DOC 举报
温馨提示
试读
11页
SQL 面试 语法 试题 SQL 面试 语法 试题 SQL 面试 语法 试题
资源推荐
资源详情
资源评论
SQL 面试题 1
1. Student(S#,Sname,Sage,Ssex)学生表
2. Course(C#,Cname,T#)课程表
3. SC(S#,C#,score)成绩表
4. Teacher(T#,Tname)教师表
1. 问题:
2. 1、查询“001”课程比“002”课程成绩高的所有学生的学号;
3. selecta.S#from(selects#,scorefromSCwhereC#='001')a,(selects#,score
4. fromSCwhereC#='002')b
5. wherea.score>b.scoreanda.s#=b.s#;
6. 2、查询平均成绩大于 60 分的同学的学号和平均成绩;
7. selectS#,avg(score)
8. fromsc
9. groupbyS#havingavg(score)>60;
10. 3、查询所有同学的学号、姓名、选课数、总成绩;
11. selectStudent.S#,Student.Sname,count(SC.C#),sum(score)
12. fromStudentleftOuterjoinSConStudent.S#=SC.S#
13. groupbyStudent.S#,Sname
14. 4、查询姓“李”的老师的个数;
15. selectcount(distinct(Tname))
16. fromTeacher
17. whereTnamelike'李%';
18. 5、查询没学过“叶平”老师课的同学的学号、姓名;
19. selectStudent.S#,Student.Sname
20. fromStudent
21. whereS#notin(selectdistinct(SC.S#)fromSC,Course,TeacherwhereSC.C#=Course.C#an
dTeacher.T#=Course.T#andTeacher.Tname='叶平');
22. 6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;
23. selectStudent.S#,Student.SnamefromStudent,SCwhereStudent.S#=SC.S#andSC.C#='001'an
dexists(Select*fromSCasSC_2whereSC_2.S#=SC.S#andSC_2.C#='002');
24. 7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;
25. selectS#,Sname
26. fromStudent
27. whereS#in(selectS#fromSC,Course,TeacherwhereSC.C#=Course.C#andTeacher.T#=Cou
rse.T#andTeacher.Tname='叶平'groupbyS#havingcount(SC.C#)=(selectcount(C#)fromCou
rse,TeacherwhereTeacher.T#=Course.T#andTname='叶平'));
28. 8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;
29. SelectS#,Snamefrom(selectStudent.S#,Student.Sname,score,(selectscorefromSCSC_2
whereSC_2.S#=Student.S#andSC_2.C#='002')score2
30. fromStudent,SCwhereStudent.S#=SC.S#andC#='001')S_2wherescore2<score;
31. 9、查询所有课程成绩小于 60 分的同学的学号、姓名;
32. selectS#,Sname
33. fromStudent
34. whereS#notin(selectStudent.S#fromStudent,SCwhereS.S#=SC.S#andscore>60);
35. 10、查询没有学全所有课的同学的学号、姓名;
36. selectStudent.S#,Student.Sname
37. fromStudent,SC
38. whereStudent.S#=SC.S#groupbyStudent.S#,Student.Snamehavingcount(C#)<(selectcount
(C#)fromCourse);
39. 11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;
40. selectS#,SnamefromStudent,SCwhereStudent.S#=SC.S#andC#inselectC#fromSCwhere
S#='1001';
41. 12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;
42. selectdistinctSC.S#,Sname
43. fromStudent,SC
44. whereStudent.S#=SC.S#andC#in(selectC#fromSCwhereS#='001');
45. 13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;
46. updateSCsetscore=(selectavg(SC_2.score)
47. fromSCSC_2
48. whereSC_2.C#=SC.C#)fromCourse,TeacherwhereCourse.C#=SC.C#andCourse.T#=Teacher.T#
andTeacher.Tname='叶平');
49. 14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;
50. selectS#fromSCwhereC#in(selectC#fromSCwhereS#='1002')
51. groupbyS#havingcount(*)=(selectcount(*)fromSCwhereS#='1002');
52. 15、删除学习“叶平”老师课的 SC 表记录;
53. DelectSC
54. fromcourse,Teacher
55. whereCourse.C#=SC.C#andCourse.T#=Teacher.T#andTname='叶平';
56. 16、向 SC 表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2、
57. 号课的平均成绩;
58. InsertSCselectS#,'002',(Selectavg(score)
59. fromSCwhereC#='002')fromStudentwhereS#notin(SelectS#fromSCwhereC#='002');
60. 17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生 ID,,数
据库,企业管理,英语,有效课程数,有效平均分
61. SELECTS#as学生 ID
62. ,(SELECTscoreFROMSCWHERESC.S#=t.S#ANDC#='004')AS数据库
63. ,(SELECTscoreFROMSCWHERESC.S#=t.S#ANDC#='001')AS企业管理
64. ,(SELECTscoreFROMSCWHERESC.S#=t.S#ANDC#='006')AS英语
65. ,COUNT(*)AS有效课程数,AVG(t.score)AS平均成绩
66. FROMSCASt
67. GROUPBYS#
68. ORDERBYavg(t.score)
69. 18、查询各科成绩最高和最低的分:以如下形式显示:课程 ID,最高分,最低分
70. SELECTL.C#As课程 ID,L.scoreAS最高分,R.scoreAS最低分
71. FROMSCL,SCASR
72. WHEREL.C#=R.C#and
73. L.score=(SELECTMAX(IL.score)
74. FROMSCASIL,StudentASIM
75. WHEREL.C#=IL.C#andIM.S#=IL.S#
76. GROUPBYIL.C#)
77. AND
78. R.Score=(SELECTMIN(IR.score)
79. FROMSCASIR
80. WHERER.C#=IR.C#
81. GROUPBYIR.C#
82. );
83. 19、按各科平均成绩从低到高和及格率的百分数从高到低顺序
84. SELECTt.C#AS课程号,max(course.Cname)AS课程名,isnull(AVG(score),0)AS平均成绩
85. ,100*SUM(CASEWHENisnull(score,0)>=60THEN1ELSE0END)/COUNT(*)AS及格百分数
86. FROMSCT,Course
87. wheret.C#=course.C#
88. GROUPBYt.C#
89. ORDERBY100*SUM(CASEWHENisnull(score,0)>=60THEN1ELSE0END)/COUNT(*)DESC
90. 20、查询如下课程平均成绩和及格率的百分数(用"1 行"显示):企业管理(001),马克思(002),OO&UML
(003),数据库(004)
91. SELECTSUM(CASEWHENC#='001'THENscoreELSE0END)/SUM(CASEC#WHEN'001'THEN1ELSE
0END)AS企业管理平均分
92. ,100*SUM(CASEWHENC#='001'ANDscore>=60THEN1ELSE0END)/SUM(CASEWHENC#='0
01'THEN1ELSE0END)AS企业管理及格百分数
93. ,SUM(CASEWHENC#='002'THENscoreELSE0END)/SUM(CASEC#WHEN'002'THEN1ELSE0EN
D)AS马克思平均分
94. ,100*SUM(CASEWHENC#='002'ANDscore>=60THEN1ELSE0END)/SUM(CASEWHENC#='0
02'THEN1ELSE0END)AS马克思及格百分数
95. ,SUM(CASEWHENC#='003'THENscoreELSE0END)/SUM(CASEC#WHEN'003'THEN1ELSE0EN
D)ASUML 平均分
96. ,100*SUM(CASEWHENC#='003'ANDscore>=60THEN1ELSE0END)/SUM(CASEWHENC#='0
03'THEN1ELSE0END)ASUML 及格百分数
97. ,SUM(CASEWHENC#='004'THENscoreELSE0END)/SUM(CASEC#WHEN'004'THEN1ELSE0EN
D)AS数据库平均分
98. ,100*SUM(CASEWHENC#='004'ANDscore>=60THEN1ELSE0END)/SUM(CASEWHENC#='0
04'THEN1ELSE0END)AS数据库及格百分数
99. FROMSC
100. 21、查询不同老师所教不同课程平均分从高到低显示
101. SELECTmax(Z.T#)AS教师 ID,MAX(Z.Tname)AS教师姓名,C.C#AS课程ID,MAX(C.Cname)AS课程名称,
AVG(Score)AS平均成绩
102. FROMSCAST,CourseASC,TeacherASZ
103. whereT.C#=C.C#andC.T#=Z.T#
104. GROUPBYC.C#
105. ORDERBYAVG(Score)DESC
106. 22、查询如下课程成绩第3名到第6名的学生成绩单:企业管理(001),马克思(002),UML(003),数据库
(004)
107. [学生 ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩
108. SELECTDISTINCTtop3
109. C.S#As学生学号,
110. Student.SnameAS学生姓名,
111. T1.scoreAS企业管理,
112. T2.scoreAS马克思,
113. T3.scoreASUML,
114. T4.scoreAS数据库,
115. ISNULL(T1.score,0)+ISNULL(T2.score,0)+ISNULL(T3.score,0)+ISNULL(T4.score,0)as总分
116. FROMStudent,SCLEFTJOINSCAST1
117. ONSC.S#=T1.S#ANDT1.C#='001'
118. LEFTJOINSCAST2
119. ONSC.S#=T2.S#ANDT2.C#='002'
120. LEFTJOINSCAST3
剩余10页未读,继续阅读
资源评论
- amex882012-10-15简单实用,可以学习。
quchch
- 粉丝: 1
- 资源: 26
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功