數(shù)據(jù)庫完整性實驗報告_第1頁
數(shù)據(jù)庫完整性實驗報告_第2頁
數(shù)據(jù)庫完整性實驗報告_第3頁
數(shù)據(jù)庫完整性實驗報告_第4頁
數(shù)據(jù)庫完整性實驗報告_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

北京理工大學(xué)珠海學(xué)院實驗報告ZHUHAICAMPAUSOFBEIJINGINSTITUTEOFTECHNOLOGY班級學(xué)號姓名指導(dǎo)教師張申勇成績實驗題目數(shù)據(jù)庫完整性一實驗?zāi)康?.熟悉通過SQL對數(shù)據(jù)進(jìn)行完整性控制;2.針對具體應(yīng)用要求,設(shè)計相應(yīng)的完整性約束。二實驗工具SQLServer2005利用SQLServer2005SSMS及其SQL查詢編輯器。三實驗內(nèi)容和要求使用SQL對數(shù)據(jù)進(jìn)行完整性控制〔3類完整性、CHECK短語、CONSTRAIN子句、觸發(fā)器〕。用實驗證實,當(dāng)操作違反了完整性約束條件時,系統(tǒng)是如何處理的。根據(jù)以下要求認(rèn)真填寫實驗報告,記錄所有的實驗用例。具體操作內(nèi)容:創(chuàng)立以下兩個關(guān)系模式,并分別插入相應(yīng)的數(shù)據(jù)。職工〔職工號,姓名,年齡,職務(wù),工資,部門號〕其中職工號為主碼;部門〔部門號,名稱,經(jīng)理名,地址,號碼〕,其中部門號為主碼;〔1〕使用SQL語言定義這兩個關(guān)系模式,并完成以下完整性約束條件的定義;〔a〕定義每個模式的主碼;〔b〕定義參照完整性;〔c〕定義職工的年齡不能小于18歲,并且不能超過60歲;〔d〕職工的姓名不能為空;〔e〕職工的工資不能為空,且不能小于800;〔f〕部門名稱不能為空且不能重復(fù),定義約束名為UK_dName;〔2〕使用SQL語言分別向兩個表中插入7行記錄,驗證上面的各種約束條件;〔3〕將職工的年齡改為不能小于16歲,并且不能大于65歲;〔4〕定義一個表tbl_Emp_Log(eNO,eSalary,Username,ModiDate);在職工表上定義修改和插入數(shù)據(jù)的觸發(fā)器,將插入的職工號和工資數(shù)據(jù)填入到Emp_log表中,并記錄操作的用戶和插入時間;如果修改了職工的工資,也把職工號和修改后的工資數(shù)據(jù)填入到Emp_log表中,并記錄操作的用戶和插入時間。使用SQL語句向職工表中插入數(shù)據(jù)和修改工資,驗證觸發(fā)器的效果。四實驗報告4.1實驗環(huán)境:Windows7MicrosoftSQLserverManagementStudio20054.2實驗內(nèi)容與完成情況:--新建數(shù)據(jù)庫createdatabaseworkgousework--創(chuàng)立以下兩個關(guān)系模式,并分別插入相應(yīng)的數(shù)據(jù)。--Worker〔職工號,姓名,年齡,職務(wù),工資,部門號〕go--〔〕使用SQL語言定義這兩個關(guān)系模式,并完成以下完整性約束條件的定義;--〔a〕定義職工號為職工表的主碼;createtableWorker(職工號varchar(10)primarykey,--〔d〕職工的姓名不能為空;姓名char(10)notnull,--〔c〕定義職工的年齡不能小于歲,并且不能超過歲;年齡intconstraintw_agecheck(年齡>18and年齡<65),職務(wù)char(15),--〔e〕職工的工資不能為空,且不能小于;工資moneynotnullconstraintw_sacheck(工資>800),部門號char(50),--〔b〕定義參照完整性foreignkey(職工號)referencesWorker(職工號))--Section〔部門號,名稱,經(jīng)理名,地址,號碼〕createtableSection(--定義部門號為部門表的主碼部門號char(10)primarykey,--〔f〕部門名稱不能為空且不能重復(fù),定義約束名為UK_dName;名稱char(10)notnullconstraintUK_dNameunique,經(jīng)理名char(10),地址char(50),char(15),--〔b〕定義參照完整性foreignkey(部門號)referencesSection(部門號));go--〔〕使用SQL語言分別向兩個表中插入行記錄,驗證上面的各種約束條件;--驗證部門名稱不能為空且不能重復(fù),定義約束名為UK_dName;insertintoSectionvalues('a001','市場部門','李永','北工',);insertintoSectionvalues('a002','營銷部門','李剛','北工',);insertintoSectionvalues('a003','營銷部門','李忠','北工',);insertintoSectionvalues('a003',null,'李吧','北工',);insertintoWorkervalues('a001001','王明',20,'市場營銷員',2000,'a001');insertintoWorkervalues('a001002','李村',29,'市場營銷員',2000,'a001');--驗證職工的工資不能為空,且不能小于;insertintoWorkervalues('a002001','羅杰',19,'銷售員',null,'a002');insertintoWorkervalues('a002002','李紅',24,'銷售員',700,'a002');--驗證職工的姓名不能為空;insertintoWorkervalues('a002003',null,32,'經(jīng)理',5000,'a002');--驗證職工的年齡不能小于歲,并且不能超過歲;insertintoWorkervalues('a001003','李永',61,'經(jīng)理',5000,'a001');insertintoWorkervalues('a002004','黃鸝',17,'副經(jīng)理',4500,'a002');--查詢部門表和職工表的數(shù)據(jù)--〔〕將職工的年齡改為不能小于歲,并且不能大于歲;altertableWorkerdropconstraintw_age;altertableWorkeraddconstraintw_agecheck(年齡>16and年齡<65)--驗證職工年齡不能小于歲,并且不能大于歲insertintoWorkervalues('a002005','李芳',15,'副經(jīng)理',4500,'a002');insertintoWorkervalues('a002006','李姓',66,'副經(jīng)理',4500,'a002');--〔〕定義一個表tbl_Emp_Log(eNO,eSalary,Username,ModiDate);在--職工表上定義修改和插入數(shù)據(jù)的觸發(fā)器,--定義表createtabletbl_Emp_Log(idintidentityprimarykey,eNochar(20),eSalarymoney,Usernamechar(20),ModiDateDatetime)--定義插入數(shù)據(jù)的觸發(fā)器createtriggerinsert_EmponWorkerafterinsertasbegininsertintotbl_Emp_Logselect職工號,工資,User_name(),getDate()fromInserted;enddroptriggerinsert_Emp--驗證觸發(fā)器insertintoWorkervalues('a0010011','周濤',29,'市場營銷員',2000,'a001');insertintoWorkervalues('a0010010','霍利',28,'市場營銷員',2000,'a001');select*fromtbl_Emp_Log;droptabletbl_Emp_Log;--定義修改工資的觸發(fā)器createtriggerupdate_EmponWorkerafterupdateasifupdate(工資)begindeclare@eSeleryOldmoney,@eSeletyNewmoneyselect@eSeleryOld=工資fromDeletedselect@eSeletyNew=工資fromInsertedif(@eSeleryOld<>@eSeletyNew)insertintotbl_Emp_Logselect職工號,工資,User_name(),getDate()fromInserted;enddroptriggerupdate_Emp--驗證觸發(fā)器insertintoWorkervalues('a0010021','莉莉',29,'營銷員',3500,'a001');insertintoWorkervalues('a0010020','李麗',28,'市場營銷員',4500,'a001');updateWorkerset工資=5500where職工號='a0010021',updateWorkerset工資=8500where職工號='a0010020',select*from

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論