php考察新人的题目,PHP面试指南2020-sql考察题
給定四個表:student(學(xué)生表)
teacher(老師表)
course(課程表)
sc(成績表)
根據(jù)題目要求,寫出SQL語句。
「問題列表」
1、查詢每個學(xué)生的學(xué)號、姓名和每門課的成績2、查詢都學(xué)過2號同學(xué)(sid=2)學(xué)習(xí)過的課程的同學(xué)的學(xué)號3、查詢“語文(cid=1)”課程比“數(shù)學(xué)(cid=2)”課程成績高的所有學(xué)生的學(xué)號;4、查詢平均成績大于60分的同學(xué)的學(xué)號和平均成績;5、查詢所有同學(xué)的學(xué)號、姓名、選課數(shù)、總成績;6、查詢姓“李”的老師的個數(shù);7、查詢沒學(xué)過“葉平”老師課的同學(xué)的學(xué)號、姓名;
8、查詢學(xué)過“語文(cid=1)”并且也學(xué)過“數(shù)學(xué)(cid=2)”課程的同學(xué)的學(xué)號、姓名;
9、查詢學(xué)過“葉平”老師所教的所有課的同學(xué)的學(xué)號、姓名;10、查詢課程編號“數(shù)學(xué)(cid=2)”的成績比課程編號“語文(cid=1)”課程低的所有同學(xué)的學(xué)號、姓名;11、查詢所有課程成績小于60分的同學(xué)的學(xué)號、姓名;
12、查詢沒有學(xué)全所有課的同學(xué)的學(xué)號、姓名;
13、按平均成績從高到低顯示所有學(xué)生的“語文“、“數(shù)學(xué)”、“英語”三門的課程成績,按如下形式顯示:?學(xué)生
ID,語文,數(shù)學(xué),英語,有效課程數(shù),有效平均分
14、查詢各科成績最高和最低的分:以如下形式顯示:課程ID,最高分,最低分
15、查詢男生、女生人數(shù),?以如下形式顯示:男生人數(shù),女生人數(shù)16、查詢課程名稱為“數(shù)學(xué)”,且分?jǐn)?shù)低于60的學(xué)生姓名和分?jǐn)?shù)
17、查詢兩門以上不及格課程的同學(xué)的學(xué)號及其平均成績;18、檢索“cid=4”課程分?jǐn)?shù)小于60,按分?jǐn)?shù)降序排列的同學(xué)學(xué)號
1、查詢每個學(xué)生的學(xué)號、姓名和每門課的成績;
(1)利用隱式內(nèi)聯(lián),只輸出兩表中都有的字段
SQL語句:
SELECT
student.sid?AS?學(xué)生ID,
student.sname?AS?學(xué)生姓名,
(SELECT?course.cname?FROM?course?WHERE?course.cid=sc.cid)?AS?課程名稱,
sc.score?AS?成績
FROM?student,sc
WHERE?student.sid?=?sc.sid
(2)利用左連接,假如左表有,右表沒有,則按左表為準(zhǔn),右表缺省字段置為NULL
SQL語句:
SELECT
student.sid?AS?學(xué)生ID,
student.sname?AS?學(xué)生姓名,
(SELECT?course.cname?FROM?course?WHERE?course.cid=sc.cid)?AS?課程名稱,
sc.score?AS?成績
FROM?student
LEFT?JOIN?sc
ON?student.sid?=?sc.sid
因?yàn)?student 表 和 sc 表沒有冗余字段,所以(1)和(2)兩種查詢方法結(jié)果一致。
2、查詢都學(xué)過2號同學(xué)(sid=2)學(xué)習(xí)過的課程的同學(xué)的學(xué)號
SQL語句:
SELECT?sid
FROM?sc
WHERE?cid?IN?(SELECT?cid?FROM?sc?WHERE?sid=2)?GROUP?BY?sid
HAVING?COUNT(*)?=?(SELECT?COUNT(*)?FROM?sc?WHERE?sid=2)
3、查詢“語文(cid=1)”課程比“數(shù)學(xué)(cid=2)”課程成績高的所有學(xué)生的學(xué)號;
SQL語句:
SELECT?a.sid
FROM
(SELECT?sid,?score?FROM?sc?WHERE?cid=1)?a,?(SELECT?sid,?score?FROM?sc?WHERE?cid=2)?b
WHERE?a.sid=b.sid?AND?a.score?>?b.score;
4、查詢平均成績大于60分的同學(xué)的學(xué)號和平均成績;
SQL語句:
SELECT?sid,?AVG(score)?FROM?`sc`
GROUP?BY?sid
HAVING?AVG(score)?>?60;
5、查詢所有同學(xué)的學(xué)號、姓名、選課數(shù)、總成績;
SQL:
SELECT?a.sid,?a.sname,?COUNT(a.cid),?SUM(a.score)?FROM(SELECT?student.sid,?student.sname,?sc.cid,?sc.score?FROM?student?JOIN?sc?WHERE?student.sid=sc.sid)?a
GROUP?BY?sid;
6、查詢姓“周”的老師的個數(shù);
SQL:
SELECT?COUNT(*)?FROM?`teacher`?WHERE?tname?LIKE?'周%';
7、查詢沒學(xué)過“葉平”老師課的同學(xué)的學(xué)號、姓名;
SQL:
#?參考答案
SELECT?student.sid,student.sname
FROM?student
WHERE?sid?NOT?IN
(
SELECT?DISTINCT(sc.sid)
FROM?sc,?course,?teacher
WHERE??sc.cid=course.cid?AND?teacher.tid=course.tid?AND?teacher.tname='葉平'
);
8、查詢學(xué)過“語文(cid=1)”并且也學(xué)過“數(shù)學(xué)(cid=2)”課程的同學(xué)的學(xué)號、姓名;
SQL:
SELECT?student.sid,student.sname
FROM?student,?sc
WHERE?student.sid=sc.sid?AND?sc.cid=1?AND
EXISTS?(?SELECT?*?FROM?sc?AS?sc_2?WHERE?sc_2.sid=sc.sid?AND?sc_2.cid=2);
9、查詢學(xué)過“葉平”老師所教的所有課的同學(xué)的學(xué)號、姓名;
SQL:
SELECT?student.sid,student.sname
FROM?student
WHERE?sid?IN
(
SELECT?sid
FROM?sc?,course?,teacher
WHERE?sc.cid=course.cid?AND?teacher.tid=course.tid?AND?teacher.tname='葉平'
GROUP?BY?sid
HAVING?COUNT(sc.cid)=
(
SELECT?COUNT(cid)
FROM?course,teacher
WHERE?teacher.tid=course.tid?AND?teacher.tname='葉平'
)
);
10、查詢課程編號“數(shù)學(xué)(cid=2)”的成績比課程編號“語文(cid=1)”課程低的所有同學(xué)的學(xué)號、姓名;
SQL:
SELECT?sid,sname
FROM?student
WHERE?sid=(
SELECT?a.sid
FROM
(SELECT?sid,?score?FROM?sc?WHERE?cid=1)?a,
(SELECT?sid,?score?FROM?sc?WHERE?cid=2)?b
WHERE?a.sid=b.sid?AND?a.score?>?b.score)
「11」、查詢所有課程成績小于60分的同學(xué)的學(xué)號、姓名;
SQL:
SELECT?sid,sname
FROM?student
WHERE?sid?NOT?IN
(
SELECT?student.sid?FROM?student?AS?s,sc?WHERE?s.sid=sc.sid?AND?score>60);
12、查詢沒有學(xué)全所有課的同學(xué)的學(xué)號、姓名;
SQL:
SELECT?student.sid,?student.sname
FROM?student,sc
WHERE?student.sid=sc.sid
GROUP?BY?sid
HAVING?COUNT(cid)?
13、按平均成績從高到低顯示所有學(xué)生的“語文“、“數(shù)學(xué)”、“英語”三門的課程成績,按如下形式顯示: 學(xué)生ID,語文,數(shù)學(xué),英語,有效課程數(shù),有效平均分
SQL:
SELECT?sid?AS?學(xué)生ID,(SELECT?score?FROM?sc?WHERE?sc.sid=sc_2.sid?AND?cid=1)?AS?語文,(SELECT?score?FROM?sc?WHERE?sc.sid=sc_2.sid?AND?cid=2)?AS?數(shù)學(xué),(SELECT?score?FROM?sc?WHERE?sc.sid=sc_2.sid?AND?cid=3)?AS?英語,COUNT(*)?AS?有效課程數(shù),?AVG(score)FROM?sc?AS?sc_2
GROUP?BY?sid
ORDER?BY?AVG(sc_2.score)
14、查詢各科成績最高和最低的分:以如下形式顯示:課程ID,最高分,最低分
SQL:
SELECT?cid?AS?課程ID,?MAX(score)?AS?最高分,?MIN(score)?AS?最低分
FROM?sc
GROUP?BY?cid
15、查詢男生、女生人數(shù) :以如下形式顯示:男生人數(shù),女生人數(shù)
SQL:
SELECT
(SELECT?COUNT(ssex)?FROM?student?GROUP?BY?ssex?HAVING?ssex='男')?AS?男生人數(shù),?(SELECT?COUNT(ssex)?FROM?student?GROUP?BY?ssex?HAVING?ssex='女')?AS?女生人數(shù);
16、查詢課程名稱為“數(shù)學(xué)”,且分?jǐn)?shù)低于60的學(xué)生姓名和分?jǐn)?shù)
SQL:
SELECT?student.sid,?student.sname
FROM?student,sc
WHERE?student.sid=sc.sid?AND?cid=(SELECT?cid?FROM?course?WHERE?cname='數(shù)學(xué)')?AND?score?>?60
17、查詢兩門及兩門以上不及格課程的同學(xué)的學(xué)號及其平均成績
SQL:
SELECT?sid,?AVG(score)?FROM?sc?WHERE?sid?IN?(SELECT?sid?FROM?sc?WHERE?score?1)?GROUP?BY?sid;
18、檢索“cid=4”課程分?jǐn)?shù)小于60,按分?jǐn)?shù)降序排列的同學(xué)學(xué)號
SQL:
SELECT?sid?FROM?sc?WHERE?cid=4?AND?score?
總結(jié)
以上是生活随笔為你收集整理的php考察新人的题目,PHP面试指南2020-sql考察题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php视图,thinkPHP框架中视图的
- 下一篇: php下载的文件不是汉字,php实现支持