1. 程式人生 > >資料庫的基礎50道面試題給大家分享下

資料庫的基礎50道面試題給大家分享下

SQL資料庫面試題以及答案(50例題)

Student(S#,Sname,Sage,Ssex)學生表
S#:學號
Sname:學生姓名
Sage:學生年齡
Ssex:學生性別
Course(C#,Cname,T#)課程表
C#:課程編號
Cname:課程名稱
T#:教師編號
SC(S#,C#,score)成績表
S#:學號
C#:課程編號
score:成績
Teacher(T#,Tname)教師表
T#:教師編號:
Tname:教師名字

問題:

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 Teahcer.Tname ='葉平');

6、查詢學過“葉平”老師所教的所有課的同學的學號、姓名:

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='葉平'));

7、查詢學過“011”並且也學過編號“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');

8、查詢課程編號“002”的成績比課程編號“001”課程低的所有同學的學號、姓名:

Select S#,Sname 
from (select Student.S#,Student.Sname,score ,
(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2    
from Student,SC 
where Student.S#=SC.S# and C#='001') S_2 
where score2 < score; 

9、查詢所有課程成績小於60的同學的學號、姓名:

select S#, sname 
from student 
where s# not in 
(select student.s# from student, sc where s.s# = sc.s# and score>60);

10、查詢沒有學全所有課的同學的學號、姓名:

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);

11、查詢至少有一門課與學號為“1001”同學所學相同的同學的學號和姓名:

select s#, Sname 
from Student, SC 
where student.s# = sc.s# 
and c# in (select c# from SC where s#='1001');

12、查詢至少學過學號為“001”同學所有一門課的其他同學學號和姓名;

select distinct sc.s# , sname 
from student, sc 
where student.s#=sc.s# 
and c# in (select C# from sc where s#='001');

13、把“SC”表中“葉平”老師教的課的成績都更改為此課程的平均成績:

Update Sc Set Score=(Select Avg(s2_Score) From sc s2 Where s2.c#=sc.c#)  
Where c# IN
(Select c# From sc cs INNER JOIN Teacher tc ON cs.t#=tc.t# WHERE tname ='葉平')

14、查詢和“1002”號的同學學習的課程完全相同的其他同學學號和姓名:

select s# from sc where c#  in 
(select c# from sc where s#='1002') 
group by s# having count(*)=
(select count(*) from sc where s#='1002');

15、刪除學習“葉平”老師課的SC表記錄:

delect sc 
from course, Teacher 
where course.c#=sc.c# 
and course.t#=teacher.t# 
and tname='葉平';

16、向SC表中插入一些記錄,這些記錄要求符合以下條件:沒有上過編號“003”課程的同學學號、002號課的平均成績:

Insert SC select S#,'002',
(Select avg(score) from SC where C#='002') 
from Student where S# not in (Select S# from SC where C#='002');

17、按平均成績從高到低顯示所有學生的“資料庫”、“企業管理”、“英語”三門的課程成績,按如下形式顯示:學生ID,資料庫,企業管理,英語,有效課程數,有效平均分:

select s# as 學生ID,
(select score from sc where sc.s#=t.s# and c#='004') as 資料庫,
(select score from sc where sc.s#=t.s# and c#='001') as 企業管理,
(select score from sc where sc.s#=t.s# and c#='006') as 英語,
count(*) as 有效課程數, avg(t.score) as 平局成績
from sc as t
group by s# 
order by avg(t.score)

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

select L.c# as 課程ID, L.score as 最高分,
R.score as 最低分
from sc L, sc R 
where L.c# = R.c# 
and L.score = (select max(IL.score) 
        from sc IL, student as IM 
        where L.c#=IL.c# and IM.s#=IL.s#
        group by IL.c#)
and R.score = (select min(IR.score)
        from sc as IR
        where R.c#=IR.c#
        group by IR.c#);

19、按各科平均成績從低到高和及格率的百分數從高到低順序:

SELECT t.C# AS 課程號,
max(course.Cname)AS 課程名,
isnull(AVG(score),0) AS 平均成績,
100 * SUM(CASE WHEN  isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分數     
FROM SC T,Course     
where t.C#=course.C#     
GROUP BY t.C#      
ORDER BY 100 * SUM(CASE WHEN  isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC 

20、查詢如下課程平均成績和及格率的百分數(用”1行”顯示): 企業管理(001),馬克思(002),OO&UML (003),資料庫(004):

21、查詢不同老師所教不同課程平均分從高到低顯示:

 SELECT max(Z.T#) AS 教師ID,
 MAX(Z.Tname) AS 教師姓名,
 C.C# AS 課程ID,
 AVG(Score) AS 平均成績     
 FROM SC AS T,Course AS C ,Teacher AS Z    
 where T.C#=C.C# and C.T#=Z.T#   
 GROUP BY C.C#    
 ORDER BY AVG(Score) DESC

22、查詢如下課程成績第3名到第6名的學生成績單:企業管理(001),馬克思(002),UML(003),資料庫(004):

23、統計下列各科成績,各分數段人數:課程ID,課程名稱,[100-85],[85-70],[70-60],[ 小於60] :

SELECT SC.C# as 課程ID, Cname as 課程名稱,
SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85]  ,
SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70],
SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60],
SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -]     
FROM SC,Course     
where SC.C#=Course.C#     
GROUP BY SC.C#,Cname;

24、查詢學生平均成績及其名次:

SELECT 1+(SELECT COUNT( distinct 平均成績)                
FROM (SELECT S#,AVG(score) AS 平均成績                       
FROM SC                   
GROUP BY S#  ) AS T1  WHERE 平均成績 > T2.平均成績) as 名次,       
S# as 學生學號,平均成績      
FROM (SELECT S#,AVG(score) 平均成績             
FROM SC         
GROUP BY S# ) AS T2      
ORDER BY 平均成績 desc; 

25、查詢各科成績前三名的記錄(不考慮成績並列情況):

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)        

26、查詢每門課程被選修的學生數:

select c#, count(s#) 
from sc 
group by c#;

27、查詢出只選修一門課程的全部學生的學號和姓名:

select sc.s#, student.sname, count(c#) as 選課數
from sc,student 
where sc.s# =student.s# 
group by sc.s#,Student.sname 
having count(c#)=1;

28、查詢男生、女生人數:

select count(Ssex) as 男生人數 
from student 
group by Ssex 
having Ssex='男';
select count(Ssex) as 女生人數 
from student 
group by Ssex 
having Ssex='女';

29、查詢姓“張”的學生名單:

select sname 
from student 
where sname like '張%';

30、查詢同名同姓的學生名單,並統計同名人數:

select sanme,count(*) 
from student 
group by sname 
havang count(*)>1;

31、1981年出生的學生名單(注:student表中sage列的型別是datetime):

select sname, convert(char(11),DATEPART(year,sage)) as age
from student 
where convert(char(11),DATEPART(year,Sage))='1981';

32、查詢平均成績大於85的所有學生的學號、姓名和平均成績:

select Sname,SC.S# ,avg(score)     
from Student,SC      
where Student.S#=SC.S# 
group by SC.S#,Sname 
having    avg(score)>85;

33、查詢每門課程的平均成績,結果按平均成績升序排序,平均成績相同時,按課程號降序排列:

select C#, avg(score) 
from sc 
group by c# 
order by avg(score), c# desc;

34、查詢課程名稱為“資料庫”,且分數低於60的學生名字和分數:

select sname, isnull(score,0) 
from student, sc ,course 
where sc.s#=student.s#  and sc.c#=course.c# and course.cname='資料庫' and score<60;

35、查詢所有學生的選課情況:

select sc.s#,sc.c#,sname,cname 
from sc,student course 
where sc.s#=student.s# and sc.c#=course.c#;

36、查詢任何一門課程成績在70分以上的姓名、課程名稱和分數:

select distinct student.s#,student.sname,sc.c#,sc.score 
from student,sc 
where sc.score>=70 and sc.s#=student.s#;

37、查詢不及格的課程,並按課程號從大到小的排列:

select c# 
from sc 
where score<60 
order by c#;

38、查詢課程編號為“003”且課程成績在80分以上的學生的學號和姓名:

select sc.s#,student.sname 
from sc,student 
where sc.s#=student.s# and score>80 and c#='003';

39、求選了課程的學生人數:

select count(*) from sc;

40、查詢選修“葉平”老師所授課程的學生中,成績最高的學生姓名及其成績:

select student.sname,score 
from student,sc,course c, teacher 
where student.s#=sc.S# and sc.c#=c.c#
and c.T#=teacher.T#
and teacher.tname='葉平' 
and sc.score=(select max(score) from sc where c#=c.c#);

41、查詢各個課程及相應的選修人數:

select count(*) from sc group by c#;

42、查詢不同課程成績相同的學生和學號、課程號、學生成績:

select distinct a.s#,b.score 
from sc a ,sc b 
where a.score=b.score 
and a.c#<>b.c#;

43、查詢每門課程成績最好的前兩名:

select t1.s# as 學生ID,t1.c#  課程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#;

44、統計每門課程的學生選修人數(超過10人的課程才統計)。要求輸出課程號和選修人數,查詢結果按人數降序排序,若人數相同,按課程號升序排序:

select c# as 課程號,count(*) as 人數
from sc 
group by c#
order by count(*) desc c#;

45、檢索至少選修兩門課程的學生學號:

select s# 
from sc 
group by s# 
having count(*)>=2;

46、查詢全部學生選修的課程和課程號和課程名:

select c# ,cname
from course 
where c# in (select c# from sc group by c#);

47、查詢沒學過”葉平”老師講授的任一門課程的學生姓名:

select sname 
from student 
where s# not in (select s# from course,teacher,sc where course.t#=teacher.t# and sc.c#=course.c# 
and tname='葉平');

48、查詢兩門以上不及格課程的同學的學號以及其平均成績:

select s#,avg(isnull(score,0)) 
from sc 
where s# in (select s# from sc where score<60 group by s# having count(*)>2)
group by s#;

49、檢索“004”課程分數小於60,按分數降序排列的同學學號:

select s# 
from sc 
where c#='004' 
and score<60 
order by score desc;

50、刪除“002”同學的“001”課程的成績:

delect from sc 
where s#='002' 
and c#='001';

相關推薦

資料庫基礎50試題大家分享

SQL資料庫面試題以及答案(50例題) Student(S#,Sname,Sage,Ssex)學生表 S#:學號 Sname:學生姓名 Sage:學生年齡 Ssex:學生性別 Course(C#,Cname,T#)課程表 C#:課程編號 Cname:課程名稱 T#:教師編號 SC(S#,C#,score)成

前兩天遇到了錯誤好久才整明白大家分享

openssl verify 展開 errno ssl cert error led detail 錯誤 錯誤:(Network error [errno 60]: SSL certificate problem, verify that the CA cert is OK

轉載:收集了50基礎的java試題

下面的內容是對網上原有的Java面試題集及答案進行了全面修訂之後給出的負責任的題目和答案,原來的題目中有很多重複題目和無價值的題目,還有不少的參考答案也是錯誤的,修改後的Java面試題集參照了JDK最新版本,去掉了EJB 2.x等無用內容,補充了資料結構和演算法相關的題目

淺談程式碼規範&&基礎除錯&&幾試題

廢話篇:本文由CSUST的FINAL實驗室的LX創作,用途是給予CSUST的小鮮肉們一些關於C語言程式碼規範的一些基本知識,若本文有什麼錯誤或是表述不清之處,歡迎留言討論指正。 程式碼規範: 在講程式碼規範之前,我想給大家看一句感人肺腑的註釋名言來告誡各位以後的優秀程

java最最最基礎的幾試題,花點時間加深一下印象吧

可能很多人都在苦惱,學了java之後卻找不到工作,但是你有沒有想過,找到工作的前提是你的知識儲備量已經足夠多,能夠達到用人單位的標準,人家才會要你,不是嗎?所以,要找到工作,首先得把知識儲備量提升上去,這樣當你去面試的時候,才不至於一問三不知。這篇文章小編帶大家來看看一些最最最基礎的java面試題。

大家分享一道來自BAT的Python試題

Python是如何進行記憶體管理的? 答:從三個方面來說,一物件的引用計數機制,二垃圾回收機制,三記憶體池機制。 更多Python視訊、原始碼、資料加群960410445免費獲取 1、物件的引用計數機制 Python內部使用引用計數,來保持追蹤記憶體中的物件,所有物件都

Java 208 試題:Java 基礎模組答案

浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>   

why哥被阿里一道基礎試題幹懵了,一氣之下寫出萬字長文。

這是why的第 65 篇原創文章 荒腔走板 大家好,我是 why,歡迎來到我連續周更優質原創文章的第 65 篇。老規矩,先荒腔走板聊聊技術之外的東西。 上面這圖是去年的成都馬拉松賽道上,攝影師抓拍的我。哎,真是陽光向上的 95 後帥小夥啊。 今年由於疫情原因,上半年的馬拉松比賽全部停擺了。今年可能也沒有機

每一個JavaScript開發者都應該知道的10試題

結束 vid 認識 本質 特定 更新 mixin 構造函數 程序猿 JavaScript十分特別。而且差點兒在每一個大型應用中起著至關關鍵的數據。那麽,究竟是什麽使JavaScript顯得與眾不同,意義非凡? 這裏有一些問題將幫助你了解其真正的奧妙所在:

【前端小小白的學習之路】整理幾試題之(HTTP協議)【轉】

ase 賬號 檢測 提交數據 大型數據集 tor 添加 描述 分享 轉自:http://www.cnblogs.com/ranyonsue/p/5984001.html HTTP簡介 HTTP協議是Hyper Text Transfer Protocol(超文本傳輸

Java中最常見的十試題

在那 不一定 內存溢出 修飾 嚴重 nal declared ima java學習 第一,談談final, finally, finalize的區別。 final?修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不

Java繼承中的幾試題

有一個 str round .sh -s string ava 構造代碼塊 問題 第一題: 1 /* 2 看程序寫結果: 3 A:訪問成員變量的原則:就近原則。 4 B:this和super的問題: 5

招人已了,招人心得跟47試題加答案放出來

iOS 面試題 程序員 人才濟濟的iOS開發者,你憑什麽脫穎而出? 與崗位要求相去甚遠,如何挑戰極限? 想去心怡公司,如何馬到成功? 那麽,你的絕招是什麽呢? 在這個iOS崗位供不應求的市場,對iOS開發者對要求日益增長,小編分享一下最近對招人心得,放出47道面試題+答案,供廣大iOS開發者參考

招人已了,招人心得跟 47 試題加答案放出來

好處 prop patch 操作 opera 結果 GC ssi rop 人才濟濟的 iOS 開發者,你憑什麽脫穎而出? 與崗位要求相去甚遠,如何挑戰極限? 想去心怡公司,如何馬到成功? 那麽,你的絕招是什麽呢? 在這個 iOS 崗位供不應求的市場,對 iOS 開發者對要求

關於H5的20試題及答案

查找 除了 模式 鏈接 canvas ike 空元素 search 人的 1 DOCTYPE有什麽作用?標準模式與混雜模式如何區分?它們有何意義? 告訴瀏覽器使用哪個版本的HTML規範來渲染文檔。DOCTYPE不存在或形式不正確會導致HTML文檔以混雜模式呈現。 標準模式

315試題(一)

cnblogs p地址 繼承 第三方庫 出現的次數 韓文 事務處理 輸入 __call 1、為什麽學習Python?語言本身簡潔,優美,功能超級強大 跨平臺 非常火爆的社區 很多有名的大公司在用 2、通過什麽途徑學習的Python?培訓機構 + 自學 3、Python和Ja

Java每天10試題,跟我走,offer有!(二)

  11、面向物件的特徵有哪些方面   1.抽象: 抽象就是忽略一個主題中與當前目標無關的那些方面, 以便更充分地注意與當前目標有關的方面。 抽象並不打算了解全部問題,而只是選擇其中的一部分, 暫時不用部分細節。 抽象包括兩個方面, 一是過程抽象, 二是資料抽

撩課-Java每天10試題第1天

1.簡述JDK、JRE、JVM? 一、JDK JDK(Java Development Kit) 是整個JAVA的核心, 包括了Java執行環境(Java Runtime Envirnment), 一堆Java工具(javac/java/jdb等) 和Java基礎的類庫(即Java API 包括rt

撩課-Java每天10試題第2天

11、面向物件的特徵有哪些方面    1.抽象: 抽象就是忽略一個主題中與當前目標無關的那些方面, 以便更充分地注意與當前目標有關的方面。 抽象並不打算了解全部問題,而只是選擇其中的一部分, 暫時不用部分細節。 抽象包括兩個方面, 一是過程抽象, 二是資料抽象。 2.繼承: 繼承是一種聯結類的層次