版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、本科實(shí)驗(yàn)報(bào)告課程名稱: 大型數(shù)據(jù)庫系統(tǒng) 實(shí)驗(yàn)項(xiàng)目: 創(chuàng)建數(shù)據(jù)庫和表 實(shí)驗(yàn)地點(diǎn): 多學(xué)科樓4506 專業(yè)班級(jí):軟件工程0901 學(xué)號(hào):200 學(xué)生姓名: 指導(dǎo)教師: 2012年 4 月 17 日一、 實(shí)驗(yàn)?zāi)康暮鸵?. 了解數(shù)據(jù)庫的結(jié)構(gòu)以及一些基本概念。2. 了解表的結(jié)構(gòu)特點(diǎn)。3. 了解Oracle 11g的基本數(shù)據(jù)類型。4. 學(xué)會(huì)使用DBCA創(chuàng)建數(shù)據(jù)庫。5. 學(xué)會(huì)使用界面方式創(chuàng)建表。6. 學(xué)會(huì)使用SQL語句手工創(chuàng)建數(shù)據(jù)庫。7. 學(xué)會(huì)使用SQL語句創(chuàng)建表。二、 實(shí)驗(yàn)內(nèi)容和原理1. 能夠創(chuàng)建數(shù)據(jù)庫的用戶必須是系統(tǒng)管理員,或是被授權(quán)使用CREATE DATABASE語句的用戶。2. 創(chuàng)建數(shù)據(jù)庫必須要
2、確定數(shù)據(jù)庫名、所有者(即創(chuàng)建數(shù)據(jù)庫的用戶)、數(shù)據(jù)庫大小、SGA分配和存儲(chǔ)數(shù)據(jù)庫的文件。3. 確定數(shù)據(jù)庫包含哪些表以及所包含的各表的結(jié)構(gòu),還要了解Oracle 11g的常用數(shù)據(jù)類型,以創(chuàng)建數(shù)據(jù)庫的表。4. 創(chuàng)建企業(yè)管理的員工管理數(shù)據(jù)庫YGGL,包含Employees(員工自然信息 )表、Departments(部門信息)表和Salary(員工薪水情況)表。各表的結(jié)構(gòu)如下所示。表T1.1 Employees表結(jié)構(gòu)列名數(shù)據(jù)類型長(zhǎng)度是否允許為空值說明EmployeeIDChar6員工編號(hào),主鍵NameChar10姓名BirthdayDate出生日期SexNumber1性別AddressChar20地址
3、ZipChar6郵編PhoneNumberChar12電話號(hào)碼DepartmentChar3員工部門號(hào)、外鍵表T1.2 Departments表結(jié)構(gòu)列名數(shù)據(jù)類型長(zhǎng)度是否允許為空值說明DepartmentIDChar3部門編號(hào)、主鍵DepartmentNameChar20部門號(hào)NoteVarchar2100備注表T1.3 Salary表結(jié)構(gòu)列名數(shù)據(jù)類型長(zhǎng)度是否允許為空值說明EmplyeeIDChar6員工編號(hào)、主鍵InComeNumber8,2收入OutComeNumber8,2支出三、 主要儀器設(shè)備Windows XP/7、oracle 10g/11g四、 操作方法與實(shí)驗(yàn)步驟1. 利用DBCA
4、創(chuàng)建數(shù)據(jù)庫1) 數(shù)據(jù)庫名稱為YGGL,它的全局?jǐn)?shù)據(jù)庫名稱為YGGL。2) 控制文件三個(gè),存放路徑為,名稱分別為CONTROL01.CR、CONTROL02.CR和CONTROL03.CR。3) 重做日志文件三個(gè),大小為100MB,存放路徑為:,名稱分別為redo01.log、redo02.log和redo03.log。4) 創(chuàng)建臨時(shí)表空間temp01.dpf。5) 數(shù)字字符集為ZHS16GBK,國家字符集為AL16UTF16。6) 數(shù)據(jù)塊大小為4KB。進(jìn)入DBCA,根據(jù)其提示逐步完成數(shù)據(jù)庫的創(chuàng)建工作。實(shí)際情況,我以創(chuàng)建表空間代替。2. 利用DBCA刪除數(shù)據(jù)庫(實(shí)際不操作)3. 在OEM和利用s
5、ql語句分別創(chuàng)建表下面列出建表語句:/* 創(chuàng)建Departments表*/create table Departments( department_id char(3), department_name varchar2(20) not null, note varchar2(100), constraint departments_pk primary key(department_id)tablespace yggl;/* 創(chuàng)建Salary表*/create table Salary( employee_id char(6), income number(8, 2) not null, o
6、utcome number(8, 2) not null, constraint Salary_pk primary key(employee_id), constraint employee_id_foreign_key foreign key(employee_id) references employees(employee_id)tablespace yggl;五、 實(shí)驗(yàn)結(jié)果與分析創(chuàng)建表空間:以下為創(chuàng)建表,因?yàn)樽约旱拿?xí)慣,對(duì)其中部分名稱進(jìn)行了修正,另外,一些數(shù)據(jù)的數(shù)據(jù)類型該用更合適的數(shù)據(jù)類型。創(chuàng)建employees表:利用sql語句建表也全部成功。六、 討論、心得(可選)本次試驗(yàn)考
7、察內(nèi)容基本為數(shù)據(jù)定義語言,有數(shù)據(jù)庫的創(chuàng)建(因?yàn)橐郧耙呀ㄟ^了,所以這次我用名稱空間代替),表的創(chuàng)建(圖形化操作與sql語句操作)。差不多就這樣子,通過這次試驗(yàn)大概可以掌握oracle數(shù)據(jù)庫的基本操作,主要有助于對(duì)其環(huán)境的熟悉。本科實(shí)驗(yàn)報(bào)告課程名稱: 大型數(shù)據(jù)庫系統(tǒng) 實(shí)驗(yàn)項(xiàng)目: 表數(shù)據(jù)插入、修改和刪除 實(shí)驗(yàn)地點(diǎn): 多學(xué)科樓4506 專業(yè)班級(jí):軟件工程0901 學(xué)號(hào):20090學(xué)生姓名: 指導(dǎo)教師: 2012年 4 月 19 日一、 實(shí)驗(yàn)?zāi)康暮鸵?. 學(xué)會(huì)使用PL/SQL語句對(duì)數(shù)據(jù)庫表進(jìn)行插入、修改和刪除數(shù)據(jù)操作。2. 學(xué)會(huì)使用SQL Developer對(duì)數(shù)據(jù)庫表進(jìn)行插入、修改和刪除數(shù)據(jù)的操作。3
8、. 了解數(shù)據(jù)更新操作時(shí)要注意數(shù)據(jù)完整性。4. 了解PL/SQL語句對(duì)表數(shù)據(jù)操作的靈活控制功能。二、 實(shí)驗(yàn)內(nèi)容和原理1. 了解對(duì)表數(shù)據(jù)的插入、刪除、修改都屬于表數(shù)據(jù)的更新操作。對(duì)表數(shù)據(jù)的操作可以在SQL Developer中進(jìn)行,也可以由PL/SQL語句實(shí)現(xiàn)。2. 掌握PL/SQL語句中用于對(duì)表數(shù)據(jù)進(jìn)行插入、修改和刪除的命令分別是INSERT、UPDATE和DELETE(或TRANCATE TABLE)。3. 在執(zhí)行插入、刪除、修改等數(shù)據(jù)更新操作時(shí),必須保證數(shù)據(jù)的完整性。4. 使用PL/SQL語句在對(duì)表數(shù)據(jù)進(jìn)行插入、修改及刪除時(shí),比在OEM中操作表數(shù)據(jù)更為靈活,功能更強(qiáng)大。在實(shí)驗(yàn)1中,用于實(shí)驗(yàn)的
9、YGGL數(shù)據(jù)庫中的三個(gè)表已經(jīng)建立,現(xiàn)在要將各表的樣本數(shù)據(jù)添加到表中。樣本數(shù)據(jù)如表T2.1、表T2.2和表T2.3所示。表T2.1 Employees表數(shù)據(jù)樣本編號(hào)姓名出生日期性別住址郵編電話號(hào)碼部門號(hào)王林1966-01-231中山路32-1-5082伍容華1976-03-281北京東路100-21表T2.2 Departments表數(shù)據(jù)樣本部門號(hào)部門名稱備注部門號(hào)部門名稱備注1財(cái)務(wù)部NULL4研發(fā)部NULL2人力資源部NULL5市場(chǎng)部NULL3經(jīng)理辦公室NULL表T2.3 Salary表數(shù)據(jù)樣本編號(hào)收入支出編號(hào)收入支出2100.8123.093259.98281.521582.6288.032
10、860.0198.02568.88185.652347.68180.0三、 主要儀器設(shè)備WINDOWS XP/WINDOWS 7Oracle 10g/11g四、 操作方法與實(shí)驗(yàn)步驟分別使用SQL Developer和PL/SQL語句,在實(shí)驗(yàn)1建立的數(shù)據(jù)庫YGGL的表Employees、表Departments和表Salary中插入多行數(shù)據(jù)記錄,然后修改和刪除一些記錄。使用PL/SQL命令進(jìn)行有限制的修改和刪除。(一) 使用SQL Developer操作數(shù)據(jù)啟動(dòng)SQL Developer,展開yggl_ora連接,單擊”Employees”表,在左邊窗口中選擇”Data”選項(xiàng)卡。在此窗口中,單擊
11、”Insert row”按鈕,表中將增加一個(gè)新行,在新行中雙擊一列空白處后輸入新數(shù)據(jù),輸完后單擊”Commit Changes”按鈕,將數(shù)據(jù)保存到數(shù)據(jù)庫中。修改數(shù)據(jù)的方法和添加數(shù)據(jù)類似,如果要?jiǎng)h除一行數(shù)據(jù),選中該行數(shù)據(jù),單擊”Delete Selected Row(s)”按鈕,之后該行的行號(hào)前會(huì)顯示一個(gè)“”號(hào),刪除后單擊”Commit Changes”按鈕保存。(二) 使用PL/SQL命令操作數(shù)據(jù)1. 使用PL/SQL語句分別向YGGL數(shù)據(jù)庫的表Employees、表Departments和表Salary中插入插入一行記錄。在啟動(dòng)SQL*Plus窗口或SQL Developer的代碼編輯窗口中
12、,輸入以下PL/SQL語句并執(zhí)行:一下為對(duì)3個(gè)表的數(shù)據(jù)的所有插入語句:/* 向DEPARTMENTS表中插入數(shù)據(jù)樣本*/insert into DEPARTMENTS values(001, 財(cái)務(wù)部, null);insert into DEPARTMENTS values(002, 人力資源部, null);INSERT INTO Departments VALUES(003,經(jīng)理辦公室,NULL);INSERT INTO Departments VALUES(004,研發(fā)部,NULL);INSERT INTO Departments VALUES(005,市場(chǎng)部,NULL);commit;
13、/* 向employee表中插入數(shù)據(jù)樣本*/insert into employees values(, 王林, to_date(1966-01-23, YYYY-MM-DD), 1, 中山路 32-1-508, , , 002);INSERT INTO Employees VALUES(,伍容華,TO_DATE(,YYYYMMDD),1, 北京東路100-2,001);insert into employees values(, 王向榮, to_date(1982-12-19, YYYY-MM-DD), 1, 四牌樓 10-0-108, , , 001);INSERT INTO Employ
14、ees VALUES(,李麗,TO_DATE(,YYYYMMDD),0, 中山東路102-2, 001);INSERT INTO Employees VALUES(,劉明,TO_DATE(,YYYYMMDD),1, 虎距路100-2,005);INSERT INTO Employees VALUES(,朱俊,TO_DATE(,YYYYMMDD),1, 牌樓巷5-3-106,005);INSERT INTo Employees VALUES(,鐘敏,TO_DATE(,YYYYMMDD),0, 中山路10-3-105,003);INSERT INTO Employees VALUES(,張石兵,T
15、O_DATE(,YYYYMMDD),1, 解放路34-1-203,005);INSERT INTO Employees VALUES(,林濤,TO_DATE(,YYYYMMDD),1, 中山北路24-35,003);INSERT INTo Employees VaLUES(,李玉珉,TO_DATE(,YYYYMMDD),1, 熱和路209-3,004);INSERT INTO Employees VALUES(,葉凡,TO_DATE(,YYYYMMDD),1, 北京西路3-7-52,004);INSERT INTO Employees VALUES(,陳琳琳,TO_DATE(,YYYYMMDD
16、),0, 漢中路120-4-12,004);commit;/* 向Salary表中插入數(shù)據(jù)樣本*/insert into Salary values(, 2100.8, 123.09);INSERT INTO Salary VALUES(,1582.62,88.03);INSERT INTO Salary VALUES(,2569.88,185.65);INSERT INTO Salary VALUES(,1987.01,79.58);INSERT INTO Salary VALUES(,2066.15,108.0);INSERT INTO Salary VALUES(,2980.7,210.
17、2);INSERT INTO Salary VALUES(,3259.98,281.52);INSERT INTO Salary VALUES(,2860.0,198.0);INSERT INTO Salary VALUES(,2347.68,180.0);INSERT INTO Salary VALUES(,2531.98,199.08);INSERT INTO Salary VALUES(,2240.0,121.0);INSERT INTO Salary VALUES(,1980.0,100.0);commit;2. 使用PL/SQL命令修改表Salary中的某個(gè)記錄的字段值。語句:/*u
18、pdate SALARY表*/UPDATE SALARY SET INCOME = 2890 WHERE EMPLOYEE_ID = ;COMMIT;按回車鍵,執(zhí)行上述語句,將編號(hào)為的職工收入改為2890.在OEM中打開YGGL數(shù)據(jù)庫的Salary表,觀察數(shù)據(jù)變化。3. 使用PL/SQL語句修改表Salary中的所有記錄的字段值。在SQL*Plus界面中輸入以下PL/SQL語句:語句/* 將其所有行的IMCOME加100*/UPDATE SALARY SET INCOME = INCOME + 100;COMMIT;按回車鍵,執(zhí)行上述語句,將所有職工的收入增加100??梢?,使用PL/SQL語句
19、操作表數(shù)據(jù)比在SQL Developer中操作表數(shù)據(jù)更為靈活。輸入以下PL/SQL語句,觀察數(shù)據(jù)變化。SELECT* FROM Salary;4. 使用DELETE語句刪除Salary表中一行記錄。/* 刪除salary表中的一行記錄*/DELETE FROM SALARY WHERE employee_id = ;COMMIT;5. 使用TRANCATE TABLE語句刪除表中所有行。在SQL*Plus界面中輸入以下PL/SQL語句:/*清空表*/delete from Salary;delete from employees;delete from departments;TRUNCATE
20、 TABLE SALARY;五、 實(shí)驗(yàn)結(jié)果與分析按上述過程操作,試驗(yàn)結(jié)果均滿足預(yù)期要求。六、 討論、心得(可選)本次試驗(yàn)主要考察對(duì)表的數(shù)據(jù)的基本更新操作,即dml語言。通過對(duì)表的增刪改操作熟悉對(duì)應(yīng)的sql語句以及OEM操作。 本科實(shí)驗(yàn)報(bào)告課程名稱: 大型數(shù)據(jù)庫系統(tǒng) 實(shí)驗(yàn)項(xiàng)目: 數(shù)據(jù)庫的查詢和視圖 實(shí)驗(yàn)地點(diǎn): 多學(xué)科樓506 專業(yè)班級(jí):軟件工程0901 學(xué)號(hào): 學(xué)生姓名: 指導(dǎo)教師: 2012年 4月21日1、 實(shí)驗(yàn)?zāi)康暮鸵?、掌握SELECT語句的基本語法2、掌握子查詢的表示方法3、掌握連接查詢的表示方法4、掌握數(shù)據(jù)匯總的方法5、掌握SELECT語句的GROUP BY子句的作用和使用方法6、
21、掌握SELECT語句的ORDER BY子句的作用和使用方法7、掌握視圖的使用方法二、實(shí)驗(yàn)內(nèi)容1. 了解SELECT語句的基本語法格式和執(zhí)行方法2. 了解子查詢的表示方法、連接查詢和數(shù)據(jù)匯總的方法3. 了解SELECT語句的GROUP BY子句的作用和使用方法4. 了解SELECT語句的ORDER BY子句的作用5. 了解視圖的作用和創(chuàng)建方法6. 了解視圖的使用方法三、實(shí)驗(yàn)環(huán)境與設(shè)備 Win7、Oracle 11g四、操作方法與實(shí)驗(yàn)步驟1、SELECT語句的基本使用(1)對(duì)于實(shí)驗(yàn)2給出的數(shù)據(jù)庫表結(jié)構(gòu),查詢每個(gè)雇員的所有數(shù)據(jù) 在SQL*Plus窗口或SQL Developer中輸入語句并執(zhí)行 SE
22、LECT * FROM Employees;SELECT * FROM Departments;SELECT * FROM Salary;(2)查詢每個(gè)雇員的地址和電話 /* 查詢每個(gè)雇員的地址和電話*/SELECT ADDRESS, PHONE_NUMBER FROM EMPLOYEES; (3)查詢EmployeeID為的雇員的地址和電話 SELECT Address,PhoneNumber FROM Employees WHERE Employee_ID=; (4)查詢Employees表中所有女雇員的地址和電話,使用AS子句將結(jié)果中各列的標(biāo)題分別指定為地址和電話 SELECT Addr
23、ess AS 地址,PhoneNumber AS 電話 FROM Employees WHERE sex=0;/* 查詢每個(gè)女性雇員的地址和電話,并對(duì)列名重新命名*/SELECT ADDRESS as 地址, PHONE_NUMBER 電話 FROM EMPLOYEES WHERE SEX = 0; (5)計(jì)算ID號(hào)以10開頭的雇員的實(shí)際收入 /* 計(jì)算ID號(hào)以10開頭的雇員的實(shí)際收入*/SELECT employee_id, INCOME - OUTCOME AS 實(shí)際收入 FROM SALARY WHERE EMPLOYEE_ID LIKE 10%; 2、 子查詢的使用(1) 查找在財(cái)務(wù)部
24、工作的雇員的情況SELECT * FROM EMPLOYEESWHERE Department_ID=(SELECT Department_IDFROM DepartmentsWHERE DepartmentName=財(cái)務(wù)部);(2) 查詢財(cái)務(wù)部年齡不低于所有研發(fā)部雇員年齡的雇員的姓名/* 查找財(cái)務(wù)部年齡不低于所有研發(fā)部雇員年齡的雇員的姓名*/SELECT * FROM EMPLOYEES WHERE department_id IN ( SELECT DEPARTMENT_ID FROM departments WHERE department_name = 財(cái)務(wù)部 ) AND birthd
25、ay = ALL ( SELECT INCOME FROM SALARY WHERE EMPLOYEE_ID IN ( SELECT EMPLOYEE_ID FROM EMPLOYEES WHERE DEPARTMENT_ID = ( SELECT DEPARTMENT_ID FROM DEPARTMENTS WHERE DEPARTMENT_NAME = 財(cái)務(wù)部 ) ) ) )3、連接查詢的使用 (1)查詢每個(gè)雇員的情況以及其薪水的情況 SELECT Employees.*,Salary.* FROM Employees,Salary WHERE Employees.Employee_ID=
26、Salary.Employee_ID; (2)查找財(cái)務(wù)部收入在2200元以上的雇員的姓名及其薪水詳情 /* 查找財(cái)務(wù)部收入在2200元以上的雇員姓名及其薪水詳情*/SELECT name, INCOME, OUTCOME FROM EMPLOYEES, SALARY, DEPARTMENTS WHERE employees.employee_id = salary.employee_id AND employees.department_id = departments.department_id AND departments.department_NAME = 財(cái)務(wù)部 AND INCOME
27、 2200;數(shù)據(jù)匯總(1) 求財(cái)務(wù)部雇員的平均收入/* 查找財(cái)務(wù)部雇員的平均收入*/SELECT AVG(INCOME) FROM SALARY, EMPLOYEES, DEPARTMENTS WHERE salary.employee_id = employees.employee_id AND employees.department_id = departments.department_id AND departments.department_name = 財(cái)務(wù)部;(2) 求財(cái)務(wù)部雇員的平均實(shí)際收入SELECT AVG(InCome-OutCome) AS 財(cái)務(wù)部平均實(shí)際收入 FRO
28、M Salary WHERE Employee_ID IN (SELECT Employee_ID FROM Employees WHERE Department_ID= (SELECT Department_ID FROM Departments WHERE Department_Name=財(cái)務(wù)部);(3) 求財(cái)務(wù)部雇員的總?cè)藬?shù)SELECT COUNT(Employee_ID) FROM Employees WHERE Department_ID= (SELECT Department_ID FROM Departments WHERE Department_Name=財(cái)務(wù)部);5、GROU
29、P BY和ORDER BY子句的使用 (1)求各部門的雇員數(shù) /* 求各部門的雇員數(shù)*/ SELECT DEPARTMENT_NAME, COUNT(*) FROM EMPLOYEES, departments WHERE employees.department_id = departments.department_id GROUP BY DEPARTMENTS.department_NAME; (2)將各部門的情況按收入由低到高排列/* 將各雇員的情況按收入由低到高排序*/SELECT EMPLOYEES.*, SALARY.INCOME, salary.outcome FROM EMP
30、LOYEES, SALARY WHERE employees.employee_id = salary.employee_id ORDER BY INCOME;6、 使用視圖 (1)創(chuàng)建視圖 a、限制查看雇員的實(shí)際情況 CREATE OR REPLACE VIEW cx_employeesAS SELECT EmployeeID,Name,Birthday,Sex,DepartmentID FROM Employees; b、限制各部門經(jīng)理只能查找本部門雇員的薪水情況,如限制財(cái)務(wù)經(jīng)理 想查看自己部門雇員姓名及其薪水詳情/* 創(chuàng)建財(cái)務(wù)部視圖*/CREATE OR REPLACE VIEW CX_
31、SALARYAS SELECT NAME, INCOME, OUTCOME FROM EMPLOYEES, SALARY, DEPARTMENTS WHERE employees.employee_id = salary.employee_id AND employees.department_id = departments.department_id AND department_name = 財(cái)務(wù)部; (2)使用視圖 /* 查詢財(cái)務(wù)部雇員薪水情況*/SELECT * FROM CX_SALARY;五、實(shí)驗(yàn)結(jié)果與分析查詢employees表的全部數(shù)據(jù)查詢每個(gè)雇員的地址和電話查詢每個(gè)女性雇員
32、的地址和電話,并對(duì)列名重新命名計(jì)算ID號(hào)以10開頭的雇員的實(shí)際收入查找財(cái)務(wù)部年齡不低于所有研發(fā)部雇員年齡的雇員的姓名查找比所有財(cái)務(wù)部的雇員收入都要高的雇員的姓名查找財(cái)務(wù)部收入在2200元以上的雇員姓名及其薪水詳情查找財(cái)務(wù)部雇員的平均收入求各部門的雇員數(shù)將各雇員的情況按收入由低到高排序 查詢財(cái)務(wù)部雇員薪水情況六、討論、心得本實(shí)驗(yàn)考察對(duì)表的查詢操作,算是sql語句中最常用的操作,這也是我們每個(gè)學(xué)生應(yīng)該必須掌握的基本操作,此后是關(guān)于視圖的部分,它是一個(gè)很有效的功能,能夠有效限制各用戶只對(duì)自己有權(quán)操作的數(shù)據(jù)進(jìn)行操作。本科實(shí)驗(yàn)報(bào)告課程名稱: 大型數(shù)據(jù)庫系統(tǒng) 實(shí)驗(yàn)項(xiàng)目: 索引和完整性 實(shí)驗(yàn)地點(diǎn): 多學(xué)科樓
33、506 專業(yè)班級(jí):軟件工程0901 學(xué)號(hào):2009學(xué)生姓名: 指導(dǎo)教師: 2012年 4月21日一、實(shí)驗(yàn)?zāi)康暮鸵?目的: (1)掌握索引的使用方法 (2)掌握數(shù)據(jù)完整性的概念及分類 (3)掌握各種數(shù)據(jù)完整性的實(shí)現(xiàn)方法 要求: (1)了解索引的作用與分類 (2)掌握索引的創(chuàng)建 (3)理解數(shù)據(jù)完整性的概念及分類 (4)了解各種數(shù)據(jù)完整性的實(shí)現(xiàn)方法二、實(shí)驗(yàn)內(nèi)容和原理1、建立索引 對(duì)YGGL數(shù)據(jù)庫中Employees表的DepartmentID列建立索引 /* 在Employees表的Departm_ID 列建立索引*/ create index EMP_DEID ON EMPLOYEES(DEPA
34、RTMENT_ID) TABLESPACE USERS PCTFREE 48 INITRANS 10 MAXTRANS 100 STORAGE (INITIAL 64K NEXT 64K MINEXTENTS 5 MAXEXTENTS 20 PCTINCREASE 10 FREELISTS 1 FREELIST GROUPS 1)PARALLEL (DEGREE DEFAULT); 2、 實(shí)現(xiàn)域完整性/* 在Employees表的phone_number 列上建立check約束*/ALTER TABLE EMPLOYEES ADD( CONSTRAINT CH_PHONE CHECK(PHON
35、E_NUMBER BETWEEN 0 AND 9);3、 實(shí)現(xiàn)實(shí)體完整性(參見實(shí)驗(yàn)1)4、 實(shí)現(xiàn)參照完整性(參見實(shí)驗(yàn)1)三、主要儀器設(shè)備Win7、Oracle 11g四、實(shí)驗(yàn)結(jié)果與分析(必填) 在Employees表的Departm_ID 列建立索引 在Employees表的phone_number 列上建立check約束五、討論、心得本次實(shí)驗(yàn)首先是對(duì)索引的建立,它是一種可以提升用戶查詢效率的機(jī)制,在這一部分,我有注意到建立索引時(shí)是需要指定模式名的,似乎不同的用戶查詢同一張表格可能會(huì)用到不同的索引,不知道這樣理解正不正確。然后就是關(guān)于完整性的部分,由于在實(shí)驗(yàn)一建立表的時(shí)候,我就已經(jīng)安照要求建立
36、好了完整性約束,所以這里沒有再重復(fù)做。本科實(shí)驗(yàn)報(bào)告課程名稱: 大型數(shù)據(jù)庫系統(tǒng) 實(shí)驗(yàn)項(xiàng)目: PL/SQL編程 實(shí)驗(yàn)地點(diǎn): 多學(xué)科樓506 專業(yè)班級(jí):軟件工程1 學(xué)號(hào):2002 學(xué)生姓名: 指導(dǎo)教師: 2012年 4月21日一、 實(shí)驗(yàn)?zāi)康呐c要求(1) 進(jìn)一步鞏固第2章第4章所學(xué)內(nèi)容(2) 掌握變量的分類與使用(3) 掌握各種運(yùn)算符的使用(4) 掌握各種控制語句的使用(5) 掌握系統(tǒng)函數(shù)及用戶自定義函數(shù)的使用二、 實(shí)驗(yàn)內(nèi)容和原理(1) 了解PL/SQL支持的各種基本數(shù)據(jù)類型(2) 了解PL/SQL各種運(yùn)算符、控制語句的功能及使用方法(3) 了解系統(tǒng)函數(shù)的調(diào)用方法(4) 了解用戶自定義函數(shù)時(shí)用的一般步
37、驟三、 主要儀器設(shè)備Windows XP/7、oracle 10g/11g四、 操作方法與實(shí)驗(yàn)步驟1 條件結(jié)構(gòu)的使用在SQL*Plus的編輯窗口中分別輸入【例6.5】、【例6.6】、【例6.7】和例【6.8】程序并執(zhí)行。觀察結(jié)果。 2 循環(huán)結(jié)構(gòu)的使用在SQL*Plus的編輯窗口中分別輸入【例6.9】、【例6.10】、【例6.11】和例【6.12】程序并執(zhí)行。觀察結(jié)果。3 選擇和跳轉(zhuǎn)語句在SQL*Plus的編輯窗口中分別輸入【例6.13】和【例6.14】程序并執(zhí)行。觀察結(jié)果。 4 自定義函數(shù)的使用(1) 定義一個(gè)函數(shù)實(shí)現(xiàn)如下功能。對(duì)于給定的DepartmentID值,查詢?cè)撝翟贒epartmen
38、ts表中是否存在,若存在返回0,否則返回-1。語句: /* 給定一個(gè)Department_id值,查詢其在Departments表中是否存在,若存在返回0,否則返回-1.*/CREATE OR REPLACE FUNCTION CHECK_ID (P_DEPARTMENT_ID IN CHAR)RETURN NUMBERAS NUM NUMBER;BEGIN SELECT COUNT(*) INTO NUM FROM DEPARTMENTS WHERE DEPARTMENT_ID = P_DEPARTMENT_ID; IF NUM 0 THEN NUM := 0; ELSE NUM := -1
39、; END IF; RETURN (NUM);END; (2) 寫一段PL/SQL腳本程序調(diào)用上述函數(shù)。當(dāng)向Employees表中插入一條記錄時(shí),首先調(diào)用CHECK_ID檢索該記錄的DepartmentID值在表Departments的DepartmentID字段中是否存在對(duì)應(yīng)值,若存在,則將該記錄插入Employees表。語句: /* 對(duì)上述函數(shù)進(jìn)行測(cè)試*/set serveroutput onDECLARE NUM NUMBER;BEGIN NUM := check_id(002); IF NUM = 0 THEN dbms_output.put_line(存在!); INSERT INT
40、O EMPLOYEES VALUES( , 張文, TO_DATE(, yyyymmdd), 0, 南京鎮(zhèn)江路2號(hào), , , 002 ); END IF;END ;五、 實(shí)驗(yàn)結(jié)果與分析給定一個(gè)Department_id值,查詢其在Departments表中是否存在,若存在返回0,否則返回-1.對(duì)上述函數(shù)進(jìn)行測(cè)試六、 討論、心得本實(shí)驗(yàn),書上給的實(shí)例代碼是不能正確運(yùn)行的,主要原因是PL/SQL在執(zhí)行時(shí)并不區(qū)分大寫小,所以必須給參數(shù)和變量命不同的名字。然后就是,在調(diào)試程序時(shí),我用了dbms_output.put_line(存在!);這樣的打印語句,它需要打開輸入服務(wù)才能在sqldeveloper環(huán)境
41、下正確運(yùn)行。set serveroutput on;本科實(shí)驗(yàn)報(bào)告課程名稱: 大型數(shù)據(jù)庫系統(tǒng) 實(shí)驗(yàn)項(xiàng)目:實(shí)驗(yàn)6 存儲(chǔ)過程和觸發(fā)器的使用實(shí)驗(yàn)地點(diǎn): 學(xué)院樓 502 專業(yè)班級(jí): 軟件0901 學(xué)號(hào):20學(xué)生姓名: 指導(dǎo)教師: 2012年 4月21日一、 實(shí)驗(yàn)?zāi)康暮鸵?1) 掌握存儲(chǔ)過程的使用方法(2) 掌握觸發(fā)器的使用方法二、 實(shí)驗(yàn)內(nèi)容和原理1. 創(chuàng)建觸發(fā)器對(duì)表Employees的DepartmentID列與表Departments 的DepartmentID列應(yīng)滿足參照完整性,規(guī)則如下:1) 向表Employees添加一條記錄時(shí),該記錄的DepartmentID在Departments表中應(yīng)存在
42、:2) 修改Departments表DepartmentID字段時(shí)在Employees表中應(yīng)對(duì)應(yīng)修改。3) 刪除Departments表中一記錄時(shí),該記錄對(duì)于于Employees表中的記錄也應(yīng)刪除.利用觸發(fā)器實(shí)現(xiàn)上述約束。2. 創(chuàng)建存儲(chǔ)過程1) 添加職員記錄的存儲(chǔ)過程EmployeeAdd。2) 修改職員記錄的存儲(chǔ)過程EmployeeUpdate。3) 刪除職員記錄的存儲(chǔ)過程EmployeeDelete。3. 調(diào)用存儲(chǔ)過程三、 主要儀器設(shè)備Win7電腦一臺(tái),oracle11g四、 操作方法與實(shí)驗(yàn)步驟1. 創(chuàng)建觸發(fā)器對(duì)表Employees的DEPARTMENT_ID列與表Departments
43、的DEPARTMENT_ID列應(yīng)滿足參照完整性,規(guī)則如下:1) 向表Employees添加一條記錄時(shí),該記錄的DEPARTMENT_ID在Departments表中應(yīng)存在:/* 向表Employees添加或修改一條記錄時(shí),該記錄的DEPARTMENT_ID在Departments表中應(yīng)存在*/CREATE OR REPLACE TRIGGER EMPLOYEES_INS AFTER INSERT OR UPDATE ON EMPLOYEES FOR EACH ROWDECLARE NUM NUMBER;BEGIN SELECT COUNT(*) INTO NUM FROM DEPARTMENT
44、S WHERE DEPARTMENT_ID = :NEW.DEPARTMENT_ID; IF NUM = 0 THEN RAISE_APPLICATION_ERROR(-20001, 職員所在的部門不存在); END IF; END ;2) 修改Departments表DEPARTMENT_ID字段時(shí)在Employees表中應(yīng)對(duì)應(yīng)修改。/* 修改Departments表DEPARTMENT_ID字段時(shí)在Employees表中應(yīng)對(duì)應(yīng)修改*/CREATE OR REPLACE TRIGGER DEPARTMENTS_UPDATE AFTER UPDATE ON DEPARTMENTS FOR EA
45、CH ROWBEGIN UPDATE EMPLOYEES SET DEPARTMENT_ID = :NEW.DEPARTMENT_ID WHERE DEPARTMENT_ID = :OLD.DEPARTMENT_ID;END;3) 刪除Departments表中一記錄時(shí),該記錄對(duì)于于Employees表中的記錄也應(yīng)刪除./* 刪除Departments表中一記錄時(shí),該記錄對(duì)于于Employees表中的記錄也應(yīng)刪除*/CREATE OR REPLACE TRIGGER DEPARTMENTS_DELETE AFTER DELETE ON DEPARTMENTS FOR EACH ROWBEGIN
46、 DELETE FROM EMPLOYEES WHERE DEPARTMENT_ID = :OLD.DEPARTMENT_ID;END;因?yàn)镋mployees表與Salary表存在外鍵約束,所以,對(duì)于此也建立一個(gè)觸發(fā)器以使得上面的觸發(fā)器有效。/* * 刪除Employees表中一記錄時(shí),該記錄對(duì)于于Salary表中的記錄也應(yīng)刪除*/CREATE OR REPLACE TRIGGER EMPLOYEES_SALARY AFTER DELETE ON EMPLOYEES FOR EACH ROWBEGIN DELETE FROM SALARY WHERE EMPLOYEE_ID = :OLD.EM
47、PLOYEE_ID;END;2. 存儲(chǔ)過程的創(chuàng)建及調(diào)用1) 添加職員記錄的存儲(chǔ)過程EmployeeAdd。/* 添加職員記錄的存儲(chǔ)過程EmployeeAdd*/CREATE OR REPLACE PROCEDURE EMPLOYEE_ADD ( P_EMPLOYEE_ID IN CHAR, P_NAME IN CHAR, P_BIRTHDAY IN DATE, P_SEX IN NUMBER, P_ADDRESS IN CHAR, P_ZIP IN CHAR, P_PHONE_NUMBER IN CHAR, P_DEPARTMENT_ID IN CHAR)ASBEGIN INSERT INTO EMPLOYEES VALUES ( P_EMPLOYEE_ID, P_NAME, P_BIRTHDAY, P_SEX, P_ADDRESS, P_ZIP, P_PHONE_NUMBER, P_DEPARTMENT_ID ); COMMIT;END;EXEC EMPLOYEE_ADD(, 劉朝, TO_DATE(, YYYYMMDD), 1,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 避孕套婦產(chǎn)科學(xué)講解
- 運(yùn)載火箭發(fā)動(dòng)機(jī)地面檢測(cè)設(shè)備項(xiàng)目融資計(jì)劃書
- 二零二五年度民政局離婚協(xié)議書法律效力審查協(xié)議3篇
- 2025年度專業(yè)會(huì)議室場(chǎng)地租賃與設(shè)施維護(hù)合同4篇
- 房地產(chǎn)集中供應(yīng)市場(chǎng)
- 2025年度水電工程結(jié)算合同樣本4篇
- 二零二五版智慧城市建設(shè)納稅擔(dān)保與信息化工程合同4篇
- 二零二五年度城市地下綜合交通樞紐建設(shè)合同6篇
- 2025版派遣工社會(huì)保險(xiǎn)補(bǔ)充協(xié)議4篇
- 2025年人教版九年級(jí)歷史下冊(cè)月考試卷含答案
- 圖像識(shí)別領(lǐng)域自適應(yīng)技術(shù)-洞察分析
- 個(gè)體戶店鋪?zhàn)赓U合同
- 禮盒業(yè)務(wù)銷售方案
- 二十屆三中全會(huì)精神學(xué)習(xí)試題及答案(100題)
- 小學(xué)五年級(jí)英語閱讀理解(帶答案)
- 2024二十屆三中全會(huì)知識(shí)競(jìng)賽題庫及答案
- 仁愛版初中英語單詞(按字母順序排版)
- (正式版)YS∕T 5040-2024 有色金屬礦山工程項(xiàng)目可行性研究報(bào)告編制標(biāo)準(zhǔn)
- 小學(xué)一年級(jí)拼音天天練
- 新概念英語第二冊(cè)考評(píng)試卷含答案(第49-56課)
- 【奧運(yùn)會(huì)獎(jiǎng)牌榜預(yù)測(cè)建模實(shí)證探析12000字(論文)】
評(píng)論
0/150
提交評(píng)論