版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本科實(shí)驗(yàn)報(bào)告課程名稱(chēng):大型數(shù)據(jù)庫(kù)系統(tǒng)實(shí)驗(yàn)工程:創(chuàng)立數(shù)據(jù)庫(kù)和表實(shí)驗(yàn)地點(diǎn):多學(xué)科樓4506專(zhuān)業(yè)班級(jí):軟件工程0901學(xué)號(hào):200學(xué)生姓名:指導(dǎo)教師:2023年4月17日實(shí)驗(yàn)?zāi)康暮鸵罅私鈹?shù)據(jù)庫(kù)的結(jié)構(gòu)以及一些根本概念。了解表的結(jié)構(gòu)特點(diǎn)。了解Oracle11g的根本數(shù)據(jù)類(lèi)型。學(xué)會(huì)使用DBCA創(chuàng)立數(shù)據(jù)庫(kù)。學(xué)會(huì)使用界面方式創(chuàng)立表。學(xué)會(huì)使用SQL語(yǔ)句手工創(chuàng)立數(shù)據(jù)庫(kù)。學(xué)會(huì)使用SQL語(yǔ)句創(chuàng)立表。實(shí)驗(yàn)內(nèi)容和原理能夠創(chuàng)立數(shù)據(jù)庫(kù)的用戶(hù)必須是系統(tǒng)管理員,或是被授權(quán)使用CREATEDATABASE語(yǔ)句的用戶(hù)。創(chuàng)立數(shù)據(jù)庫(kù)必須要確定數(shù)據(jù)庫(kù)名、所有者〔即創(chuàng)立數(shù)據(jù)庫(kù)的用戶(hù)〕、數(shù)據(jù)庫(kù)大小、SGA分配和存儲(chǔ)數(shù)據(jù)庫(kù)的文件。確定數(shù)據(jù)庫(kù)包含哪些表以及所包含的各表的結(jié)構(gòu),還要了解Oracle11g的常用數(shù)據(jù)類(lèi)型,以創(chuàng)立數(shù)據(jù)庫(kù)的表。創(chuàng)立企業(yè)管理的員工管理數(shù)據(jù)庫(kù)YGGL,包含Employees〔員工自然信息〕表、Departments〔部門(mén)信息〕表和Salary〔員工薪水情況〕表。各表的結(jié)構(gòu)如下所示。表T1.1Employees表結(jié)構(gòu)列名數(shù)據(jù)類(lèi)型長(zhǎng)度是否允許為空值說(shuō)明EmployeeIDChar6×員工編號(hào),主鍵NameChar10×姓名BirthdayDate×出生日期SexNumber1×性別AddressChar20√地址ZipChar6√PhoneNumberChar12√號(hào)碼DepartmentChar3×員工部門(mén)號(hào)、外鍵表T1.2Departments表結(jié)構(gòu)列名數(shù)據(jù)類(lèi)型長(zhǎng)度是否允許為空值說(shuō)明DepartmentIDChar3×部門(mén)編號(hào)、主鍵DepartmentNameChar20×部門(mén)號(hào)NoteVarchar2100√備注表T1.3Salary表結(jié)構(gòu)列名數(shù)據(jù)類(lèi)型長(zhǎng)度是否允許為空值說(shuō)明EmplyeeIDChar6×員工編號(hào)、主鍵InComeNumber8,2×收入OutComeNumber8,2×支出主要儀器設(shè)備WindowsXP/7、oracle10g/11g操作方法與實(shí)驗(yàn)步驟利用DBCA創(chuàng)立數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)名稱(chēng)為YGGL,它的全局?jǐn)?shù)據(jù)庫(kù)名稱(chēng)為YGGL。控制文件三個(gè),存放路徑為……,名稱(chēng)分別為CONTROL01.CR、CONTROL02.CR和CONTROL03.CR。重做日志文件三個(gè),大小為100MB,存放路徑為:………………,名稱(chēng)分別為redo01.log、redo02.log和redo03.log。創(chuàng)立臨時(shí)表空間temp01.dpf。數(shù)字字符集為ZHS16GBK,國(guó)家字符集為AL16UTF16。數(shù)據(jù)塊大小為4KB。進(jìn)入DBCA,根據(jù)其提示逐步完成數(shù)據(jù)庫(kù)的創(chuàng)立工作。實(shí)際情況,我以創(chuàng)立表空間代替。利用DBCA刪除數(shù)據(jù)庫(kù)〔實(shí)際不操作〕在OEM和利用sql語(yǔ)句分別創(chuàng)立表下面列出建表語(yǔ)句:/**創(chuàng)立Departments表*/createtableDepartments(department_idchar(3),department_namevarchar2(20)notnull,notevarchar2(100),constraintdepartments_pkprimarykey(department_id))tablespaceyggl;/**創(chuàng)立Salary表*/createtableSalary(employee_idchar(6),incomenumber(8,2)notnull,outcomenumber(8,2)notnull,constraintSalary_pkprimarykey(employee_id),constraintemployee_id_foreign_keyforeignkey(employee_id)referencesemployees(employee_id))tablespaceyggl;實(shí)驗(yàn)結(jié)果與分析創(chuàng)立表空間:以下為創(chuàng)立表,因?yàn)樽约旱拿?xí)慣,對(duì)其中局部名稱(chēng)進(jìn)行了修正,另外,一些數(shù)據(jù)的數(shù)據(jù)類(lèi)型該用更適宜的數(shù)據(jù)類(lèi)型。創(chuàng)立employees表:利用sql語(yǔ)句建表也全部成功。討論、心得〔可選〕本次試驗(yàn)考察內(nèi)容根本為數(shù)據(jù)定義語(yǔ)言,有數(shù)據(jù)庫(kù)的創(chuàng)立〔因?yàn)橐郧耙呀ㄟ^(guò)了,所以這次我用名稱(chēng)空間代替〕,表的創(chuàng)立〔圖形化操作與sql語(yǔ)句操作〕。差不多就這樣子,通過(guò)這次試驗(yàn)大概可以掌握oracle數(shù)據(jù)庫(kù)的根本操作,主要有助于對(duì)其環(huán)境的熟悉。本科實(shí)驗(yàn)報(bào)告課程名稱(chēng):大型數(shù)據(jù)庫(kù)系統(tǒng)實(shí)驗(yàn)工程:表數(shù)據(jù)插入、修改和刪除實(shí)驗(yàn)地點(diǎn):多學(xué)科樓4506專(zhuān)業(yè)班級(jí):軟件工程0901學(xué)號(hào):20230學(xué)生姓名:指導(dǎo)教師:2012年4實(shí)驗(yàn)?zāi)康暮鸵髮W(xué)會(huì)使用PL/SQL語(yǔ)句對(duì)數(shù)據(jù)庫(kù)表進(jìn)行插入、修改和刪除數(shù)據(jù)操作。學(xué)會(huì)使用SQLDeveloper對(duì)數(shù)據(jù)庫(kù)表進(jìn)行插入、修改和刪除數(shù)據(jù)的操作。了解數(shù)據(jù)更新操作時(shí)要注意數(shù)據(jù)完整性。了解PL/SQL語(yǔ)句對(duì)表數(shù)據(jù)操作的靈活控制功能。實(shí)驗(yàn)內(nèi)容和原理了解對(duì)表數(shù)據(jù)的插入、刪除、修改都屬于表數(shù)據(jù)的更新操作。對(duì)表數(shù)據(jù)的操作可以在SQLDeveloper中進(jìn)行,也可以由PL/SQL語(yǔ)句實(shí)現(xiàn)。掌握PL/SQL語(yǔ)句中用于對(duì)表數(shù)據(jù)進(jìn)行插入、修改和刪除的命令分別是INSERT、UPDATE和DELETE〔或TRANCATETABLE〕。在執(zhí)行插入、刪除、修改等數(shù)據(jù)更新操作時(shí),必須保證數(shù)據(jù)的完整性。使用PL/SQL語(yǔ)句在對(duì)表數(shù)據(jù)進(jìn)行插入、修改及刪除時(shí),比在OEM中操作表數(shù)據(jù)更為靈活,功能更強(qiáng)大。在實(shí)驗(yàn)1中,用于實(shí)驗(yàn)的YGGL數(shù)據(jù)庫(kù)中的三個(gè)表已經(jīng)建立,現(xiàn)在要將各表的樣本數(shù)據(jù)添加到表中。樣本數(shù)據(jù)如表T2.1、表T2.2和表T2.3所示。表T2.1Employees表數(shù)據(jù)樣本編號(hào)姓名出生日期性別住址號(hào)碼部門(mén)號(hào)000001王林1966-01-231中山路32-1-508210003833556682010008伍容華1976-03-281北京東路100-2210001833213211表T2.2Departments表數(shù)據(jù)樣本部門(mén)號(hào)部門(mén)名稱(chēng)備注部門(mén)號(hào)部門(mén)名稱(chēng)備注1財(cái)務(wù)部NULL4研發(fā)部NULL2人力資源部NULL5市場(chǎng)部NULL3經(jīng)理辦公室NULL表T2.3Salary表數(shù)據(jù)樣本編號(hào)收入支出編號(hào)收入支出0000012100.8123.091089913259.98281.520100081582.6288.030200102860.0198.01022012568.88185.650200182347.68180.0主要儀器設(shè)備WINDOWSXP/WINDOWS7Oracle10g/11g操作方法與實(shí)驗(yàn)步驟分別使用SQLDeveloper和PL/SQL語(yǔ)句,在實(shí)驗(yàn)1建立的數(shù)據(jù)庫(kù)YGGL的表Employees、表Departments和表Salary中插入多行數(shù)據(jù)記錄,然后修改和刪除一些記錄。使用PL/SQL命令進(jìn)行有限制的修改和刪除。使用SQLDeveloper操作數(shù)據(jù)啟動(dòng)SQLDeveloper,展開(kāi)yggl_ora連接,單擊〞Employees〞表,在左邊窗口中選擇〞Data〞選項(xiàng)卡。在此窗口中,單擊〞Insertrow〞按鈕,表中將增加一個(gè)新行,在新行中雙擊一列空白處后輸入新數(shù)據(jù),輸完后單擊〞CommitChanges〞按鈕,將數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中。修改數(shù)據(jù)的方法和添加數(shù)據(jù)類(lèi)似,如果要?jiǎng)h除一行數(shù)據(jù),選中該行數(shù)據(jù),單擊〞DeleteSelectedRow(s)〞按鈕,之后該行的行號(hào)前會(huì)顯示一個(gè)“——〞號(hào),刪除后單擊〞CommitChanges〞按鈕保存。使用PL/SQL命令操作數(shù)據(jù)使用PL/SQL語(yǔ)句分別向YGGL數(shù)據(jù)庫(kù)的表Employees、表Departments和表Salary中插入插入一行記錄。在啟動(dòng)SQL*Plus窗口或SQLDeveloper的代碼編輯窗口中,輸入以下PL/SQL語(yǔ)句并執(zhí)行:一下為對(duì)3個(gè)表的數(shù)據(jù)的所有插入語(yǔ)句:/**向DEPARTMENTS表中插入數(shù)據(jù)樣本*/insertintoDEPARTMENTSvalues('001','財(cái)務(wù)部',null);insertintoDEPARTMENTSvalues('002','人力資源部',null);INSERTINTODepartmentsVALUES('003','經(jīng)理辦公室',NULL);INSERTINTODepartmentsVALUES('004','研發(fā)部',NULL);INSERTINTODepartmentsVALUES('005','市場(chǎng)部',NULL);commit;/**向employee表中插入數(shù)據(jù)樣本*/insertintoemployeesvalues('000001','王林',to_date('1966-01-23','YYYY-MM-DD'),1,'中山路32-1-508','210003','83355668','002');INSERTINTOEmployeesVALUES('010008','伍容華',TO_DATE('19760328','YYYYMMDD'),1,'北京東路100-2','210001','83321321','001');insertintoemployeesvalues('020010','王向榮',to_date('1982-12-19','YYYY-MM-DD'),1,'四牌樓10-0-108','210006','83792361','001');INSERTINTOEmployeesVALUES('020018','李麗',TO_DATE('19600723','YYYYMMDD'),0,'中山東路102-2','210002','83413301','001');INSERTINTOEmployeesVALUES('102201','劉明',TO_DATE('19721018','YYYYMMDD'),1,'虎距路100-2','210013','83606608','005');INSERTINTOEmployeesVALUES('102208','朱俊',TO_DATE('19650928','YYYYMMDD'),1,'牌樓巷5-3-106','210004','84708817','005');INSERTINToEmployeesVALUES('108991','鐘敏',TO_DATE('19790810','YYYYMMDD'),0,'中山路10-3-105','210003','83346722','003');INSERTINTOEmployeesVALUES('111006','張石兵',TO_DATE('19741001','YYYYMMDD'),1,'解放路34-1-203','210010','84563418','005');INSERTINTOEmployeesVALUES('210678','林濤',TO_DATE('19770402','YYYYMMDD'),1,'中山北路24-35','210008','83467336','003');INSERTINToEmployeesVaLUES('302566','李玉珉',TO_DATE('19680920','YYYYMMDD'),1,'熱和路209-3','210001','58765991','004');INSERTINTOEmployeesVALUES('308759','葉凡',TO_DATE('19781118','YYYYMMDD'),1,'北京西路3-7-52','210002','83308901','004');INSERTINTOEmployeesVALUES('504209','陳琳琳',TO_DATE('19690903','YYYYMMDD'),0,'漢中路120-4-12','210018','84468158','004');commit;/**向Salary表中插入數(shù)據(jù)樣本*/insertintoSalaryvalues('000001',2100.8,123.09);INSERTINTOSalaryVALUES('010008',1582.62,88.03);INSERTINTOSalaryVALUES('102201',2569.88,185.65);INSERTINTOSalaryVALUES('111006',1987.01,79.58);INSERTINTOSalaryVALUES('504209',2066.15,108.0);INSERTINTOSalaryVALUES('302566',2980.7,210.2);INSERTINTOSalaryVALUES('108991',3259.98,281.52);INSERTINTOSalaryVALUES('020010',2860.0,198.0);INSERTINTOSalaryVALUES('020018',2347.68,180.0);INSERTINTOSalaryVALUES('308759',2531.98,199.08);INSERTINTOSalaryVALUES('210678',2240.0,121.0);INSERTINTOSalaryVALUES('102208',1980.0,100.0);commit;使用PL/SQL命令修改表Salary中的某個(gè)記錄的字段值。語(yǔ)句:/**updateSALARY表**/UPDATESALARYSETINCOME=2890WHEREEMPLOYEE_ID='000001';COMMIT;按回車(chē)鍵,執(zhí)行上述語(yǔ)句,將編號(hào)為000001的職工收入改為2890.在OEM中翻開(kāi)YGGL數(shù)據(jù)庫(kù)的Salary表,觀察數(shù)據(jù)變化。使用PL/SQL語(yǔ)句修改表Salary中的所有記錄的字段值。在SQL*Plus界面中輸入以下PL/SQL語(yǔ)句:語(yǔ)句/***將其所有行的IMCOME加100**/UPDATESALARYSETINCOME=INCOME+100;COMMIT;按回車(chē)鍵,執(zhí)行上述語(yǔ)句,將所有職工的收入增加100??梢?jiàn),使用PL/SQL語(yǔ)句操作表數(shù)據(jù)比在SQLDeveloper中操作表數(shù)據(jù)更為靈活。輸入以下PL/SQL語(yǔ)句,觀察數(shù)據(jù)變化。SELECT*FROMSalary;使用DELETE語(yǔ)句刪除Salary表中一行記錄。/***刪除salary表中的一行記錄**/DELETEFROMSALARYWHEREemployee_id='010008';COMMIT;使用TRANCATETABLE語(yǔ)句刪除表中所有行。在SQL*Plus界面中輸入以下PL/SQL語(yǔ)句:/***清空表**/deletefromSalary;deletefromemployees;deletefromdepartments;TRUNCATETABLESALARY;實(shí)驗(yàn)結(jié)果與分析按上述過(guò)程操作,試驗(yàn)結(jié)果均滿(mǎn)足預(yù)期要求。討論、心得〔可選〕本次試驗(yàn)主要考察對(duì)表的數(shù)據(jù)的根本更新操作,即dml語(yǔ)言。通過(guò)對(duì)表的增刪改操作熟悉對(duì)應(yīng)的sql語(yǔ)句以及OEM操作。本科實(shí)驗(yàn)報(bào)告課程名稱(chēng):大型數(shù)據(jù)庫(kù)系統(tǒng)實(shí)驗(yàn)工程:數(shù)據(jù)庫(kù)的查詢(xún)和視圖實(shí)驗(yàn)地點(diǎn):多學(xué)科樓506專(zhuān)業(yè)班級(jí):軟件工程0901學(xué)號(hào):202300學(xué)生姓名:指導(dǎo)教師:2023年4月21日實(shí)驗(yàn)?zāi)康暮鸵?、掌握SELECT語(yǔ)句的根本語(yǔ)法2、掌握子查詢(xún)的表示方法3、掌握連接查詢(xún)的表示方法4、掌握數(shù)據(jù)匯總的方法5、掌握SELECT語(yǔ)句的GROUPBY子句的作用和使用方法6、掌握SELECT語(yǔ)句的ORDERBY子句的作用和使用方法7、掌握視圖的使用方法二、實(shí)驗(yàn)內(nèi)容1.了解SELECT語(yǔ)句的根本語(yǔ)法格式和執(zhí)行方法2.了解子查詢(xún)的表示方法、連接查詢(xún)和數(shù)據(jù)匯總的方法3.了解SELECT語(yǔ)句的GROUPBY子句的作用和使用方法4.了解SELECT語(yǔ)句的ORDERBY子句的作用5.了解視圖的作用和創(chuàng)立方法6.了解視圖的使用方法三、實(shí)驗(yàn)環(huán)境與設(shè)備Win7、Oracle11g四、操作方法與實(shí)驗(yàn)步驟1、SELECT語(yǔ)句的根本使用〔1〕對(duì)于實(shí)驗(yàn)2給出的數(shù)據(jù)庫(kù)表結(jié)構(gòu),查詢(xún)每個(gè)雇員的所有數(shù)據(jù)在SQL*Plus窗口或SQLDeveloper中輸入語(yǔ)句并執(zhí)行SELECT*FROMEmployees;SELECT*FROMDepartments;SELECT*FROMSalary;〔2〕查詢(xún)每個(gè)雇員的地址和/***查詢(xún)每個(gè)雇員的地址和**/SELECTADDRESS,PHONE_NUMBERFROMEMPLOYEES;〔3〕查詢(xún)EmployeeID為000001的雇員的地址和SELECTAddress,PhoneNumberFROMEmployeesWHEREEmployee_ID='000001';〔4〕查詢(xún)Employees表中所有女雇員的地址和,使用AS子句將結(jié)果中各列的標(biāo)題分別指定為地址和SELECTAddressAS地址,PhoneNumberASFROMEmployeesWHEREsex=0;/***查詢(xún)每個(gè)女性雇員的地址和,并對(duì)列名重新命名**/SELECTADDRESSas地址,PHONE_NUMBERFROMEMPLOYEESWHERESEX='0';〔5〕計(jì)算ID號(hào)以10開(kāi)頭的雇員的實(shí)際收入/***計(jì)算ID號(hào)以10開(kāi)頭的雇員的實(shí)際收入**/SELECTemployee_id,INCOME-OUTCOMEAS實(shí)際收入FROMSALARYWHEREEMPLOYEE_IDLIKE'10%';子查詢(xún)的使用查找在財(cái)務(wù)部工作的雇員的情況SELECT*FROMEMPLOYEESWHEREDepartment_ID=(SELECTDepartment_IDFROMDepartmentsWHEREDepartmentName='財(cái)務(wù)部');查詢(xún)財(cái)務(wù)部年齡不低于所有研發(fā)部雇員年齡的雇員的姓名/***查找財(cái)務(wù)部年齡不低于所有研發(fā)部雇員年齡的雇員的姓名**/SELECT*FROMEMPLOYEESWHEREdepartment_idIN(SELECTDEPARTMENT_IDFROMdepartmentsWHEREdepartment_name='財(cái)務(wù)部')ANDbirthday<=ALL(SELECTBIRTHDAYFROMEMPLOYEESWHEREDEPARTMENT_IDIN(SELECTDEPARTMENT_IDFROMdepartmentsWHEREdepartment_name='研發(fā)部'));查找比所有財(cái)務(wù)部的雇員收入都搞得雇員的姓名/***查找比所有財(cái)務(wù)部的雇員收入都要高的雇員的姓名**/SELECTNAMEFROMEMPLOYEESWHEREEMPLOYEE_idIN(SELECTEMPLOYEE_IDFROMSALARYWHEREINCOME>=ALL(SELECTINCOMEFROMSALARYWHEREEMPLOYEE_IDIN(SELECTEMPLOYEE_IDFROMEMPLOYEESWHEREDEPARTMENT_ID=(SELECTDEPARTMENT_IDFROMDEPARTMENTSWHEREDEPARTMENT_NAME='財(cái)務(wù)部'))))3、連接查詢(xún)的使用〔1〕查詢(xún)每個(gè)雇員的情況以及其薪水的情況SELECTEmployees.*,Salary.*FROMEmployees,SalaryWHEREEmployees.Employee_ID=Salary.Employee_ID;〔2〕查找財(cái)務(wù)部收入在2200元以上的雇員的姓名及其薪水詳情/***查找財(cái)務(wù)部收入在2200元以上的雇員姓名及其薪水詳情**/SELECTname,INCOME,OUTCOMEFROMEMPLOYEES,SALARY,DEPARTMENTSWHEREemployees.employee_id=salary.employee_idANDemployees.department_id=departments.department_idANDdepartments.department_NAME='財(cái)務(wù)部'ANDINCOME>2200;數(shù)據(jù)匯總求財(cái)務(wù)部雇員的平均收入/***查找財(cái)務(wù)部雇員的平均收入**/SELECTAVG(INCOME)FROMSALARY,EMPLOYEES,DEPARTMENTSWHEREsalary.employee_id=employees.employee_idANDemployees.department_id=departments.department_idANDdepartments.department_name='財(cái)務(wù)部';求財(cái)務(wù)部雇員的平均實(shí)際收入SELECTAVG(InCome-OutCome)AS財(cái)務(wù)部平均實(shí)際收入FROMSalaryWHEREEmployee_IDIN(SELECTEmployee_IDFROMEmployeesWHEREDepartment_ID=(SELECTDepartment_IDFROMDepartmentsWHEREDepartment_Name='財(cái)務(wù)部'));求財(cái)務(wù)部雇員的總?cè)藬?shù)SELECTCOUNT(Employee_ID)FROMEmployeesWHEREDepartment_ID=(SELECTDepartment_IDFROMDepartmentsWHEREDepartment_Name='財(cái)務(wù)部');5、GROUPBY和ORDERBY子句的使用〔1〕求各部門(mén)的雇員數(shù)/***求各部門(mén)的雇員數(shù)**/SELECTDEPARTMENT_NAME,COUNT(*)FROMEMPLOYEES,departmentsWHEREemployees.department_id=departments.department_idGROUPBYDEPARTMENTS.department_NAME;〔2〕將各部門(mén)的情況按收入由低到高排列/***將各雇員的情況按收入由低到高排序**/SELECTEMPLOYEES.*,SALARY.INCOME,salary.outcomeFROMEMPLOYEES,SALARYWHEREemployees.employee_id=salary.employee_idORDERBYINCOME;使用視圖〔1〕創(chuàng)立視圖a、限制查看雇員的實(shí)際情況CREATEORREPLACEVIEWcx_employeesASSELECTEmployeeID,Name,Birthday,Sex,DepartmentIDFROMEmployees;b、限制各部門(mén)經(jīng)理只能查找本部門(mén)雇員的薪水情況,如限制財(cái)務(wù)經(jīng)理想查看自己部門(mén)雇員姓名及其薪水詳情/***創(chuàng)立財(cái)務(wù)部視圖**/CREATEORREPLACEVIEWCX_SALARYASSELECTNAME,INCOME,OUTCOMEFROMEMPLOYEES,SALARY,DEPARTMENTSWHEREemployees.employee_id=salary.employee_idANDemployees.department_id=departments.department_idANDdepartment_name='財(cái)務(wù)部';〔2〕使用視圖/***查詢(xún)財(cái)務(wù)部雇員薪水情況**/SELECT*FROMCX_SALARY;五、實(shí)驗(yàn)結(jié)果與分析查詢(xún)employees表的全部數(shù)據(jù)查詢(xún)每個(gè)雇員的地址和查詢(xún)每個(gè)女性雇員的地址和,并對(duì)列名重新命名計(jì)算ID號(hào)以10開(kāi)頭的雇員的實(shí)際收入查找財(cái)務(wù)部年齡不低于所有研發(fā)部雇員年齡的雇員的姓名查找比所有財(cái)務(wù)部的雇員收入都要高的雇員的姓名查找財(cái)務(wù)部收入在2200元以上的雇員姓名及其薪水詳情查找財(cái)務(wù)部雇員的平均收入求各部門(mén)的雇員數(shù)將各雇員的情況按收入由低到高排序查詢(xún)財(cái)務(wù)部雇員薪水情況六、討論、心得本實(shí)驗(yàn)考察對(duì)表的查詢(xún)操作,算是sql語(yǔ)句中最常用的操作,這也是我們每個(gè)學(xué)生應(yīng)該必須掌握的根本操作,此后是關(guān)于視圖的局部,它是一個(gè)很有效的功能,能夠有效限制各用戶(hù)只對(duì)自己有權(quán)操作的數(shù)據(jù)進(jìn)行操作。本科實(shí)驗(yàn)報(bào)告課程名稱(chēng):大型數(shù)據(jù)庫(kù)系統(tǒng)實(shí)驗(yàn)工程:索引和完整性實(shí)驗(yàn)地點(diǎn):多學(xué)科樓506專(zhuān)業(yè)班級(jí):軟件工程0901學(xué)號(hào):2023學(xué)生姓名:指導(dǎo)教師:2023年4月21日一、實(shí)驗(yàn)?zāi)康暮鸵竽康模骸?〕掌握索引的使用方法〔2〕掌握數(shù)據(jù)完整性的概念及分類(lèi)〔3〕掌握各種數(shù)據(jù)完整性的實(shí)現(xiàn)方法要求:〔1〕了解索引的作用與分類(lèi)〔2〕掌握索引的創(chuàng)立〔3〕理解數(shù)據(jù)完整性的概念及分類(lèi)〔4〕了解各種數(shù)據(jù)完整性的實(shí)現(xiàn)方法二、實(shí)驗(yàn)內(nèi)容和原理1、建立索引對(duì)YGGL數(shù)據(jù)庫(kù)中Employees表的DepartmentID列建立索引/***在Employees表的Departm_ID列建立索引**/createindexEMP_DEIDONEMPLOYEES(DEPARTMENT_ID)TABLESPACEUSERSPCTFREE48INITRANS10MAXTRANS100STORAGE(INITIAL64KNEXT64KMINEXTENTS5MAXEXTENTS20PCTINCREASE10FREELISTS1FREELISTGROUPS1)PARALLEL(DEGREEDEFAULT);實(shí)現(xiàn)域完整性/***在Employees表的phone_number列上建立check約束**/ALTERTABLEEMPLOYEESADD(CONSTRAINTCH_PHONECHECK(PHONE_NUMBERBETWEEN'0'AND'9'));實(shí)現(xiàn)實(shí)體完整性〔參見(jiàn)實(shí)驗(yàn)1〕實(shí)現(xiàn)參照完整性〔參見(jiàn)實(shí)驗(yàn)1〕三、主要儀器設(shè)備Win7、Oracle11g四、實(shí)驗(yàn)結(jié)果與分析〔必填〕在Employees表的Departm_ID列建立索引在Employees表的phone_number列上建立check約束五、討論、心得本次實(shí)驗(yàn)首先是對(duì)索引的建立,它是一種可以提升用戶(hù)查詢(xún)效率的機(jī)制,在這一局部,我有注意到建立索引時(shí)是需要指定模式名的,似乎不同的用戶(hù)查詢(xún)同一張表格可能會(huì)用到不同的索引,不知道這樣理解正不正確。然后就是關(guān)于完整性的局部,由于在實(shí)驗(yàn)一建立表的時(shí)候,我就已經(jīng)安照要求建立好了完整性約束,所以這里沒(méi)有再重復(fù)做。本科實(shí)驗(yàn)報(bào)告課程名稱(chēng):大型數(shù)據(jù)庫(kù)系統(tǒng)實(shí)驗(yàn)工程:PL/SQL編程實(shí)驗(yàn)地點(diǎn):多學(xué)科樓506專(zhuān)業(yè)班級(jí):軟件工程1學(xué)號(hào):2002學(xué)生姓名:指導(dǎo)教師:2023年4月21日實(shí)驗(yàn)?zāi)康呐c要求進(jìn)一步穩(wěn)固第2章~第4章所學(xué)內(nèi)容掌握變量的分類(lèi)與使用掌握各種運(yùn)算符的使用掌握各種控制語(yǔ)句的使用掌握系統(tǒng)函數(shù)及用戶(hù)自定義函數(shù)的使用實(shí)驗(yàn)內(nèi)容和原理了解PL/SQL支持的各種根本數(shù)據(jù)類(lèi)型了解PL/SQL各種運(yùn)算符、控制語(yǔ)句的功能及使用方法了解系統(tǒng)函數(shù)的調(diào)用方法了解用戶(hù)自定義函數(shù)時(shí)用的一般步驟主要儀器設(shè)備WindowsXP/7、oracle10g/11g操作方法與實(shí)驗(yàn)步驟條件結(jié)構(gòu)的使用在SQL*Plus的編輯窗口中分別輸入【例6.5】、【例6.6】、【例6.7】和例【6.8】程序并執(zhí)行。觀察結(jié)果。循環(huán)結(jié)構(gòu)的使用在SQL*Plus的編輯窗口中分別輸入【例6.9】、【例6.10】、【例6.11】和例【6.12】程序并執(zhí)行。觀察結(jié)果。選擇和跳轉(zhuǎn)語(yǔ)句在SQL*Plus的編輯窗口中分別輸入【例6.13】和【例6.14】程序并執(zhí)行。觀察結(jié)果。自定義函數(shù)的使用定義一個(gè)函數(shù)實(shí)現(xiàn)如下功能。對(duì)于給定的DepartmentID值,查詢(xún)?cè)撝翟贒epartments表中是否存在,假設(shè)存在返回0,否那么返回-1。語(yǔ)句:/***給定一個(gè)Department_id值,查詢(xún)其在Departments表中是否存在,假設(shè)存在返回0,否那么返回-1.**/CREATEORREPLACEFUNCTIONCHECK_ID(P_DEPARTMENT_IDINCHAR)RETURNNUMBERASNUMNUMBER;BEGINSELECTCOUNT(*)INTONUMFROMDEPARTMENTSWHEREDEPARTMENT_ID=P_DEPARTMENT_ID;IFNUM>0THENNUM:=0;ELSENUM:=-1;ENDIF;RETURN(NUM);END;寫(xiě)一段PL/SQL腳本程序調(diào)用上述函數(shù)。當(dāng)向Employees表中插入一條記錄時(shí),首先調(diào)用CHECK_ID檢索該記錄的DepartmentID值在表Departments的DepartmentID字段中是否存在對(duì)應(yīng)值,假設(shè)存在,那么將該記錄插入Employees表。語(yǔ)句:/***對(duì)上述函數(shù)進(jìn)行測(cè)試**/setserveroutputonDECLARENUMNUMBER;BEGINNUM:=check_id('002');IFNUM=0THENdbms_output.put_line('存在!');INSERTINTOEMPLOYEESVALUES('990210','張文',TO_DATE('19820324','yyyymmdd'),0,'南京鎮(zhèn)江路2號(hào)','210009','3497534','002');ENDIF;END;實(shí)驗(yàn)結(jié)果與分析給定一個(gè)Department_id值,查詢(xún)其在Departments表中是否存在,假設(shè)存在返回0,否那么返回-1.對(duì)上述函數(shù)進(jìn)行測(cè)試討論、心得本實(shí)驗(yàn),書(shū)上給的實(shí)例代碼是不能正確運(yùn)行的,主要原因是PL/SQL在執(zhí)行時(shí)并不區(qū)分大寫(xiě)小,所以必須給參數(shù)和變量命不同的名字。然后就是,在調(diào)試程序時(shí),我用了dbms_output.put_line('存在!');這樣的打印語(yǔ)句,它需要翻開(kāi)輸入效勞才能在sqldeveloper環(huán)境下正確運(yùn)行。setserveroutputon;本科實(shí)驗(yàn)報(bào)告課程名稱(chēng):大型數(shù)據(jù)庫(kù)系統(tǒng)實(shí)驗(yàn)工程:實(shí)驗(yàn)6存儲(chǔ)過(guò)程和觸發(fā)器的使用實(shí)驗(yàn)地點(diǎn):學(xué)院樓502專(zhuān)業(yè)班級(jí):軟件0901學(xué)號(hào):20學(xué)生姓名:指導(dǎo)教師:2023年4月21日實(shí)驗(yàn)?zāi)康暮鸵笳莆沾鎯?chǔ)過(guò)程的使用方法掌握觸發(fā)器的使用方法實(shí)驗(yàn)內(nèi)容和原理創(chuàng)立觸發(fā)器對(duì)表Employees的DepartmentID列與表Departments的DepartmentID列應(yīng)滿(mǎn)足參照完整性,規(guī)那么如下:向表Employees添加一條記錄時(shí),該記錄的DepartmentID在Departments表中應(yīng)存在:修改Departments表DepartmentID字段時(shí)在Employees表中應(yīng)對(duì)應(yīng)修改。刪除Departments表中一記錄時(shí),該記錄對(duì)于于Employees表中的記錄也應(yīng)刪除.利用觸發(fā)器實(shí)現(xiàn)上述約束。創(chuàng)立存儲(chǔ)過(guò)程添加職員記錄的存儲(chǔ)過(guò)程EmployeeAdd。修改職員記錄的存儲(chǔ)過(guò)程EmployeeUpdate。刪除職員記錄的存儲(chǔ)過(guò)程EmployeeDelete。調(diào)用存儲(chǔ)過(guò)程主要儀器設(shè)備Win7電腦一臺(tái),oracle11g操作方法與實(shí)驗(yàn)步驟創(chuàng)立觸發(fā)器對(duì)表Employees的 DEPARTMENT_ID列與表Departments的 DEPARTMENT_ID列應(yīng)滿(mǎn)足參照完整性,規(guī)那么如下:向表Employees添加一條記錄時(shí),該記錄的 DEPARTMENT_ID在Departments表中應(yīng)存在:/***向表Employees添加或修改一條記錄時(shí),該記錄的 DEPARTMENT_ID在Departments表中應(yīng)存在**/CREATEORREPLACETRIGGEREMPLOYEES_INSAFTERINSERTORUPDATEONEMPLOYEESFOREACHROWDECLARENUMNUMBER;BEGINSELECTCOUNT(*)INTONUMFROMDEPARTMENTSWHEREDEPARTMENT_ID=:NEW.DEPARTMENT_ID;IFNUM=0THENRAISE_APPLICATION_ERROR(-20001,'職員所在的部門(mén)不存在');ENDIF;END;修改Departments表 DEPARTMENT_ID字段時(shí)在Employees表中應(yīng)對(duì)應(yīng)修改。/***修改Departments表 DEPARTMENT_ID字段時(shí)在Employees表中應(yīng)對(duì)應(yīng)修改**/CREATEORREPLACETRIGGERDEPARTMENTS_UPDATEAFTERUPDATEONDEPARTMENTSFOREACHROWBEGINUPDATEEMPLOYEESSETDEPARTMENT_ID=:NEW.DEPARTMENT_IDWHEREDEPARTMENT_ID=:OLD.DEPARTMENT_ID;END;刪除Departments表中一記錄時(shí),該記錄對(duì)于于Employees表中的記錄也應(yīng)刪除./***刪除Departments表中一記錄時(shí),該記錄對(duì)于于Employees表中的記錄也應(yīng)刪除**/CREATEORREPLACETRIGGERDEPARTMENTS_DELETEAFTERDELETEONDEPARTMENTSFOREACHROWBEGINDELETEFROMEMPLOYEESWHEREDEPARTMENT_ID=:OLD.DEPARTMENT_ID;END;因?yàn)镋mployees表與Salary表存在外鍵約束,所以,對(duì)于此也建立一個(gè)觸發(fā)器以使得上面的觸發(fā)器有效。/***刪除Employees表中一記錄時(shí),該記錄對(duì)于于Salary表中的記錄也應(yīng)刪除**/CREATEORREPLACETRIGGEREMPLOYEES_SALARYAFTERDELETEONEMPLOYEESFOREACHROWBEGINDELETEFROMSALARYWHEREEMPLOYEE_ID=:OLD.EMPLOYEE_ID;END;存儲(chǔ)過(guò)程的創(chuàng)立及調(diào)用添加職員記錄的存儲(chǔ)過(guò)程EmployeeAdd。/***添加職員記錄的存儲(chǔ)過(guò)程EmployeeAdd**/CREATEORREPLACEPROCEDUREEMPLOYEE_ADD(P_EMPLOYEE_IDINCHAR,P_NAMEINCHAR,P_BIRTHDAYINDATE,P_SEXINNUMBER,P_ADDRESSINCHAR,P_ZIPINCHAR,P_PHONE_NUMBERINCHAR,P_DEPARTMENT_IDINCHAR)ASBEGININSERTINTOEMPLOYEESVALUES(P_EMPLOYEE_ID,P_NAME,P_BIRTHDAY,P_SEX,P_ADDRESS,P_ZIP,P_PHONE_NUMBER,P_DEPARTMENT_ID);COMMIT;END;EXECEMPLOYEE_ADD('990230','劉朝',TO_DATE('19890909','YYYYMMDD'),1,'武漢小洪山5號(hào)','210003','83355668','003');〔這里注意,調(diào)用存儲(chǔ)過(guò)程時(shí)不能換行!〕修改職員記錄的存儲(chǔ)過(guò)程EmployeeUpdate。/***修改職員記錄的存儲(chǔ)過(guò)程EmployeeUpdate**/CREATEORREPLACEPROCEDUREEMPLOYEE_UPDATE(OLD_EMPLOYEE_IDINCHAR,P_NAMEINCHAR,P_BIRTHDAYINDATE,P_SEXINNUMBER,P_ADDRESSINCHAR,P_ZIPINCHAR,P_PHONE_NUMBERINCHAR,P_DEPARTMENT_IDINCHAR)ASBEGINUPDATEEMPLOYEESSETname=P_NAME,BIRTHDAY=P_BIRTHDAY,SEX=P_SEX,ADDRESS=P_ADDRESS,ZIP=P_ZIP,PHONE_NUMBER=P_PHONE_NUMBER,DEPARTMENT_ID=P_DEPARTMENT_IDWHEREEMPLOYEE_ID=OLD_EMPLOYEE_ID;COMMIT;END;EXECEMPLOYEE_UPDATE('990230','劉天',TO_DATE('19890909','YYYYMMDD'),1,'武漢小洪山5號(hào)','210003','83355668','003');刪除職員記錄的存儲(chǔ)過(guò)程EmployeeDelete。/***刪除職員記錄的存儲(chǔ)過(guò)程EmployeeDelete**/CREATEORREPLACEPROCEDUREEMPLOYEE_DELETE(IDINCHAR)ASBEGINDELETEFROMEMPLOYEESWHEREEMPLOYEE_ID=ID;COMMIT;END;EXECEMPLOYEE_DELETE('990230');實(shí)驗(yàn)結(jié)果與分析驗(yàn)證觸發(fā)器1:insertintoemployeesvalues('009001','王林2',to_d
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年茶葉收購(gòu)與倉(cāng)儲(chǔ)管理合同2篇
- 水電安裝工程2025年度合同書(shū)協(xié)議2篇
- 二零二五版快遞物流服務(wù)質(zhì)量監(jiān)控與評(píng)估協(xié)議合同2篇
- 二零二五年電子供應(yīng)鏈采購(gòu)合同3篇
- 二零二五年度校園巴士運(yùn)營(yíng)管理合同范本3篇
- 二零二五年高端餐飲會(huì)所租賃承包合同范本3篇
- 2025年危險(xiǎn)品運(yùn)輸及應(yīng)急處理合同3篇
- 二零二五版物流倉(cāng)儲(chǔ)與新能源利用合同3篇
- 小學(xué)教師事業(yè)單位聘用合同(2篇)
- 二零二五年度綠色交通PPP特許經(jīng)營(yíng)權(quán)轉(zhuǎn)讓合同3篇
- 2024年云南省中考數(shù)學(xué)試題含答案解析
- 《火災(zāi)調(diào)查 第2版》 課件全套 劉玲 第1-12章 緒論、詢(xún)問(wèn) -火災(zāi)物證鑒定
- 汽車(chē)修理廠管理方案
- 借用他人名義買(mǎi)車(chē)協(xié)議完整版
- (正式版)JBT 5300-2024 工業(yè)用閥門(mén)材料 選用指南
- 校園超市經(jīng)營(yíng)投標(biāo)方案(技術(shù)方案)
- 基于Web服務(wù)的辦公系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)的開(kāi)題報(bào)告
- 國(guó)企工程類(lèi)工作總結(jié)
- 電腦教室設(shè)計(jì)方案
- 計(jì)算機(jī)江蘇對(duì)口單招文化綜合理論試卷
- 高速公路環(huán)保水保方案
評(píng)論
0/150
提交評(píng)論