下麵和大家分享一個比較經典的場景,資料庫的面試題目,主要的表是學生、課程、成績、教師四張表,本示例的特點是有模擬數據,加深理解和印象,答案主要基於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(114) 23、統計列印各科成績,各分數段人數:課程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