版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
blogs.eom/zhenyulu/articles/3
30494.html第一章
略
第二章
5、已知個關(guān)系數(shù)據(jù)庫的模式如下:
S(SNO,SNAME,SCITY)
P(PNO,PNAME,COLOR,WEIGHT)
J(JNO,JNAME,JCITY)
SPJ(SNO,PNO,JNO,QTY)
供應(yīng)商S由供應(yīng)商代碼SNO、供應(yīng)商姓名SNAME、供應(yīng)商所在
城市SCITY組成;零件P由零件代碼PNO、零件名PNAME、
顏色COLOR、重量WEIGHT組成;工程項目J由工程項目代碼
JNO、工程項目名JNAME、和所在城市JCITY組成;供應(yīng)情況
SPJ由供應(yīng)商代碼SNO、零件代碼PNO、工程項目代碼JNO、
供應(yīng)數(shù)量QTY組成。
用關(guān)系代數(shù)表達(dá)式表示下面的查詢要求:
(1)求供應(yīng)工程J1零件的供應(yīng)商代碼SNO
(2)求供應(yīng)工程J1零件P1的供應(yīng)上代碼SNO
(3)求供應(yīng)工程J1零件為紅色的供應(yīng)商代碼SNO
(4)求沒有使用天津供應(yīng)商生產(chǎn)的紅色零件的工程項目代碼
JNO
(5)求至少用了供應(yīng)商S1所供應(yīng)的全部零件的工程項目代碼
JNO
答:
(1)^SNO9jNO='Jl'(SPJ))
(2)ANO(bjNO二、ji、八PNO='PI、(SPJ))
兀SNO9JNO=,J1,八COLOR。!^(P><SPJ))
(3)
(4)
兀JNO(')一兀JNO(。5丫=天津'(S)><SPJ><分。乙。7?=‘紅色’(0))
(5)兀PNO,JNO(SPJ)+兀PNO9SNO='S1,(SPJ))
第二早
22.建立一個關(guān)于系、學(xué)生、班級、學(xué)會等諸信息的關(guān)系數(shù)據(jù)庫。
學(xué)生:學(xué)號、姓名、出生年月、系名、班號、宿舍區(qū)。
班級:班號、專業(yè)名、系名、人數(shù)、入校年份。
系:系名、系號、系辦公地點、人數(shù)。
學(xué)會:學(xué)會名、成立年份、辦公地點、人數(shù)。
語義如下:一個系有若干專業(yè),每個專業(yè)每年只招一個班,
每個班有若干學(xué)生。一個系的學(xué)生住在同一宿舍區(qū)。每個學(xué)生可
參加若干學(xué)會,每個學(xué)會有若干學(xué)生。學(xué)生參加某學(xué)會有一個入
會年份。
請給出關(guān)系模式,寫出每個關(guān)系模式的極小函數(shù)依賴集,指
出是否存在傳遞函數(shù)依賴,對于函數(shù)依賴左部是多屬性的情況討
論函數(shù)依賴是完全函數(shù)依賴,還是部分函數(shù)依賴。指出各關(guān)系模
式的候選碼、外部碼,有沒有全碼存在?
解:(1)關(guān)系模式如下:
學(xué)生:S(Sno,Sname,Sbirth,Dept,Class,Sloe)
班級:C(Class,Major,Dept,Cnum,Cyear)
系:D(Dept,Dno,Office,Dnum)
學(xué)會:P(Pname,Pyear,Paddr,Pnum)
學(xué)生--學(xué)會SP(Sno,Pname,SPyear)
(2)每個關(guān)系模式的最小函數(shù)依賴集如下:
(a)、學(xué)生S(Sno,Sname,Sbirth,Dept,Class,Sloe)的
最小函數(shù)依賴集如下:Sno—Sname,Sno^Sbirth,Sno^Class,
Class—Dept,Dept—Sloe
傳遞依賴如下:
由于Sno-Class,ClassVSno,Class^Dept
所以Sno與Dept之間存在著傳遞函數(shù)依賴。
由于Sno-Dept,Dept,Sno,Dept—Sloc
所以Sno與Sloe之間存在著傳遞函數(shù)依賴。
由于Class^Dept,Dept,Class,Dept-Sloe
所以Class與Sloe之間存在著傳遞函數(shù)依賴。
(b)、班級C(Class,Major,Dept,Cnum,Cyear)的最小函
數(shù)依賴集如下:
Class—Major,Class^Cnum,ClassfCyear,Major
—Dept,
(Major,Cyear)—Class
由于Class-Major,Major'Class,Major^Dept
所以Class與Dept之間存在著傳遞函數(shù)依賴。
(c)、系D(Dept,Dno,Office,Dnum)的最小函數(shù)依賴集如下:
Dept—Dno,DnolDept,Dno^Office,Dno^Dnum
根據(jù)上述函數(shù)依賴可知,Dept與Office,Dept與Dnum之
間不存在傳遞依賴。
(d)、學(xué)會P(Pname,Pyear,Paddr,Pnum)的最小函數(shù)依賴
集如下:
Pname^Pyear,Pname^Paddr,Pname^Pnum
該模式不存在傳遞依賴。
(e)、學(xué)生-學(xué)會SP的最小函數(shù)依賴集如下:
(Sno,Pname)fSPyear
(3)各關(guān)系模式的候選碼、外部碼,全碼如下:
A、學(xué)生S候選碼:Sno;外部碼:Dept、Class;無全碼
B、班級C候選碼:Class和(Major,Cyear);外部碼:Dept;
無全碼
C、系D候選碼:Dept或Dn。;無外部碼;無全碼
D、學(xué)會P候選碼:Pname;無外部碼;無全碼
學(xué)生一學(xué)會SP候選碼:(Sno,Pname)外部碼:Sno,Pname;
無全碼
23.試由amstrong公理系統(tǒng)推導(dǎo)出下面三條推理規(guī)則:
(1)合并規(guī)則:若X-乙X-Y,則有X-YZ
(2)偽傳遞規(guī)則:由X-Y,WY-Z有XW-Z
(3)分解規(guī)則:X-Y,Z包含于Y,有X-Z
證明:
(1)已知X-乙由增廣律知XY-Y乙又因為X-Y,可得XX
一XY-YZ,最后根據(jù)傳遞律得X-YZ。
(2)已知X-Y,據(jù)增廣律得XW-WY,因為WY-乙所以
XW-WY-乙通過傳遞律可知XW-Z。
(3)已知Z包含于丫,根據(jù)自反律知Y-Z,又因為X-Y,
所以由傳遞律可得X-Z。
第四章
5.請從表EMP中查找工資低于2000的雇員的姓名、工作、工
資,并按工資降序排列。
selectename,job,salfromempwheresal<2000orderbysal
desc;
6.請從表中查詢工作是CLERK的所有人的姓名、工資、部門
號、部門名稱以及部門地址的信息。
selectename,sal,emp.deptno,dname,locfromemp.deptwhere
emp.deptno=dept.deptnoandjob='CLERK';
7.查詢表EMP中所有的工資大于等于2000的雇員姓名和他的
經(jīng)理的名字。
selecta.ename,b.enamefromempa,empbwhere
a.mgr=b.empnoanda.sal>=2000;
8.在表EMP中查詢所有工資高于JONES的所有雇員姓名、工
作和工資。
selectename,job,salfromempwheresal>(selectsalfromemp
whereename=,JONES,);
9.列出沒有對應(yīng)部門表信息的所有雇員的姓名、工作以及部門
號。
selectename,job,deptnofromempwheredeptnonotin(select
deptnofromdept);
10.查找工資在1000?3000之間的雇員所在部門的所有人員信
息
select*fromempwheredeptnoin(selectdistinctdeptnofrom
empwheresalbetween1000and3000);
11.查詢列出來公司就職時間超過24年的員工名單
selectenamefromempwhere
hiredate<=add_months(sysdate,-288);
12.查詢顯示每個雇員加入公司的準(zhǔn)確時間,按XXXX年XX月XX
日時分秒顯示。
selectename,to_char(hiredate,'yyyy-mm-ddhh24:mi:ss')from
emp;
13.查詢所有81年7月1日以前來的員工姓名、工資、所屬部
口的名字
selectename,sal,dnamefromemp,deptwhere
emp.deptno=dept.deptnoand
hiredate<=to_date(l1981-07-01'/yvyy-mm-dd');
14.查詢公司中按年份月份統(tǒng)計各地的錄用職工數(shù)量
selectto_char(hiredate,'yyyy-mm'),loc,count(*)fromemp,dept
whereemp.deptno=dept.deptno
groupbyto_char(hiredate,'yyyy-mm'),loc;
15.查詢部門平均工資最高的部門名稱和最低的部門名稱
selectdnamefromdeptwheredeptno=(selectdeptnofrom
(selectdeptnofromempgroupbydeptnoorderbyavg(sal))
whererownum<=1)
unionallselectdnamefromdeptwheredeptno=(selectdeptno
from(selectdeptnofromempgroupbydeptnoorderby
avg(sal)desc)whererownum<=1);
第五章
5.對每一個雇員,顯示employee_id、last_name、salary利salary增
加15%,并且表示成整數(shù),列標(biāo)簽顯示為New_Salary
SELECTemployee_id,last_name,salary,
ROUND(salary*1.15,0)"NewSalary"
FROMemployees;
6.寫一個查詢用首字母大寫,其它字母小寫顯示雇員的
last_names,顯示名字的長度,對所有名字開始字母是J、A或M
的雇員,給每列一個適當(dāng)?shù)臉?biāo)簽。用雇員的last_names排序結(jié)
果。
SELECTINITCAP(last_name)"Name",
LENGTH(last_name)"Length"
FROMemployees
WHERElastnameLIKE'J%'
ORlastnameLIKE'M%'
ORlast_nameLIKE'A%'
ORDERBYlast_name;
7.對每一個雇員,顯示其last_name,并計算從雇員受雇日期到今
天的月數(shù),列標(biāo)簽M0NTHS_W0RKEDo按受雇月數(shù)排序結(jié)果,
四舍五入月數(shù)到最靠近的整數(shù)月。
SELECTlast_name,ROUND(MONTHS_BETWEEN
(SYSDATE,hire_date))"MONTHS_WORKED"
FROMemployees
ORDERBYMONTHS_BETWEEN(SYSDATE,hire_date);
8.顯示last_name、hire_date和雇員開始工作的周日,列標(biāo)簽為
DAY,以星期一作為周的起始日排序結(jié)果。
SELECTlast_name,hire_date,
TO_CHAR(hire_date,'DAY')"DAY"
FROMemployees
ORDERBYTO_CHAR(hire_date-
LAST_NAMEHIRE_DATEDAY
Grant24-MAY-99MONDAY
Ernst21-MAY-91TUESDAY
Mourgos16-NOV-99TUESDAY
Taylor24-MAR-98TUESDAY
Rajs17-OCT-95TUESDAY
Gietz07-JUN-94TUESDAY
Higgins07-JUN-94TUESDAY
King17-JUN-87WEDNESDAY
DeHaan13-JAN-93WEDNESDAY
Davies29-JAN-97WEDNESDAY
Hunold03-JAN-90WEDNESDAY
Kochhar21-SEP-89THURSDAY
Whalen17-SEP-87THURSDAY
Vargas09-JUL-98THURSDAY
Matos15-MAR-98SUNDAY
第八章
5.
CREATEVIEWVW_DEPT_SUM(DEPT_NAME,EMP_COUNT,
MINSAL,MAXSAL,AVGSAL)
AS
SELECTdname,count(empno),min(sal),max(sal),avg(sal)
FROMdeptdleftjoinempeone.deptno=d.deptno
GROUPBYdname
6.
CREATEVIEWVW_EMP_AVG
AS
SELECTe.ename,e.sal,d-dname,s.avgsal
FROMempe,(selectdeptno,AVG(sal)avgsalfromempGROUP
BYdeptno)s,deptd
WHEREe.deptno=s.deptnoANDs.deptno=d.deptnoAND
e.sal>s.avgsal
第九章
10、
declare
typeemp_table_typeistableofemp%rowtype;
emp_tableemp_tab1e_type;
begin
selecte.*bulkcollectintoemp_table
fromempe,deptd
wheree.deptno=d.deptnoandd.dname='&dname';
foriin1..emp_table.countloop
dbms_output.put_line(emp_table(i).empno|I'II
emp_table(i).ename|I'IIemp_table(i).hiredate
Ill'llemp_table(i).deptno);
ENDLOOP;
end;
11、
declare
v_salaryemp.sal%type;
v_addsalnumber;
begin
selectsalintov_salaryfromemp
whereempno=&empno;
dbms_output.put_line(,原工資:*||v_salary);
ifv_salary>10000then
v_addsal:=0.1;
elsifv_salary>5000then
v_addsal:=0.2;
else
v_addsal:=0.3;
endif;
updateemp
setsal=sal*(l+v_addsal)
whereempno=&empno;
selectsalintov_salaryfromemp
whereempno=&empno;
dbms_output.put_line「增長后工資:*||v_salary);
end;
12、創(chuàng)建表:
createtabletest(
columnlnumber(2),
column2char(2),
columnsdate
);
簡單循環(huán):
declare
inumber:=0;
begin
loop
insertintotest
values(1+iAchr(97+i),sysdate+i);
i:=i+l;
exitwheni=10;
endloop;
commit;
end;
WHILE循環(huán):
declare
inumber:=0;
begin
whilei<10loop
insertintotest
values(1+izchr(97+i),sysdate+i);
i:=i+l;
endloop;
commit;
end;
FOR循環(huán):
declare
inumber:=0;
begin
foriin0..9loop
insertintotest
values(1+i,chr(97+i),sysdate+i);
endloop;
commit;
end;
第十一章
9、編寫一個數(shù)據(jù)包,它有兩個函數(shù)和兩個過程以操作"emp"表。
該數(shù)據(jù)包要執(zhí)行的任務(wù)為:
a)插入一個新雇員;刪除一個現(xiàn)有雇員;顯示指定雇員的整體
薪水(薪水+傭金);顯示指定雇員所在部門名稱。
createorreplacepackageemppackas
procedureinsrec(pempnoemp.empno%type,pename
emp.ename%type,
pjobemp.job%type,pmgremp.mgr%type,
phiredateemp.hiredate%type,psalemp.sal%type,
pcommm%type,pdeptnoemp.deptno%type);
proceduredelrec(pempnoinnumber);
functionselsal(pempnonumber)returnnumber;
functionseldname(pempnonumber)returnvarchar2;
end;
/
createorreplacepackagebodyemppackas
procedureinsrec(pempnoemp.empno%type,pename
emp.ename%type,
pjobemp.job%type,pmgremp.mgr%type,
phiredateemp.hiredate%type,psalemp.sal%type,
pcommm%type,pdeptnoemp.deptno%type)
is
begin
insertintoempvalues(pempno,pename,pjob,pmgr,phiredate,
psal,pcomm,pdeptno);
dbms_output.put_line(1recordiscreated.);
endinsrec;
proceduredelrec(pempnoinnumber)
is
begin
deletefromempwhereempno=pempno;
dbms_output.put_line(1recordisdeleted.);
enddelrec;
functionselsal(pempnonumber)returnnumber
is
vtotalsalnumber;
begin
selectnvl(sal,0)+nvl(comm,0)intovtotalsal
fromemp
whereempno=pempno;
returnvtotalsal;
endselsal;
functionseldname(pempnonumber)returnvarchar2
is
vdnamedept.dname%type;
begin
selectdnameintovdname
fromemp.dept
whereempno=pempnoandemp.deptno=dept.deptno;
returnvdname;
endseldname;
end;
/
--執(zhí)行包中的過程和函數(shù)
execute
emppack.insrec(1111,goldens,manager,7698,2003-01-18,2000
,400,30);
executeemppack.delrec(1111);
declare
salarynumber;
begin
salary:=emppack.selsal(7369);
dbms_output.put_line(totalsalaryis||salary);
end;
declare
departmentvarchar2(30);
begin
department:=emppack.seldname(7369);
dbms_output.put_line(departmentnameis||department);
end;
/
b)編寫一個函數(shù)以檢查所指定雇員的薪水是否有效范圍內(nèi)。不
同職位的薪水范圍為:
designationraise
clerk1500-2500
salesma
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程監(jiān)理勞務(wù)分包協(xié)議
- 車站附近人行道改造合同
- 游泳池電工招聘合同模板
- 家電銷售經(jīng)紀(jì)人合作協(xié)議
- 政府宣傳片編劇招聘協(xié)議
- 清潔能源高速公路合同管理辦法
- 社區(qū)活動中心球場施工合同
- 紡織生產(chǎn)電動工具租賃協(xié)議
- 污水處理廠改造圍擋施工合同
- 皮膚病醫(yī)院聘用協(xié)議樣本
- 2022課程方案試題
- 小學(xué)科學(xué)跨學(xué)科項目化學(xué)習(xí)案例
- 絲氨酸蛋白酶在代謝性疾病中的作用
- 針刺氣沖穴對慢性疼痛動物模式的電生理研究
- 生物學(xué)課堂教學(xué)技能訓(xùn)練智慧樹知到期末考試答案2024年
- 矩陣論智慧樹知到期末考試答案2024年
- 河北鋼鐵集團(tuán)沙河中關(guān)鐵礦有限公司礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 醫(yī)院反恐相關(guān)知識課件
- 心衰患者的容量管理中國專家共識-共識解讀
- 工業(yè)互聯(lián)網(wǎng)導(dǎo)論黃源課后參考答案
- 汽車維修培訓(xùn)課件教程
評論
0/150
提交評論