資料庫SQL面試題2(關於學生、課程、成績、教師四張表)

来源:http://www.cnblogs.com/zhongjiajie/archive/2016/08/06/5745061.html
-Advertisement-
Play Games

下麵和大家分享一個比較經典的場景,資料庫的面試題目,主要的表是學生、課程、成績、教師四張表,本示例的特點是有模擬數據,加深理解和印象,答案主要基於Oracle來實現的 1、四張表分別為: 2、題目要求 3、在資料庫建表 /* */ /* CREATE TABLE */ /* */ --學生表 CRE ...


下麵和大家分享一個比較經典的場景,資料庫的面試題目,主要的表是學生、課程、成績、教師四張表,本示例的特點是有模擬數據,加深理解和印象,答案主要基於Oracle來實現

1、四張表分別為:

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:教師名字

2、題目要求

1、查詢“111”課程比“112”課程成績高的所有學生的學號;
2、查詢平均成績大於60分的同學的學號和平均成績;
3、查詢所有同學的學號、姓名、選課數、總成績;
4、查詢姓“李”的老師的個數;
5、查詢沒學過'陳奕迅'老師課的同學的學號、姓名;
6、查詢學過“001”並且也學過編號“002”課程的同學的學號、姓名;
7、查詢學過“葉平”老師所教的所有課的同學的學號、姓名;
8、查詢課程編號“002”的成績比課程編號“001”課程低的所有同學的學號、姓名
9、查詢所有課程成績小於60分的同學的學號、姓名
10、查詢沒有學全所有課的同學的學號、姓名
11、查詢至少有一門課與學號為“1001”的同學所學相同的同學的學號和姓名
12、查詢至少學過學號為“001”同學所有一門課的其他同學學號和姓名
13、把“SC”表中“葉平”老師教的課的成績都更改為此課程的平均成績
14、查詢和“1002”號的同學學習的課程完全相同的其他同學學號和姓名
15、刪除學習'陳奕迅'老師課的SC表記錄
16、向SC表中插入一些記錄,這些記錄要求符合以下條件:沒有上過編號“003”課程的同學學號、2號課的平均成績
17、按平均成績從高到低顯示所有學生的“語文1”、“生物2”、“化學1”三門的課程成績,按如下形式顯示
18、查詢各科成績最高和最低的分:以如下形式顯示:課程ID,最高分,最低分
19、按各科平均成績從低到高和及格率的百分數從高到低順序
20、查詢如下課程平均成績和及格率的百分數(用"1行"顯示)
21、查詢不同老師所教不同課程平均分從高到低顯示
22、查詢如下課程成績第 3 名到第 6 名的學生成績單:語文1(111),語文2(112),數學1 (113),數學2(11423、統計列印各科成績,各分數段人數:課程ID,課程名稱,[100-85] 優秀人數,[85-70] 良好人數,[70-60] 一般人數,[ <60] 剛及格人數
24、查詢學生平均成績及其名次 
25、查詢各科成績前三名的記錄:(不考慮成績併列情況)
26、查詢每門課程被選修的學生數
27、查詢出只選修了一門課程的全部學生的學號和姓名
28、查詢男生、女生人數
29、查詢名字中有''的學生名單
30、查詢同名同性學生名單,並統計同名人數
32、查詢每門課程的平均成績,結果按平均成績升序排列,平均成績相同時,按課程號降序排列 33、查詢平均成績大於85的所有學生的學號、姓名和平均成績 34、查詢課程名稱為'語文1',且分數低於60的學生姓名和分數 35、查詢所有學生的選課情況 36、查詢任何一門課程成績在70分以上的姓名、課程名稱和分數 37、查詢不及格的課程,並按課程號從大到小排列 38、查詢課程編號為003且課程成績在80分以上的學生的學號和姓名 39、求選了課程的學生人數 40、查詢選修“葉平”老師所授課程的學生中,成績最高的學生姓名及其成績 41、查詢各個課程及相應的選修人數 42、查詢不同課程成績相同的學生的學號、課程號、學生成績 43、查詢每門功成績最好的前兩名 44、統計每門課程的學生選修人數(超過10人的課程才統計)。要求輸出課程號和選修人數,查詢結果按人數降序排列,查詢結果按人數降序排列,若人數相同,按課程號升序排列 45、檢索至少選修兩門課程的學生學號 46、查詢全部學生都選修的課程的課程號和課程名 47、查詢沒學過'陳奕迅'老師講授的任一門課程的學生姓名 48、查詢兩門以上不及格課程的同學的學號及其平均成績 49、檢索'114'課程分數小於60,按分數降序排列的同學學號 50、刪除'2'同學的'111'課程的成績

3、在資料庫建表

/*====================================*/
/*===== CREATE TABLE ======*/
/*====================================*/
--學生表
CREATE TABLE STUDENT (
S# NUMBER(12,0) PRIMARY KEY,
SNAME VARCHAR2(10) NOT NULL,
SAGE NUMBER(3,0) NOT NULL,
SSEX CHAR(2) NOT NULL
);
COMMENT ON TABLE STUDENT IS
'學生信息表';
COMMENT ON COLUMN STUDENT.S# IS
'學號';
COMMENT ON COLUMN STUDENT.SNAME IS
'學生姓名';
COMMENT ON COLUMN STUDENT.SAGE IS
'學生年齡';
COMMENT ON COLUMN STUDENT.SSEX IS
'學生性別';

--課程表
CREATE TABLE COURSE (
C# NUMBER(12,0) PRIMARY KEY,
CNAME VARCHAR2(10) NOT NULL,
T# NUMBER(12,0) NOT NULL
);
COMMENT ON TABLE COURSE IS
'課程表';
COMMENT ON COLUMN COURSE.C# IS
'課程編號';
COMMENT ON COLUMN COURSE.CNAME IS
'課程名字';
COMMENT ON COLUMN COURSE.T# IS
'教師編號';

--成績表
CREATE TABLE SC (
S# NUMBER(12,0),
C# NUMBER(12,0),
SCORE NUMBER(3,0) NOT NULL
);
ALTER TABLE SC ADD CONSTRAINTS PK_SC PRIMARY KEY (S#,C#);
COMMENT ON TABLE SC IS
'成績表';
COMMENT ON COLUMN SC.S# IS
'學號';
COMMENT ON COLUMN SC.C# IS
'課程編號';
COMMENT ON COLUMN SC.SCORE IS
'成績';

--教師表
CREATE TABLE TEACHER (
T# NUMBER(12,0) PRIMARY KEY,
TNAME VARCHAR2(10) NOT NULL
);
COMMENT ON TABLE TEACHER IS
'教師表';
COMMENT ON COLUMN TEACHER.T# IS
'教師編號';
COMMENT ON COLUMN TEACHER.TNAME IS
'教師名字';
View Code

*註:別的資料庫將備註修改成相應的格式

4、模擬數據

     學生表

--學生表
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(1,'小紅',10,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(2,'小明',12,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(3,'小綠',13,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(4,'小藍',15,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(5,'小青',11,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(6,'小白',10,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(7,'小紫',14,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(8,'小黃',13,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(9,'小粉',12,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(10,'小橙',11,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(11,'小黑',9,'');
INSERT INTO STUDENT(S#,SNAME,SAGE,SSEX) VALUES(12,'小粉',14,'');
View Code

     課程表

INSERT INTO COURSE(C#,CNAME,T#) VALUES(111,'語文1',50);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(112,'語文2',51);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(113,'數學1',52);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(114,'數學2',53);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(115,'英語1',54);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(116,'英語2',55);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(117,'生物1',56);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(118,'生物2',57);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(119,'物理1',58);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(120,'物理2',59);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(121,'化學1',60);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(122,'化學2',61);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(123,'政治1',50);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(124,'政治2',54);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(125,'歷史1',58);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(126,'歷史2',53);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(127,'地理1',56);
INSERT INTO COURSE(C#,CNAME,T#) VALUES(128,'地理2',60);
View Code

     成績表

INSERT INTO SC(S#,C#,SCORE) VALUES(1,111,69);
INSERT INTO SC(S#,C#,SCORE) VALUES(1,112,80);
INSERT INTO SC(S#,C#,SCORE) VALUES(1,113,75);
INSERT INTO SC(S#,C#,SCORE) VALUES(1,114,79);
INSERT INTO SC(S#,C#,SCORE) VALUES(1,115,63);
INSERT INTO SC(S#,C#,SCORE) VALUES(1,116,90);
INSERT INTO SC(S#,C#,SCORE) VALUES(1,117,95);
INSERT INTO SC(S#,C#,SCORE) VALUES(1,118,77);
INSERT INTO SC(S#,C#,SCORE) VALUES(1,119,60);
INSERT INTO SC(S#,C#,SCORE) VALUES(1,120,83);
INSERT INTO SC(S#,C#,SCORE) VALUES(1,121,88);
INSERT INTO SC(S#,C#,SCORE) VALUES(1,122,75);
INSERT INTO SC(S#,C#,SCORE) VALUES(1,123,50);
INSERT INTO SC(S#,C#,SCORE) VALUES(1,124,44);
INSERT INTO SC(S#,C#,SCORE) VALUES(1,125,77);
INSERT INTO SC(S#,C#,SCORE) VALUES(1,127,79);
INSERT INTO SC(S#,C#,SCORE) VALUES(1,128,77);

INSERT INTO SC(S#,C#,SCORE) VALUES(2,111,77);
INSERT INTO SC(S#,C#,SCORE) VALUES(2,112,68);
INSERT INTO SC(S#,C#,SCORE) VALUES(2,113,76);
INSERT INTO SC(S#,C#,SCORE) VALUES(2,114,95);
INSERT INTO SC(S#,C#,SCORE) VALUES(2,115,90);
INSERT INTO SC(S#,C#,SCORE) VALUES(2,116,57);
INSERT INTO SC(S#,C#,SCORE) VALUES(2,117,99);
INSERT INTO SC(S#,C#,SCORE) VALUES(2,118,86);
INSERT INTO SC(S#,C#,SCORE) VALUES(2,120,73);
INSERT INTO SC(S#,C#,SCORE) VALUES(2,121,73);
INSERT INTO SC(S#,C#,SCORE) VALUES(2,122,82);
INSERT INTO SC(S#,C#,SCORE) VALUES(2,123,67);
INSERT INTO SC(S#,C#,SCORE) VALUES(2,124,69);
INSERT INTO SC(S#,C#,SCORE) VALUES(2,125,53);
INSERT INTO SC(S#,C#,SCORE) VALUES(2,126,64);
INSERT INTO SC(S#,C#,SCORE) VALUES(2,127,75);
INSERT INTO SC(S#,C#,SCORE) VALUES(2,128,71);

INSERT INTO SC(S#,C#,SCORE) VALUES(3,111,82);
INSERT INTO SC(S#,C#,SCORE) VALUES(3,112,67);
INSERT INTO SC(S#,C#,SCORE) VALUES(3,113,69);
INSERT INTO SC(S#,C#,SCORE) VALUES(3,114,44);
INSERT INTO SC(S#,C#,SCORE) VALUES(3,115,77);
INSERT INTO SC(S#,C#,SCORE) VALUES(3,116,98);
INSERT INTO SC(S#,C#,SCORE) VALUES(3,117,79);
INSERT INTO SC(S#,C#,SCORE) VALUES(3,118,77);
INSERT INTO SC(S#,C#,SCORE) VALUES(3,119,68);
INSERT INTO SC(S#,C#,SCORE) VALUES(3,120,76);
INSERT INTO SC(S#,C#,SCORE) VALUES(3,121,95);
INSERT INTO SC(S#,C#,SCORE) VALUES(3,122,73);
INSERT INTO SC(S#,C#,SCORE) VALUES(3,123,82);
INSERT INTO SC(S#,C#,SCORE) VALUES(3,124,63);
INSERT INTO SC(S#,C#,SCORE) VALUES(3,125,90);
INSERT INTO SC(S#,C#,SCORE) VALUES(3,126,95);
INSERT INTO SC(S#,C#,SCORE) VALUES(3,127,77);
INSERT INTO SC(S#,C#,SCORE) VALUES(3,128,60);

INSERT INTO SC(S#,C#,SCORE) VALUES(4,111,77);
INSERT INTO SC(S#,C#,SCORE) VALUES(4,112,68);
INSERT INTO SC(S#,C#,SCORE) VALUES(4,113,76);
INSERT INTO SC(S#,C#,SCORE) VALUES(4,114,95);
INSERT INTO SC(S#,C#,SCORE) VALUES(4,115,73);
INSERT INTO SC(S#,C#,SCORE) VALUES(4,116,82);
INSERT INTO SC(S#,C#,SCORE) VALUES(4,117,76);
INSERT INTO SC(S#,C#,SCORE) VALUES(4,118,95);
INSERT INTO SC(S#,C#,SCORE) VALUES(4,119,90);
INSERT INTO SC(S#,C#,SCORE) VALUES(4,120,57);
INSERT INTO SC(S#,C#,SCORE) VALUES(4,121,69);
INSERT INTO SC(S#,C#,SCORE) VALUES(4,122,80);
INSERT INTO SC(S#,C#,SCORE) VALUES(4,123,75);
INSERT INTO SC(S#,C#,SCORE) VALUES(4,124,79);
INSERT INTO SC(S#,C#,SCORE) VALUES(4,125,68);
INSERT INTO SC(S#,C#,SCORE) VALUES(4,126,54);
INSERT INTO SC(S#,C#,SCORE) VALUES(4,127,77);
INSERT INTO SC(S#,C#,SCORE) VALUES(4,128,90);

INSERT INTO SC(S#,C#,SCORE) VALUES(5,111,77);
INSERT INTO SC(S#,C#,SCORE) VALUES(5,112,98);
INSERT INTO SC(S#,C#,SCORE) VALUES(5,113,79

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 人們對於this的綁定常常有兩個誤解,一:指向函數本身,二:指向函數作用域。這兩種想法都是錯的,this並不指向函數本身,也不指向函數作用域。 因為this不指向函數本身,所以foo.count的值依然是0。 因為this不指向函數作用域,所以輸出的是2。 this實際上是在函數被調用時發生的綁定, ...
  • rt,最近搞一個高清圖傳,本著自(bu)主(mai)創(da)新(jiang)的原則,打算利用手中的iPad當作輔助飛行屏幕,USB傳輸數據。再說某疆圖傳7999(還只支持自家雲台錄像拍照),哪是我這等小學生消費得起的??? 現在剛繞明白OFDM正交子載波序列,又被接收端移動設備繞進去了。本來只考慮 ...
  • 常用的設計模式(一)代理模式應用場景:當一個類的某些功能需要由別的類來實現,但是又不確定具體會是哪個類實現。優勢:解耦合敏捷原則:開放-封閉原則實例:tableview的 數據源delegate,通過和protocol的配合,完成委托訴求。列表row個數delegate自定義的delegate (二 ...
  • 電腦控制Android設備的軟體,Total Control。 ...
  • 聽說之後AFHttpWorking版本可能會影響到蘋果的審核,今天下了最新版本的AFHttpWorking,並且做了簡單的封裝,我這裡是通過cocoapods下載了兩個工具 1=AFHttpWorking 2=JSONKit 為什麼要下jsonkit勒,以前json解析都使用touchjson,偶然 ...
  • Handler機制的原理 Android 的 Handler 機制(也有人叫消息機制)目的是為了跨線程通信,也就是多線程通信。之所以需 要跨線程通信是因為在 Android 中主線程通常只負責 UI 的創建和修改,子線程負責網路訪問和耗時操作, 因此,主線程和子線程需要經常配合使用才能完成整個 An ...
  • 佈局 selector 第一種方式 第二種方式 ...
  • 一般我們可以使用sql server自帶的性能分析追蹤工具sql profiler分析資料庫設計所產生問題的來源,進行有針對性的處理。但我們也可以通過自己寫SQL語句來有針對性的進行性能方面的查詢。通常會用到如下三個系統視圖:sys.sysprocesses ,dm_exec_sessions ,d ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...