數(shù)據(jù)庫程序設(shè)計2004testc-答案_第1頁
數(shù)據(jù)庫程序設(shè)計2004testc-答案_第2頁
數(shù)據(jù)庫程序設(shè)計2004testc-答案_第3頁
數(shù)據(jù)庫程序設(shè)計2004testc-答案_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、2004-2005-1 學(xué)期數(shù)據(jù)庫程序設(shè)計 TEST(C)一、數(shù)據(jù)庫基礎(chǔ)(30 分):1、數(shù)據(jù)庫管理系統(tǒng)(DBMS)DBMS 是對數(shù)據(jù)庫建立、2、畫出三級模式結(jié)構(gòu)圖、的系統(tǒng)3、什么內(nèi)模式?內(nèi)模式( ernal Schema):亦稱模式(Storage Schema),數(shù)據(jù)在數(shù)據(jù)庫的表示方式。例如,數(shù)據(jù)在計算機中存儲方式(順序、B 樹、Hash),以及是否加密、壓縮4、常用的數(shù)據(jù)模型有哪幾種層次模型網(wǎng)狀模型關(guān)系模型對象模型5、實體型間聯(lián)系實體型間聯(lián)系樹或森林網(wǎng)狀結(jié)構(gòu)實體型間聯(lián)系通過二維表(關(guān)系)表示基于類、對象的表示兩實體型實體間多對多聯(lián)系,舉三個例子.m:n(多對多聯(lián)系)A 中一個實體對應(yīng) B

2、 中的多個實體,反之 B 中一個實體對應(yīng) A 中的多個實體例:學(xué)生與課程、工廠與產(chǎn)品、商店與顧客二、 寫出SQL 語句(45 分)相關(guān)表結(jié)構(gòu)如下:學(xué)生表課程表學(xué)習(xí)表表STUDENT(SNO,SNAME,SAGE,SSEX,SDEPT)COURSE(SC(AME,CPNO,TEACHER)O,GRADE)DEPT(DEPTNO,DNAME,LOC)職工表 EMP(EMPNO,ENAM,HIREDATE,DEPTNO)列名含義為(職工號,管理者,工種,月工資,傭金,參加工作日期,號)查詢系男學(xué)生人數(shù)SELECT COUNT(*) FROM STUDENT WHERE SDEPT=MA;查詢學(xué)生各系

3、的女學(xué)生人數(shù)SELECT SDEPT,COUNT(*) FROM STUDENT GROUP BY SDEPTAND SSEX=女;選 1 號課程的最高分?jǐn)?shù)SELECT MAX(GRADE) FROM SC WHERE CNO=1;查詢選修了 7 門以上課的學(xué)生號SELECT SNO FROM SC GROUP BY SNO HAVING COUNT(*)7;查詢選修 4 號課的學(xué)生名SELECT DISTINCT SNAME FROM STUDENT,SC WHERE STUDENT.SNO=SC.SNO ANDO=4;6、查詢 1981 年 2 月 1 日至 1998 年 5 月 1 日參

4、加工作的職工作日期降序排序.和參加工作日期,按參加工SELECT ENAME,HIREDATE FROM EMP WHERE HIREDATE BET 01/5 月/81 ORDER BY HIREDATE DESC;7、查詢每種工種的職工人數(shù)和平均工資.SELECT JOB, COUNT(*),AVG(SAL) FROM EMP GROUP BY JOB;N 01/2 月/81 AND8、查詢工資超過 3000 的職工,工資,名SELECTENAME,SAL,DNAMEFROMEMP,DEPTWHERESAL3000ANDDEPT.DEPTNO=EMP.DEPTNO;9、查詢在DALLAS

5、工作的所有職工SELECTENAMEFROMEMP,DEPTWHERELOC=DALASANDDEPT.DEPTNO=EMP.DEPTNO;10、查詢工資超過平均工資的所有職工SELECT ENAMEFROM EMP WHERE SAL (SELECT AVG(SAL) FROM EMP);11、查詢工資超過 20 號最高工資的所有職工SELECT ENAMEFROM EMP WHERE SAL (SELECT MAX(SAL) FROM EMP WHERE DEPTNO=30);12、將職工號為 7322 的工資改為 3500UPDATE EMP SET SAL=3500 WHERE EMP

6、NO=7322;13、給10 的每個職工增加 10 的工資UPDATE EMP SET SAL=SAL*1.1 WHERE DEPTNO=10;14、給名是SALE的每個職工增加 10 的工資UPDATE EMP SET SAL=SAL*1.1 WHERE DEPTNO= (SELECT DEPTNO FROM DEPT WHERE DNAME=SALE);15、刪除號為 50 的職工DELETE FROM EMP WHERE DEPTNO=50;三、PLSQL 程序設(shè)計(15)1、填空:編寫一個存貯過程,將每門課成績前 3 位的學(xué)生的學(xué)生名,課名,成績,名次存到一個數(shù)據(jù)表 GOOD 中cre

7、ate or replace procedure find_goodascursorselecto isame from course;cursor cno_grade(c_num number) isselect sno,grade from sc where cno=c_num order by grade desc;s_name varchar2(10); n number;beginfor r1 ino loopfor r2 incno_grade(exit when o)loop3;o_grade%;select snameo s_name from student where sn

8、o=;inserto good values( end loop;end loop; end;create or replace procedure find3asame,r2.grade,n);cursorselecto isame from course;cursor cno_grade(c_num number) isselect sno,grade from sc where cno=c_num order by grade DESC; s_name varchar2(10);n number; beginfor r1 in ALL CNO loopfor r2 in CNO GRAD

9、E(o) loopexit when CNO GRADE%ROWCOUNT3 o_grade% ROWCOUNT;select snameo s_name from student where sno= R2.SNO;inserto good values(ame,r2.grade,n); END LOOP;end loop; end;2、程序填空, 編寫 trigger,使學(xué)生的修改只能增大。CREATE OR REPLACE TRIGGER UPDATE_AGEBEFORE ON STUDENTfor each row DECLAREupdate OF SAGESAGE_ERROR EXCEPTION; BEGINIF :new.sage=:old.sage RAISE sage_error;END IF; EXCEPTIONWHEN SAGE_ERROR THENTHENRAISE_APPLICA

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論