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

歡迎訪問 生活随笔!

生活随笔

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

数据库

数据库常用面试题(SQL Server) (转载)

發布時間:2025/4/5 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库常用面试题(SQL Server) (转载) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載地址為:http://www.cnblogs.com/finejob/articles/974900.html

題目1:
======
  為管理崗位業務培訓信息,建立3個表:
  S?(S#,SN,SD,SA)?? ?S#,SN,SD,SA?分別代表學號、學員姓名、所屬單位、學員年齡
  C?(C#,CN?)??? C#,CN?分別代表課程編號、課程名稱
  SC?(?S#,C#,G?)??? S#,C#,G?分別代表學號、所選修的課程編號、學習成績

  1.?使用標準SQL嵌套語句查詢選修課程名稱為 稅收基礎 的學員學號和姓名

Select?SN,SD?FROM?S
  
Where?[S#]?IN (?Select?[S#]?FROM
?C,SC
  ?????????????????????????
Where?C.[C#]=SC.[C#]?? AND?CN=N'稅收基礎')


  2.?使用標準SQL嵌套語句查詢選修課程編號為’C2’的學員姓名和所屬單位  

Select?S.SN,S.SD?FROM?S,SC
  ???
Where?S.[S#]=SC.[S#]?AND?SC.[C#]='C2'
  ???????


  3.?使用標準SQL嵌套語句查詢不選修課程編號為’C5’的學員姓名和所屬單位  

Select?SN,SD?FROM?S
  
Where?[S#]?NOT?IN?
?????????(?
Select?[S#]?FROM?SC
??????????????  
Where?[C#]='C5')


  4.?使用標準SQL嵌套語句查詢選修全部課程的學員姓名和所屬單位  

網上流傳的錯誤答案:
Select?SN,SD?FROM?S
  
Where?[S#]?IN??(?Select?[S#]?FROM?SC RIGHT?JOIN
?
????????????????????????????????????????????????????????????????????????C??
ON?SC.[C#]=C.[C#]
?
???????????????????????????????????????????????????????????
GROUP?BY?[S#]

  ????????????????????????????????????????????????????
HAVING?COUNT(*)=COUNT([S#])?)

經過調試驗證的正確答案:
SELECT?SN,?SD?FROM?S?
???????????
WHERE?S#?
??????????????????????????????
IN?(SELECT?SC.S#?
??????????????????????????????????????????????????????
FROM?SC?RIGHT?JOIN?C?
???????????????????????????????????????????????????????????????????
ON?SC.C#?=?C.C#
??????????????????????????????????????????????????????
GROUP?BY?SC.S#??--在結果集中以學生分組,分組后的?SC.C#選課數=C.C#課程數?即為全部課程
??????????????????????????????????????????????????????HAVING???COUNT(distinct(SC.C#))??--注意:一個學生同一門課程可能有多條成績記錄,需要distinct
??????????????????????????????????????????????????????????????????????????=?(?select?count(*)?from?C?)?--注意:HAVING條件不能用COUNT(distinct(SC.C#))?=?COUNT(distinct(C.C#)
???????????????????????????????????????)--子查詢獲得選修全部課程的學生學號


  5.?查詢選修了課程的學員人數  

Select?學員人數=COUNT(DISTINCT?[S#])?FROM?SC


  6.?查詢選修課程超過5門的學員學號和所屬單位

Select?SN,SD?FROM?S
  
Where?[S#]?IN?(? Select?[S#]?FROM?SC    ???????
????????????????????????????????????? ?????????????????????
GROUP?BY?[S#]
  ?????????????????????????????????????????????? ?
HAVING? ?COUNT( DISTINCT?[C#] )? > 5?? )


題目2:
======

  已知關系模式:
  S?(SNO,SNAME)?學生關系。SNO?為學號,SNAME?為姓名
  C?(CNO,CNAME,CTEACHER)?課程關系。CNO?為課程號,CNAME?為課程名,CTEACHER?為任課教師
  SC(SNO,CNO,SCGRADE)?選課關系。SCGRADE?為成績

  1.?找出沒有選修過“李明”老師講授課程的所有學生姓名?

Select?SNAME?FROM?S
  
Where?NOT?EXISTS?(?Select?*?FROM?SC,C
  ????????????????????????
Where?SC.CNO=C.CNO
  ?????????????????????????????
AND?CNAME='李明'
  ?????????????????????????????
AND?SC.SNO=S.SNO)

  
  2.?列出有二門以上(含兩門)不及格課程的學生姓名及其平均成績  

Select?S.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE)
  
FROM? S ,? SC ,?
????????????????????????(
Select?SNO FROM?SC
  ???????????????????????????????
Where?SCGRADE<60
  ???????????????????????????????
GROUP?BY?SNO
?????????   ?????????????????????
HAVING?COUNT(DISTINCT?CNO)>=2)??? A?
??????????? Where?S.SNO=A.SNO?AND?SC.SNO=A.SNO
  
GROUP?BY?S.SNO,S.SNAME


  3.?列出既學過“1”號課程,又學過“2”號課程的所有學生姓名  

Select?S.SNO,S.SNAME
  
FROM?S,
????????????????????????(
Select?SC.SNO? FROM?SC,C
????????????????????????   
Where?SC.CNO=C.CNO
?????????????????????????????????????   
AND?C.CNAME?IN('1','2')
????????????????????????   
GROUP?BY?SNO
???????????????????????   
HAVING?COUNT(DISTINCT?CNO)=2
???????????????   )SC?
??????????? Where?S.SNO=SC.SNO


  4.?列出“1”號課成績比“2”號同學該門課成績高的所有學生的學號?????????

Select?S.SNO,S.SNAME
  
FROM?S,
?????????????????????????(
Select?SC1.SNOFROM?SC?SC1,C?C1,SC?SC2,C?C2
????????????????????????????????????????????   
Where?SC1.CNO=C1.CNO?AND?C1.NAME='1'
????????????????????????????????????????????????????????   
AND?SC2.CNO=C2.CNO?AND?C2.NAME='2'
???????????????????????????????????????????????????????   
AND?SC1.SCGRADE>SC2.SCGRADE? )? SC?
??????????Where?S.SNO=SC.SNO


  5.?列出“1”號課成績比“2”號課成績高的所有學生的學號及其“1”號課和“2”號課的成績

Select?S.SNO,S.SNAME,SC.[1號課成績],SC.[2號課成績]
??? ????????
FROM?S,
?????????????????????????(?
Select?SC1.SNO,[1號課成績]=SC1.SCGRADE,[2號課成績]=SC2.SCGRADE
??????????????????????????????????   
FROM?SC?SC1,C?C1,SC?SC2,C?C2
?????????????????????????????????   
Where?SC1.CNO=C1.CNO?AND?C1.NAME='1'
????????????????????????????????????????????????   
AND?SC2.CNO=C2.CNO?AND?C2.NAME='2'
????????????????????????????????????????????????  
AND?SC1.SCGRADE>SC2.SCGRADE)?? SC?
????????
Where?S.SNO=SC.SNO



題目3:
======

有如下表記錄:
ID????????Name???????EmailAddress??????????????????LastLogon
100????????test4???????test4@yahoo.cn???????2007-11-25 16:31:26
13??????????test1???????test1@yahoo.cn???????2007-3-22 16:27:07
19??????????test1???????test1@yahoo.cn???????2007-10-25 14:13:46
42??????????test1???????test1@yahoo.cn???????2007-11-20 14:20:10
45??????????test2???????test2@yahoo.cn???????2007-4-25 14:17:39
49??????????test2???????test2@yahoo.cn???????2007-5-25 14:22:36

用一句sql查詢出每個用戶最近一次登錄的記錄(每個用戶只顯示一條最近登錄的記錄)

方法一:
SELECT?a.*?from?users??a??inner?join
??????????????????????????????(
SELECT?[Name],?LastLogon=MAX(LastLogon)????FROM??users????GROUP?BY?[Name])??b
???????????????????????????????
on?a.[Name]=b.[Name]?and?a.[LastLogon]=b.[LastLogon]

方法二:
SELECT?a.*?from?users??a???inner?join
???????????????????????????????(
SELECT??Name,MAX(LogonID)?LogonID?????FROM??users????GROUP?BY?[Name])??b
?????????????????????????????
on?a.LogonID=b.LogonID
?????????????????????????????
--where?a.LogonId=b.LogonId

轉載于:https://www.cnblogs.com/davidwang456/archive/2013/03/19/2969481.html

總結

以上是生活随笔為你收集整理的数据库常用面试题(SQL Server) (转载)的全部內容,希望文章能夠幫你解決所遇到的問題。

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