SQL经典面试50题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.一般面试时考SQL,主要就是考你“统计分析”这一块,下面我们来看面试官经常采用的手段。
2.
3.
4.由4张简单的不能再简单的表,演变出50道SQL
5.
6.
7.哈哈哈哈,够这个面试官面个15,20个人,不带重复的了,而且每个SQL你真的不动动脑子还写
不出呢,你别不服气,下面开始。
8.
9.表结构:
10.
11.
12.
13.表Student
14.
15.(S#,Sname,Sage,Ssex) 学生表
16.
17.
18.S# student_no
19.
20.Sage student_age
21.
22.Ssex student_sex
23.
24.
25.
26.表Course
27.
28.(C#,Cname,T#) 课程表
29.
30.
31.C# course_no
32.
ame course_name
34.
35.T# teacher_no
36.
37.
38.
39.
40.
41.
42.表SC(学生与课程的分数mapping 表)
43.
44.(S#,C#,score) 成绩表
45.
46.
47.S# student_no
48.C# course_no
49.score 分数啦
50.
51.
52.
53.
54.
55.
56.表Teacher
57.
58.(T#,Tname) 教师表
59.
60.
61.T# teacher_no
62.Tname teacher_name
63.
64.
65.
66.
67.
68.
69.50道问题开始
70.
71.
72.
73.
74.
75.
76.1、查询“001”课程比“002”课程成绩高的所有学生的学号;
77.
78.
79.select # from (select s#,score from SC where C#='001') a,(select s#,sc
ore
80.
81.from SC where C#='002')
82.
83.
84.
85.
86.where > and #=#;
87.
88.
89.
90.
91.2、查询平均成绩大于60分的同学的学号和平均成绩;
92.
93.select S#,avg(score)
94.
95.from sc
96.
97.group by S# having avg(score) >60;
98.
99.
100.
101.
102.3、查询所有同学的学号、姓名、选课数、总成绩;103.
104.select #,,count#),sum(score)
105.
106.from Student left Outer join SC on #=# 107.
108.group by #,Sname
109.
110.
111.
112.
113.4、查询姓“李”的老师的个数;
114.
115.select count(distinct(Tname))
116.
117.from Teacher
118.
119.where Tname like '李%';
120.
121.
122.
123.
124.5、查询没学过“叶平”老师课的同学的学号、姓名;125.
126.select #,
127.
128.from Student
129.
130.where S# not in (select distinct( #) fromSC,Course,Teacher where #=#and #=# ='叶平');
131.
132.
133.
134.
135.6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;
136.
137.select #, fromStudent,SC where #=# #='001'and exists( Select * from SC as SC_2 where #=# and #='002');
138.
139.
140.
141.
142.7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;
143.
144.select S#,Sname
145.
146.from Student
147.
148.where S# in (select S# from SC,Course ,Teacher where #=# #=# and = '叶平
'group by S# having count#)=(select count(C#) fromCourse,Teacher #=# and Tname='叶平'));
149.
150.
151.
152.
153.8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;154.
155.Select S#,Sname from (select #,,score ,(select score from SC SC_2 wh ere #=#and #='002') score2
156.
157.from Student,SC where #=# andC#='001') S_2 where score2 159. 160.9、查询所有课程成绩小于60分的同学的学号、姓名; 161. 162.select S#,Sname 163. 164.from Student 165. 166.where S# not in (select # fromStudent,SC where #=# andscore>60);