數(shù)據(jù)庫面試題.pdf_第1頁
數(shù)據(jù)庫面試題.pdf_第2頁
數(shù)據(jù)庫面試題.pdf_第3頁
數(shù)據(jù)庫面試題.pdf_第4頁
數(shù)據(jù)庫面試題.pdf_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

數(shù)據(jù)庫數(shù)據(jù)庫 SQL 面試題之復(fù)雜查詢面試題集面試題之復(fù)雜查詢面試題集 數(shù)據(jù)庫 第一題: Student(S#,Sname,Sage,Ssex) 學(xué)生表 Course(C#,Cname,T#) 課程表 SC(S#,C#,score) 成績表 Teacher(T#,Tname) 教師表 1、查詢“001”課程比“002”課程成績高的所有學(xué)生的學(xué)號; 2、查詢平均成績大于 60 分的同學(xué)的學(xué)號和平均成績; 3、查詢所有同學(xué)的學(xué)號、姓名、選課數(shù)、總成績; 4、查詢姓“李”的老師的個數(shù); 5、查詢沒學(xué)過“葉平”老師課的同學(xué)的學(xué)號、姓名; 6、查詢學(xué)過“001”并且也學(xué)過編號“002”課程的同學(xué)的學(xué)號、姓名; 7、查詢學(xué)過“葉平”老師所教的所有課的同學(xué)的學(xué)號、姓名; 8、查詢課程編號“002”的成績比課程編號“001”課程低的所有同學(xué)的學(xué)號、 姓名; 9、查詢所有課程成績小于 60 分的同學(xué)的學(xué)號、姓名; 10、查詢沒有學(xué)全所有課的同學(xué)的學(xué)號、姓名; 11、查詢至少有一門課與學(xué)號為“1001”的同學(xué)所學(xué)相同的同學(xué)的學(xué)號和姓 名; 12、查詢至少學(xué)過學(xué)號為“001”同學(xué)所有一門課的其他同學(xué)學(xué)號和姓名; 13、把“SC”表中“葉平”老師教的課的成績都更改為此課程的平均成績; 14、查詢和“1002”號的同學(xué)學(xué)習(xí)的課程完全相同的其他同學(xué)學(xué)號和姓名; 15、刪除學(xué)習(xí)“葉平”老師課的 SC 表記錄; 16、向 SC 表中插入一些記錄,這些記錄要求符合以下條件:沒有上過編號 “003”課程的同學(xué)學(xué)號、2、 號課的平均成績; 17、按平均成績從高到低顯示所有學(xué)生的“數(shù)據(jù)庫”、“企業(yè)管理”、“英 語”三門的課程成績,按如下形式顯示: 學(xué)生 ID,數(shù)據(jù)庫,企業(yè)管理,英語,有 效課程數(shù),有效平均分 18、查詢各科成績最高和最低的分:以如下形式顯示:課程 ID,最高分,最低 分 19、按各科平均成績從低到高和及格率的百分數(shù)從高到低順序 20、查詢?nèi)缦抡n程平均成績和及格率的百分數(shù)(用“1 行“顯示): 企業(yè)管理 (001),馬克思(002),OO 1 row created. SQL commit; Commit complete. SQL select count(*) from dual; COUNT(*) - 2 SQL delete from dual; commit; DUAL 里還剩幾條記錄? JUST TRY IT 第七題: 根據(jù)如下表的查詢結(jié)果,那么以下語句的結(jié)果是(知識點:not in/not exists+null) SQL select * from usertable; USERID USERNAME - - 1 user1 2 null 3 user3 4 null 5 user5 6 user6 SQL select * from usergrade; USERID USERNAME GRADE - - - 1 user1 90 2 null 80 7 user7 80 8 user8 90 執(zhí)行語句: select count(*) from usergrade where username not in (select username from usertable); select count(*) from usergrade g where not exists (select null from usertable t where t.userid=g.userid and t.username=g.username); 結(jié)果是? 第八題: 在以下的表的顯示結(jié)果中,以下語句的執(zhí)行結(jié)果是(知識點: in/exists+rownum) SQL select * from usertable; USERID USERNAME - - 1 user1 2 user2 3 user3 4 user4 5 user5 SQL select * from usergrade; USERNAME GRADE - - user9 90 user8 80 user7 80 user2 90 user1 100 user1 80 執(zhí)行語句 Select count(*) from usertable t1 where username in (select username from usergrade t2 where rownum =1); Select count(*) from usertable t1 where exists (select x from usergrade t2 where t1.username=t2.username and rownum =1); 結(jié)果是? 第九題: 根據(jù)以下的在不同會話與時間點的操作,判斷結(jié)果是多少,其中時間 T1 原始表 記錄為; select * from emp; EMPNO DEPTNO SALARY - - - 100 1 55 101 1 50 select * from dept; DEPTNO SUM_OF_SALARY - - 1 105 2 可以看到,現(xiàn)在因為還沒有部門 2 的員工,所以總薪水為 null,現(xiàn)在, 有兩個不同的用戶(會話)在不同的時間點(按照特定的時間順序)執(zhí)行了一 系列的操作,那么在其中或最后的結(jié)果為: time session 1 session2 - - - - T1 insert into emp values(102,2,60) T2 update emp set deptno =2 where empno=100 T3 update dept set sum_of_salary = (select sum(salary) from emp where emp.deptno=dept.deptno) where dept.deptno in(1,2); T4 update dept set sum_of_salary = (select sum(salary) from emp where emp.deptno=dept.deptno) where dept.deptno in(1,2); T5 commit; T6 select sum(salary) from emp group by deptno; 問題一:這里會話 2 的查詢結(jié)果為: T7 commit; =到這里為此,所有事務(wù)都已完成,所以以下查詢與會話已沒有關(guān)系 = select sum(salary) from emp group by deptno; 問題二:這里查詢結(jié)果為 select * from dept; 問題三:這里查詢的結(jié)果為 第十題: 有表一的查詢結(jié)果如下,該表為學(xué)生成績表(知識點:關(guān)聯(lián)更新) select id,grade from student_grade ID GRADE - - 1 50 2 40 3 70 4 80 5 30 6 90 表二為補考成績表 select id,grade from student_makeup ID GRADE - - 1 60 2 80 5 60 現(xiàn)在有一個 dba 通過如下語句把補考成績更新到成績表中,并提交: update student_grade s set s.grade = (select t.grade from student_makeup t where s.id=t.id); commit; 請問之后查詢: select GRADE from student_grade where id = 3; 結(jié)果為? 十一題: 根據(jù)以下的在不同會話與時間點的操作,判斷結(jié)果是多少, 其中時間 T1 session1 session2 - - - T1 select count(*) from t; -顯示結(jié)果(1000)條 T2 delete from t where rownum =100; T3 begin delete from t where rownum =100; commit; end; / T4 truncate table t; T5 select count(*) from t; -這里顯示的結(jié)果是多少 十二題: 表內(nèi)容: 2005-05-09 勝 2005-05-09 勝 2005-05-09 負 2005-05-09 負 2005-05-10 勝 2005-05-10 負 2005-05-10 負 如果要生成下列結(jié)果, 該如何寫 sql 語句? 勝 負 2005-05-09 2 2 2005-05-10 1 2 十三題: 表中有 A B C 三列,用 SQL 語句實現(xiàn):當(dāng) A 列大于 B 列時選擇 A 列否則選擇 B 列,當(dāng) B 列大于 C 列時選擇 B 列否則選擇 C 列。 請取出 tb_send 表中日期(SendTime 字段)為當(dāng)天的所有記錄?(SendTime 字段為 datetime 型,包含日期與時間) 十四題: 有一張表,里面有 3 個字段:語文,數(shù)學(xué),英語。其中有 3 條記錄分別表示語 文 70 分,數(shù)學(xué) 80 分,英語 58 分,請用一條 sql 語句查詢出這三條記錄并按以 下條件顯示出來(并寫出您的思路): 大于或等于 80 表示優(yōu)秀,大于或等于 60 表示及格,小于 60 分表示不及格。 顯示格式: 語文 數(shù)學(xué) 英語 及格 優(yōu)秀 不及格 十五題: 請用一個 sql 語句得出結(jié)果 從 table1,table2 中取出如 table3 所列格式數(shù)據(jù),注意提供的數(shù)據(jù)及結(jié)果不準 確,只是作為一個格式向大家請教。 如使用存儲過程也可以。 table1 月份 mon 部門 dep 業(yè)績 yj - 一月份 01 10 一月份 02 10 一月份 03 5 二月份 02 8 二月份 04 9 三月份 03 8 table2 部門 dep 部門名稱 dname - 01 國內(nèi)業(yè)務(wù)一部 02 國內(nèi)業(yè)務(wù)二部 03 國內(nèi)業(yè)務(wù)三部 04 國際業(yè)務(wù)部 table3 (result) 部門 dep 一月份 二月份 三月份 - 01 10 null null 02 10 8 null 03 null 5 8 04 null null 9 十六題: 一個表中的 Id 有多個記錄,把所有這個 id 的記錄查出來,并顯示共有多少條 記錄數(shù)。 十七題: p 假設(shè)只有一個 table,名為 pages,有四個字段,id, url,title,body。里面 儲存了很多網(wǎng)頁,網(wǎng)頁的 url 地址,title 和網(wǎng)頁的內(nèi)容, 然后你用一個 sql 查詢將 url 匹配的排在最前, 十八題: 一個簡單的表 TABLE 有 100 條以上的信息,其中包括: 產(chǎn)品 顏色 數(shù)量 產(chǎn)品 1 紅色 123 產(chǎn)品 1 藍色 126 產(chǎn)品 2 藍色 103 產(chǎn)品 2 紅色 NULL 產(chǎn)品 2 紅色 89 產(chǎn)品 1 紅色 203 。 請用 SQL 語句完成以下問題: 1、按產(chǎn)品分類,僅列出各類商品中紅色多于藍色的商品名稱及差額數(shù)量: 2、按產(chǎn)品分類,將數(shù)據(jù)按下列方式進行統(tǒng)計顯示 十九題: 表結(jié)構(gòu):id name subject score createdate 1.創(chuàng)建時間為 3 天前 0 點創(chuàng)建的紀錄,20 分鐘前創(chuàng)建的紀錄? 2.3 門以上不及格學(xué)生的學(xué)生姓名? 3. id name 1 a 2 b 3 a 4 a id 為 identity,只留一條 a 與一條 b 二十題: 已知一個表的結(jié)構(gòu)為: 姓名 科目 成績 張三 語文 20 張三 數(shù)學(xué) 30 張三 英語 50 李四 語文 70 李四 數(shù)學(xué) 60 李四 英語 90 怎樣通過 select 語句把他變成以下結(jié)構(gòu): 姓名 語文 數(shù)學(xué) 英語 張三 20 30 50 李四 70 60 90 二十一題: 數(shù)據(jù)庫中存在一張表:Account。該表至少有一個字段 AccountID,類型是整數(shù) 型,并且是主鍵。 表中的部分數(shù)據(jù)如下(按照 AccountID 進行排序): Table: Account - |AccountID | 其他字段略 |- | 1 | 2 | 3 | 4 | 9 |10 |11 |20 - 可以看出,目前表中的 AccountID 的數(shù)值不是連續(xù)的。 要求:請編寫一個 SQL 語句,找出表中缺少的 AccountID 中,最小的一個 二十二題: 1,現(xiàn)有表 bill 和表 payment 結(jié)構(gòu)如下,兩表通過 pay_id 關(guān)聯(lián): bill 表bill_id 是帳單標識,charge 為帳單金額,pay_id 為付款編號, PK:bill_id bill_id INTEGER charge INTEGER pay_id INTEGER payment 表pay_id 為付款編號,charge 為付款金額,PK:pay_id pay_id INTEGER charge INTEGER 要求更新 payment 使 charge=bill 表中同一 pay_id 的 charge 之和。 2、表 A 定義如下: 屬性 類型 Year Integer Quarter Varchar(30) Amount float Year Quarter Amount 2000 1 1.1 2000 2 1.2 2000 3 1.3 2000 4 1.4 2001 1 2.1 2001 2 2.2 2001 3 2.3 2001 4 2.4 其中每行表表示一個季度的數(shù)據(jù)。 如果處理表 A 中的數(shù)據(jù),

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論