日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL查询面试题

發布時間:2025/5/22 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL查询面试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

MySQL查詢面試題

MySQL查詢面試題【第一部分】

[sql]?view plain?copy

Student(S#,Sname,Sage,Ssex)?學生表??

Course(C#,Cname,T#)?課程表??

SC(S#,C#,score)?成績表??

Teacher(T#,Tname)?教師表???

--建表:??

CREATE?TABLE?Student??

(??

S#??int?identity(1,1)?primary?key,,??

Sname?varchar(20),??

Sage??int,??

Ssex?varchar2(2)??

)??

???

CREATE?TABLE?Course??

(??

C#??int?identity(1,1)?primary?key,,??

Cname?varchar(255),??

T#?int??

)??

???

CREATE?TABLE?SC??

(??

S#??int?identity(1,1)?primary?key,,??

C#?int,??

score?varchar(50)??

)??

???

CREATE?TABLE?Teacher??

(??

T#??int?identity(1,1)?primary?key,,??

Tname??varchar(20)??

)??

??

??

--1、查詢“001”課程比“002”課程成績高的所有學生的學號;??

select?a.S#??

from?(select?s#,score?from?SC?where?C#=’001′)?a,??

(select?s#,score?from?SC?where?C#=’002′)?b??

where?a.score>b.score?and?a.s#=b.s#;???

--2、查詢平均成績大于60分的同學的學號和平均成績;??

select?S#,avg(score)??

from?sc??

group?by?S#?having?avg(score)?>60;???

--3、查詢所有同學的學號、姓名、選課數、總成績;??

select?Student.S#,Student.Sname,count(SC.C#),sum(score)??

from?Student?left?Outer?join?SC?on?Student.S#=SC.S#??

group?by?Student.S#,Sname???

--4、查詢姓的老師的個數;??

select?count(distinct(Tname))??

from?Teacher??

where?Tname?like?‘%’;???

--5、查詢沒學過葉平老師課的同學的學號、姓名;??

select?Student.S#,Student.Sname??

from?Student??

where?S#?not?in?(select?distinct(?SC.S#)?from?SC,Course,Teacher?where?SC.C#=Course.C#?and?Teacher.T#=Course.T#?and?Teacher.Tname=’葉平’);???

--6、查詢學過“001”并且也學過編號“002”課程的同學的學號、姓名;??

select?Student.S#,Student.Sname??

from?Student,SC??

where?Student.S#=SC.S#?and?SC.C#=’001′and?exists(?Select?*?from?SC?as?SC_2?where?SC_2.S#=SC.S#?and?SC_2.C#=’002′);??

--7、查詢學過葉平老師所教的所有課的同學的學號、姓名;??

select?S#,Sname??

from?Student??

where?S#?in??

(select?S#??

from?SC?,Course?,Teacher??

where?SC.C#=Course.C#?and?Teacher.T#=Course.T#?and?Teacher.Tname=’葉平’?group?by?S#?having?count(SC.C#)=(select?count(C#)?from?Course,Teacher?where?Teacher.T#=Course.T#?and?Tname=’葉平’));???

--8、查詢所有課程成績小于60分的同學的學號、姓名;??

select?S#,Sname??

from?Student??

where?S#?not?in?(select?Student.S#?from?Student,SC?where?S.S#=SC.S#?and?score>60);???

--9、查詢沒有學全所有課的同學的學號、姓名;??

select?Student.S#,Student.Sname??

from?Student,SC??

where?Student.S#=SC.S#??

group?by?Student.S#,Student.Sname?having?count(C#)?<(select?count(C#)?from?Course);???

--10、查詢至少有一門課與學號為“1001”的同學所學相同的同學的學號和姓名;??

select?S#,Sname??

from?Student,SC??

where?Student.S#=SC.S#?and?C#?in?select?C#?from?SC?where?S#='1001';??

--11、刪除學習葉平老師課的SC表記錄;??

Delect?SC??

from?course?,Teacher??

where?Course.C#=SC.C#?and?Course.T#=?Teacher.T#?and?Tname='葉平';???

--12、查詢各科成績最高和最低的分:以如下形式顯示:課程ID,最高分,最低分??

SELECT?L.C#?--課程ID,L.score?最高分,R.score?最低分??

FROM?SC?L?,SC?R??

WHERE?L.C#?=?R.C#??

and??

L.score?=?(SELECT?MAX(IL.score)??

FROM?SC?IL,Student?IM??

WHERE?IL.C#?=?L.C#?and?IM.S#=IL.S#??

GROUP?BY?IL.C#)??

and??

R.Score?=?(SELECT?MIN(IR.score)??

FROM?SC?IR??

WHERE?IR.C#?=?R.C#??

GROUP?BY?IR.C#?);???

--13、查詢學生平均成績及其名次??

SELECT?1+(SELECT?COUNT(?distinct?平均成績)??

FROM?(SELECT?S#,AVG(score)?平均成績??

FROM?SC??

GROUP?BY?S#?)?T1??

WHERE?平均成績?>?T2.平均成績)?名次,?S#?學生學號,平均成績??

FROM?(SELECT?S#,AVG(score)?平均成績?FROM?SC?GROUP?BY?S#?)?T2??

ORDER?BY?平均成績?desc;??

--14、查詢各科成績前三名的記錄:(不考慮成績并列情況)??

SELECT?t1.S#?as?學生ID,t1.C#?as?課程ID,Score?as?分數??

FROM?SC?t1??

WHERE?score?IN?(SELECT?TOP?3?score??

FROM?SC??

WHERE?t1.C#=?C#??

ORDER?BY?score?DESC)??

ORDER?BY?t1.C#;???

--15、查詢每門功成績最好的前兩名??

SELECT?t1.S#?as?學生ID,t1.C#?as?課程ID,Score?as?分數??

FROM?SC?t1??

WHERE?score?IN?(SELECT?TOP?2?score??

FROM?SC??

WHERE?t1.C#=?C#??

ORDER?BY?score?DESC?)??

ORDER?BY?t1.C#;??

--補充:??

--已經知道原表??

year?salary??

——————??

2000?1000??

2001?2000??

2002?3000??

2003?4000??

--解:??

select?b.year,sum(a.salary)??

from?salary?a,salary?b??

where?a.year<=b.year??

group?by?b.year??

order?by?b.year;??

--在面試過程中多次碰到一道SQL查詢的題目,查詢A(ID,Name)表中第3140條記錄,ID作為主鍵可能是不是連續增長的列,完整的查詢語句如下:??

--方法一:??

select?top?10?*??

from?A??

where?ID?>(select?max(ID)?from?(select?top?30?ID?from?A?order?by?ID?)?T)?order?by?ID??

--方法二:??

select?top?10?*??

from?A??

where?ID?not?In?(select?top?30?ID?from?A?order?by?ID)??

order?by?ID??

?

注意:

我們知道,在ms sql server中或access中,
若要查詢前10條記錄,使用top 10即可,
但在mysql中不支持這個寫法,它用limit 10。?
?
我們可以利用MySQL中SELECT支持的一個子句——LIMIT——來完成這項功能。?
LIMIT可以實現top N查詢,也可以實現M至N(某一段)的記錄查詢,具體語法如下:?

?

  • SELECT?*?FROM?MYTABLE??
  • ORDER?BY?ID??
  • LIMIT?offset,?recnum??
  • ?

    其中offset為從第幾條(M+1)記錄開始(即下標從0開始),recnum為返回的記錄條數。例:?

    ?

  • select?*?from?mytable??
  • order?by?afield???
  • limit?2,?5???
  • 即意為,從第3條記錄開始的5條記錄。

    ?

    轉載于:https://my.oschina.net/demons99/blog/1924606

    總結

    以上是生活随笔為你收集整理的MySQL查询面试题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。