




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、本科實驗報告課程名稱: 大型數據庫系統 實驗項目: 創建數據庫和表 實驗地點: 多學科樓4506 專業班級:軟件工程0901 學號:200 學生姓名: 指導教師: 2012年 4 月 17 日一、 實驗目的和要求1. 了解數據庫的結構以及一些基本概念。2. 了解表的結構特點。3. 了解Oracle 11g的基本數據類型。4. 學會使用DBCA創建數據庫。5. 學會使用界面方式創建表。6. 學會使用SQL語句手工創建數據庫。7. 學會使用SQL語句創建表。二、 實驗內容和原理1. 能夠創建數據庫的用戶必須是系統管理員,或是被授權使用CREATE DATABASE語句的用戶。2. 創建數據庫必須要
2、確定數據庫名、所有者(即創建數據庫的用戶)、數據庫大小、SGA分配和存儲數據庫的文件。3. 確定數據庫包含哪些表以及所包含的各表的結構,還要了解Oracle 11g的常用數據類型,以創建數據庫的表。4. 創建企業管理的員工管理數據庫YGGL,包含Employees(員工自然信息 )表、Departments(部門信息)表和Salary(員工薪水情況)表。各表的結構如下所示。表T1.1 Employees表結構列名數據類型長度是否允許為空值說明EmployeeIDChar6員工編號,主鍵NameChar10姓名BirthdayDate出生日期SexNumber1性別AddressChar20地址
3、ZipChar6郵編PhoneNumberChar12電話號碼DepartmentChar3員工部門號、外鍵表T1.2 Departments表結構列名數據類型長度是否允許為空值說明DepartmentIDChar3部門編號、主鍵DepartmentNameChar20部門號NoteVarchar2100備注表T1.3 Salary表結構列名數據類型長度是否允許為空值說明EmplyeeIDChar6員工編號、主鍵InComeNumber8,2收入OutComeNumber8,2支出三、 主要儀器設備Windows XP/7、oracle 10g/11g四、 操作方法與實驗步驟1. 利用DBCA
4、創建數據庫1) 數據庫名稱為YGGL,它的全局數據庫名稱為YGGL。2) 控制文件三個,存放路徑為,名稱分別為CONTROL01.CR、CONTROL02.CR和CONTROL03.CR。3) 重做日志文件三個,大小為100MB,存放路徑為:,名稱分別為redo01.log、redo02.log和redo03.log。4) 創建臨時表空間temp01.dpf。5) 數字字符集為ZHS16GBK,國家字符集為AL16UTF16。6) 數據塊大小為4KB。進入DBCA,根據其提示逐步完成數據庫的創建工作。實際情況,我以創建表空間代替。2. 利用DBCA刪除數據庫(實際不操作)3. 在OEM和利用s
5、ql語句分別創建表下面列出建表語句:/* 創建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;/* 創建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;五、 實驗結果與分析創建表空間:以下為創建表,因為自己的命名習慣,對其中部分名稱進行了修正,另外,一些數據的數據類型該用更合適的數據類型。創建employees表:利用sql語句建表也全部成功。六、 討論、心得(可選)本次試驗考
7、察內容基本為數據定義語言,有數據庫的創建(因為以前已建過了,所以這次我用名稱空間代替),表的創建(圖形化操作與sql語句操作)。差不多就這樣子,通過這次試驗大概可以掌握oracle數據庫的基本操作,主要有助于對其環境的熟悉。本科實驗報告課程名稱: 大型數據庫系統 實驗項目: 表數據插入、修改和刪除 實驗地點: 多學科樓4506 專業班級:軟件工程0901 學號:20090學生姓名: 指導教師: 2012年 4 月 19 日一、 實驗目的和要求1. 學會使用PL/SQL語句對數據庫表進行插入、修改和刪除數據操作。2. 學會使用SQL Developer對數據庫表進行插入、修改和刪除數據的操作。3
8、. 了解數據更新操作時要注意數據完整性。4. 了解PL/SQL語句對表數據操作的靈活控制功能。二、 實驗內容和原理1. 了解對表數據的插入、刪除、修改都屬于表數據的更新操作。對表數據的操作可以在SQL Developer中進行,也可以由PL/SQL語句實現。2. 掌握PL/SQL語句中用于對表數據進行插入、修改和刪除的命令分別是INSERT、UPDATE和DELETE(或TRANCATE TABLE)。3. 在執行插入、刪除、修改等數據更新操作時,必須保證數據的完整性。4. 使用PL/SQL語句在對表數據進行插入、修改及刪除時,比在OEM中操作表數據更為靈活,功能更強大。在實驗1中,用于實驗的
9、YGGL數據庫中的三個表已經建立,現在要將各表的樣本數據添加到表中。樣本數據如表T2.1、表T2.2和表T2.3所示。表T2.1 Employees表數據樣本編號姓名出生日期性別住址郵編電話號碼部門號000001王林1966-01-231中山路32-1-508210003833556682010008伍容華1976-03-281北京東路100-2210001833213211表T2.2 Departments表數據樣本部門號部門名稱備注部門號部門名稱備注1財務部NULL4研發部NULL2人力資源部NULL5市場部NULL3經理辦公室NULL表T2.3 Salary表數據樣本編號收入支出編號收入
10、支出0000012100.8123.091089913259.98281.520100081582.6288.030200102860.0198.01022012568.88185.650200182347.68180.0三、 主要儀器設備WINDOWS XP/WINDOWS 7Oracle 10g/11g四、 操作方法與實驗步驟分別使用SQL Developer和PL/SQL語句,在實驗1建立的數據庫YGGL的表Employees、表Departments和表Salary中插入多行數據記錄,然后修改和刪除一些記錄。使用PL/SQL命令進行有限制的修改和刪除。(一) 使用SQL Develop
11、er操作數據啟動SQL Developer,展開yggl_ora連接,單擊”Employees”表,在左邊窗口中選擇”Data”選項卡。在此窗口中,單擊”Insert row”按鈕,表中將增加一個新行,在新行中雙擊一列空白處后輸入新數據,輸完后單擊”Commit Changes”按鈕,將數據保存到數據庫中。修改數據的方法和添加數據類似,如果要刪除一行數據,選中該行數據,單擊”Delete Selected Row(s)”按鈕,之后該行的行號前會顯示一個“”號,刪除后單擊”Commit Changes”按鈕保存。(二) 使用PL/SQL命令操作數據1. 使用PL/SQL語句分別向YGGL數據庫的
12、表Employees、表Departments和表Salary中插入插入一行記錄。在啟動SQL*Plus窗口或SQL Developer的代碼編輯窗口中,輸入以下PL/SQL語句并執行:一下為對3個表的數據的所有插入語句:/* 向DEPARTMENTS表中插入數據樣本*/insert into DEPARTMENTS values(001, 財務部, null);insert into DEPARTMENTS values(002, 人力資源部, null);INSERT INTO Departments VALUES(003,經理辦公室,NULL);INSERT INTO Departmen
13、ts VALUES(004,研發部,NULL);INSERT INTO Departments VALUES(005,市場部,NULL);commit;/* 向employee表中插入數據樣本*/insert into employees values(000001, 王林, to_date(1966-01-23, YYYY-MM-DD), 1, 中山路 32-1-508, 210003, 83355668, 002);INSERT INTO Employees VALUES(010008,伍容華,TO_DATE(19760328,YYYYMMDD),1, 北京東路100-2,210001,8
14、3321321,001);insert into employees values(020010, 王向榮, to_date(1982-12-19, YYYY-MM-DD), 1, 四牌樓 10-0-108, 210006, 83792361, 001);INSERT INTO Employees VALUES(020018,李麗,TO_DATE(19600723,YYYYMMDD),0, 中山東路102-2,210002,83413301, 001);INSERT INTO Employees VALUES(102201,劉明,TO_DATE(19721018,YYYYMMDD),1, 虎距
15、路100-2,210013,83606608,005);INSERT INTO Employees VALUES(102208,朱俊,TO_DATE(19650928,YYYYMMDD),1, 牌樓巷5-3-106,210004,84708817,005);INSERT INTo Employees VALUES(108991,鐘敏,TO_DATE(19790810,YYYYMMDD),0, 中山路10-3-105,210003,83346722,003);INSERT INTO Employees VALUES(111006,張石兵,TO_DATE(19741001,YYYYMMDD),1,
16、 解放路34-1-203,210010,84563418,005);INSERT INTO Employees VALUES(210678,林濤,TO_DATE(19770402,YYYYMMDD),1, 中山北路24-35,210008,83467336,003);INSERT INTo Employees VaLUES(302566,李玉珉,TO_DATE(19680920,YYYYMMDD),1, 熱和路209-3,210001,58765991,004);INSERT INTO Employees VALUES(308759,葉凡,TO_DATE(19781118,YYYYMMDD),
17、1, 北京西路3-7-52,210002,83308901,004);INSERT INTO Employees VALUES(504209,陳琳琳,TO_DATE(19690903,YYYYMMDD),0, 漢中路120-4-12,210018,84468158,004);commit;/* 向Salary表中插入數據樣本*/insert into Salary values(000001, 2100.8, 123.09);INSERT INTO Salary VALUES(010008,1582.62,88.03);INSERT INTO Salary VALUES(102201,2569
18、.88,185.65);INSERT INTO Salary VALUES(111006,1987.01,79.58);INSERT INTO Salary VALUES(504209,2066.15,108.0);INSERT INTO Salary VALUES(302566,2980.7,210.2);INSERT INTO Salary VALUES(108991,3259.98,281.52);INSERT INTO Salary VALUES(020010,2860.0,198.0);INSERT INTO Salary VALUES(020018,2347.68,180.0);I
19、NSERT INTO Salary VALUES(308759,2531.98,199.08);INSERT INTO Salary VALUES(210678,2240.0,121.0);INSERT INTO Salary VALUES(102208,1980.0,100.0);commit;2. 使用PL/SQL命令修改表Salary中的某個記錄的字段值。語句:/*update SALARY表*/UPDATE SALARY SET INCOME = 2890 WHERE EMPLOYEE_ID = 000001;COMMIT;按回車鍵,執行上述語句,將編號為000001的職工收入改為28
20、90.在OEM中打開YGGL數據庫的Salary表,觀察數據變化。3. 使用PL/SQL語句修改表Salary中的所有記錄的字段值。在SQL*Plus界面中輸入以下PL/SQL語句:語句/* 將其所有行的IMCOME加100*/UPDATE SALARY SET INCOME = INCOME + 100;COMMIT;按回車鍵,執行上述語句,將所有職工的收入增加100。可見,使用PL/SQL語句操作表數據比在SQL Developer中操作表數據更為靈活。輸入以下PL/SQL語句,觀察數據變化。SELECT* FROM Salary;4. 使用DELETE語句刪除Salary表中一行記錄。/
21、* 刪除salary表中的一行記錄*/DELETE FROM SALARY WHERE employee_id = 010008;COMMIT;5. 使用TRANCATE TABLE語句刪除表中所有行。在SQL*Plus界面中輸入以下PL/SQL語句:/*清空表*/delete from Salary;delete from employees;delete from departments;TRUNCATE TABLE SALARY;五、 實驗結果與分析按上述過程操作,試驗結果均滿足預期要求。六、 討論、心得(可選)本次試驗主要考察對表的數據的基本更新操作,即dml語言。通過對表的增刪改操作
22、熟悉對應的sql語句以及OEM操作。 本科實驗報告課程名稱: 大型數據庫系統 實驗項目: 數據庫的查詢和視圖 實驗地點: 多學科樓506 專業班級:軟件工程0901 學號:200900 學生姓名: 指導教師: 2012年 4月21日1、 實驗目的和要求1、掌握SELECT語句的基本語法2、掌握子查詢的表示方法3、掌握連接查詢的表示方法4、掌握數據匯總的方法5、掌握SELECT語句的GROUP BY子句的作用和使用方法6、掌握SELECT語句的ORDER BY子句的作用和使用方法7、掌握視圖的使用方法二、實驗內容1. 了解SELECT語句的基本語法格式和執行方法2. 了解子查詢的表示方法、連接查
23、詢和數據匯總的方法3. 了解SELECT語句的GROUP BY子句的作用和使用方法4. 了解SELECT語句的ORDER BY子句的作用5. 了解視圖的作用和創建方法6. 了解視圖的使用方法三、實驗環境與設備 Win7、Oracle 11g四、操作方法與實驗步驟1、SELECT語句的基本使用(1)對于實驗2給出的數據庫表結構,查詢每個雇員的所有數據 在SQL*Plus窗口或SQL Developer中輸入語句并執行 SELECT * FROM Employees;SELECT * FROM Departments;SELECT * FROM Salary;(2)查詢每個雇員的地址和電話 /*
24、查詢每個雇員的地址和電話*/SELECT ADDRESS, PHONE_NUMBER FROM EMPLOYEES; (3)查詢EmployeeID為000001的雇員的地址和電話 SELECT Address,PhoneNumber FROM Employees WHERE Employee_ID=000001; (4)查詢Employees表中所有女雇員的地址和電話,使用AS子句將結果中各列的標題分別指定為地址和電話 SELECT Address AS 地址,PhoneNumber AS 電話 FROM Employees WHERE sex=0;/* 查詢每個女性雇員的地址和電話,并對列
25、名重新命名*/SELECT ADDRESS as 地址, PHONE_NUMBER 電話 FROM EMPLOYEES WHERE SEX = 0; (5)計算ID號以10開頭的雇員的實際收入 /* 計算ID號以10開頭的雇員的實際收入*/SELECT employee_id, INCOME - OUTCOME AS 實際收入 FROM SALARY WHERE EMPLOYEE_ID LIKE 10%; 2、 子查詢的使用(1) 查找在財務部工作的雇員的情況SELECT * FROM EMPLOYEESWHERE Department_ID=(SELECT Department_IDFROM
26、 DepartmentsWHERE DepartmentName=財務部);(2) 查詢財務部年齡不低于所有研發部雇員年齡的雇員的姓名/* 查找財務部年齡不低于所有研發部雇員年齡的雇員的姓名*/SELECT * FROM EMPLOYEES WHERE department_id IN ( SELECT DEPARTMENT_ID FROM departments WHERE department_name = 財務部 ) AND birthday = ALL ( SELECT INCOME FROM SALARY WHERE EMPLOYEE_ID IN ( SELECT EMPLOYEE_
27、ID FROM EMPLOYEES WHERE DEPARTMENT_ID = ( SELECT DEPARTMENT_ID FROM DEPARTMENTS WHERE DEPARTMENT_NAME = 財務部 ) ) ) )3、連接查詢的使用 (1)查詢每個雇員的情況以及其薪水的情況 SELECT Employees.*,Salary.* FROM Employees,Salary WHERE Employees.Employee_ID=Salary.Employee_ID; (2)查找財務部收入在2200元以上的雇員的姓名及其薪水詳情 /* 查找財務部收入在2200元以上的雇員姓名及其
28、薪水詳情*/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 = 財務部 AND INCOME 2200;數據匯總(1) 求財務部雇員的平均收入/* 查找財務部雇員的平均收入*/SELECT AVG(INCOME) FROM SALARY, EM
29、PLOYEES, DEPARTMENTS WHERE salary.employee_id = employees.employee_id AND employees.department_id = departments.department_id AND departments.department_name = 財務部;(2) 求財務部雇員的平均實際收入SELECT AVG(InCome-OutCome) AS 財務部平均實際收入 FROM Salary WHERE Employee_ID IN (SELECT Employee_ID FROM Employees WHERE Depar
30、tment_ID= (SELECT Department_ID FROM Departments WHERE Department_Name=財務部);(3) 求財務部雇員的總人數SELECT COUNT(Employee_ID) FROM Employees WHERE Department_ID= (SELECT Department_ID FROM Departments WHERE Department_Name=財務部);5、GROUP BY和ORDER BY子句的使用 (1)求各部門的雇員數 /* 求各部門的雇員數*/ SELECT DEPARTMENT_NAME, COUNT(*
31、) FROM EMPLOYEES, departments WHERE employees.department_id = departments.department_id GROUP BY DEPARTMENTS.department_NAME; (2)將各部門的情況按收入由低到高排列/* 將各雇員的情況按收入由低到高排序*/SELECT EMPLOYEES.*, SALARY.INCOME, salary.outcome FROM EMPLOYEES, SALARY WHERE employees.employee_id = salary.employee_id ORDER BY INC
32、OME;6、 使用視圖 (1)創建視圖 a、限制查看雇員的實際情況 CREATE OR REPLACE VIEW cx_employeesAS SELECT EmployeeID,Name,Birthday,Sex,DepartmentID FROM Employees; b、限制各部門經理只能查找本部門雇員的薪水情況,如限制財務經理 想查看自己部門雇員姓名及其薪水詳情/* 創建財務部視圖*/CREATE OR REPLACE VIEW CX_SALARYAS SELECT NAME, INCOME, OUTCOME FROM EMPLOYEES, SALARY, DEPARTMENTS WH
33、ERE employees.employee_id = salary.employee_id AND employees.department_id = departments.department_id AND department_name = 財務部; (2)使用視圖 /* 查詢財務部雇員薪水情況*/SELECT * FROM CX_SALARY;五、實驗結果與分析查詢employees表的全部數據查詢每個雇員的地址和電話查詢每個女性雇員的地址和電話,并對列名重新命名計算ID號以10開頭的雇員的實際收入查找財務部年齡不低于所有研發部雇員年齡的雇員的姓名查找比所有財務部的雇員收入都要高的雇
34、員的姓名查找財務部收入在2200元以上的雇員姓名及其薪水詳情查找財務部雇員的平均收入求各部門的雇員數將各雇員的情況按收入由低到高排序 查詢財務部雇員薪水情況六、討論、心得本實驗考察對表的查詢操作,算是sql語句中最常用的操作,這也是我們每個學生應該必須掌握的基本操作,此后是關于視圖的部分,它是一個很有效的功能,能夠有效限制各用戶只對自己有權操作的數據進行操作。本科實驗報告課程名稱: 大型數據庫系統 實驗項目: 索引和完整性 實驗地點: 多學科樓506 專業班級:軟件工程0901 學號:2009學生姓名: 指導教師: 2012年 4月21日一、實驗目的和要求 目的: (1)掌握索引的使用方法 (
35、2)掌握數據完整性的概念及分類 (3)掌握各種數據完整性的實現方法 要求: (1)了解索引的作用與分類 (2)掌握索引的創建 (3)理解數據完整性的概念及分類 (4)了解各種數據完整性的實現方法二、實驗內容和原理1、建立索引 對YGGL數據庫中Employees表的DepartmentID列建立索引 /* 在Employees表的Departm_ID 列建立索引*/ create index EMP_DEID ON EMPLOYEES(DEPARTMENT_ID) TABLESPACE USERS PCTFREE 48 INITRANS 10 MAXTRANS 100 STORAGE (INI
36、TIAL 64K NEXT 64K MINEXTENTS 5 MAXEXTENTS 20 PCTINCREASE 10 FREELISTS 1 FREELIST GROUPS 1)PARALLEL (DEGREE DEFAULT); 2、 實現域完整性/* 在Employees表的phone_number 列上建立check約束*/ALTER TABLE EMPLOYEES ADD( CONSTRAINT CH_PHONE CHECK(PHONE_NUMBER BETWEEN 0 AND 9);3、 實現實體完整性(參見實驗1)4、 實現參照完整性(參見實驗1)三、主要儀器設備Win7、Ora
37、cle 11g四、實驗結果與分析(必填) 在Employees表的Departm_ID 列建立索引 在Employees表的phone_number 列上建立check約束五、討論、心得本次實驗首先是對索引的建立,它是一種可以提升用戶查詢效率的機制,在這一部分,我有注意到建立索引時是需要指定模式名的,似乎不同的用戶查詢同一張表格可能會用到不同的索引,不知道這樣理解正不正確。然后就是關于完整性的部分,由于在實驗一建立表的時候,我就已經安照要求建立好了完整性約束,所以這里沒有再重復做。本科實驗報告課程名稱: 大型數據庫系統 實驗項目: PL/SQL編程 實驗地點: 多學科樓506 專業班級:軟件工
38、程1 學號:2002 學生姓名: 指導教師: 2012年 4月21日一、 實驗目的與要求(1) 進一步鞏固第2章第4章所學內容(2) 掌握變量的分類與使用(3) 掌握各種運算符的使用(4) 掌握各種控制語句的使用(5) 掌握系統函數及用戶自定義函數的使用二、 實驗內容和原理(1) 了解PL/SQL支持的各種基本數據類型(2) 了解PL/SQL各種運算符、控制語句的功能及使用方法(3) 了解系統函數的調用方法(4) 了解用戶自定義函數時用的一般步驟三、 主要儀器設備Windows XP/7、oracle 10g/11g四、 操作方法與實驗步驟1 條件結構的使用在SQL*Plus的編輯窗口中分別輸
39、入【例6.5】、【例6.6】、【例6.7】和例【6.8】程序并執行。觀察結果。 2 循環結構的使用在SQL*Plus的編輯窗口中分別輸入【例6.9】、【例6.10】、【例6.11】和例【6.12】程序并執行。觀察結果。3 選擇和跳轉語句在SQL*Plus的編輯窗口中分別輸入【例6.13】和【例6.14】程序并執行。觀察結果。 4 自定義函數的使用(1) 定義一個函數實現如下功能。對于給定的DepartmentID值,查詢該值在Departments表中是否存在,若存在返回0,否則返回-1。語句: /* 給定一個Department_id值,查詢其在Departments表中是否存在,若存在返回
40、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; END IF; RETURN (NUM);END; (2) 寫一段PL/SQL腳本程序調用上述函數。當向Employees表中插入一條記錄時,首先調
41、用CHECK_ID檢索該記錄的DepartmentID值在表Departments的DepartmentID字段中是否存在對應值,若存在,則將該記錄插入Employees表。語句: /* 對上述函數進行測試*/set serveroutput onDECLARE NUM NUMBER;BEGIN NUM := check_id(002); IF NUM = 0 THEN dbms_output.put_line(存在!); INSERT INTO EMPLOYEES VALUES( 990210, 張文, TO_DATE(19820324, yyyymmdd), 0, 南京鎮江路2號, 210
42、009, 3497534, 002 ); END IF;END ;五、 實驗結果與分析給定一個Department_id值,查詢其在Departments表中是否存在,若存在返回0,否則返回-1.對上述函數進行測試六、 討論、心得本實驗,書上給的實例代碼是不能正確運行的,主要原因是PL/SQL在執行時并不區分大寫小,所以必須給參數和變量命不同的名字。然后就是,在調試程序時,我用了dbms_output.put_line(存在!);這樣的打印語句,它需要打開輸入服務才能在sqldeveloper環境下正確運行。set serveroutput on;本科實驗報告課程名稱: 大型數據庫系統 實驗項
43、目:實驗6 存儲過程和觸發器的使用實驗地點: 學院樓 502 專業班級: 軟件0901 學號:20學生姓名: 指導教師: 2012年 4月21日一、 實驗目的和要求(1) 掌握存儲過程的使用方法(2) 掌握觸發器的使用方法二、 實驗內容和原理1. 創建觸發器對表Employees的DepartmentID列與表Departments 的DepartmentID列應滿足參照完整性,規則如下:1) 向表Employees添加一條記錄時,該記錄的DepartmentID在Departments表中應存在:2) 修改Departments表DepartmentID字段時在Employees表中應對應修
44、改。3) 刪除Departments表中一記錄時,該記錄對于于Employees表中的記錄也應刪除.利用觸發器實現上述約束。2. 創建存儲過程1) 添加職員記錄的存儲過程EmployeeAdd。2) 修改職員記錄的存儲過程EmployeeUpdate。3) 刪除職員記錄的存儲過程EmployeeDelete。3. 調用存儲過程三、 主要儀器設備Win7電腦一臺,oracle11g四、 操作方法與實驗步驟1. 創建觸發器對表Employees的DEPARTMENT_ID列與表Departments 的DEPARTMENT_ID列應滿足參照完整性,規則如下:1) 向表Employees添加一條記錄
45、時,該記錄的DEPARTMENT_ID在Departments表中應存在:/* 向表Employees添加或修改一條記錄時,該記錄的DEPARTMENT_ID在Departments表中應存在*/CREATE OR REPLACE TRIGGER EMPLOYEES_INS AFTER INSERT OR UPDATE ON EMPLOYEES FOR EACH ROWDECLARE NUM NUMBER;BEGIN SELECT COUNT(*) INTO NUM FROM DEPARTMENTS WHERE DEPARTMENT_ID = :NEW.DEPARTMENT_ID; IF NU
46、M = 0 THEN RAISE_APPLICATION_ERROR(-20001, 職員所在的部門不存在); END IF; END ;2) 修改Departments表DEPARTMENT_ID字段時在Employees表中應對應修改。/* 修改Departments表DEPARTMENT_ID字段時在Employees表中應對應修改*/CREATE OR REPLACE TRIGGER DEPARTMENTS_UPDATE AFTER UPDATE ON DEPARTMENTS FOR EACH ROWBEGIN UPDATE EMPLOYEES SET DEPARTMENT_ID =
47、:NEW.DEPARTMENT_ID WHERE DEPARTMENT_ID = :OLD.DEPARTMENT_ID;END;3) 刪除Departments表中一記錄時,該記錄對于于Employees表中的記錄也應刪除./* 刪除Departments表中一記錄時,該記錄對于于Employees表中的記錄也應刪除*/CREATE OR REPLACE TRIGGER DEPARTMENTS_DELETE AFTER DELETE ON DEPARTMENTS FOR EACH ROWBEGIN DELETE FROM EMPLOYEES WHERE DEPARTMENT_ID = :OLD
48、.DEPARTMENT_ID;END;因為Employees表與Salary表存在外鍵約束,所以,對于此也建立一個觸發器以使得上面的觸發器有效。/* * 刪除Employees表中一記錄時,該記錄對于于Salary表中的記錄也應刪除*/CREATE OR REPLACE TRIGGER EMPLOYEES_SALARY AFTER DELETE ON EMPLOYEES FOR EACH ROWBEGIN DELETE FROM SALARY WHERE EMPLOYEE_ID = :OLD.EMPLOYEE_ID;END;2. 存儲過程的創建及調用1) 添加職員記錄的存儲過程EmployeeAdd。/* 添加職員記錄的存儲過
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設備入股買賣協議書
- 酒吧設備出售協議書
- 車輛推遲過戶協議書
- 酒吧包間轉讓協議書
- 茶樓經營合伙協議書
- 鄰居雙方建房協議書
- 體育俱樂部安全協議書
- 選美大賽參賽協議書
- 轉讓自建商鋪協議書
- 酒館股份保密協議書
- 第六單元《軍民團結一家親》課件 中學音樂人音版七年級下冊
- 2025年中考地理熱點素材題(含答案)
- 寧波大學2014-2015年高等數學A2期末考試試卷
- 2025年碩士研究生政治考研大綱
- 電子商務教師資格證教學理念試題及答案
- 地下工程防水技術規范
- 《醫院手術室凈化施工方案》培訓
- 【正版授權】 ISO/IEC 19790:2025 EN Information security,cybersecurity and privacy protection - Security requirements for cryptographic modules
- 整套課件-證券投資學(第二版)趙錫軍
- 2025年《教師專業成長與專業發展》培訓心得(3篇)
- 2025年重慶市環衛集團有限公司招聘筆試參考題庫含答案解析
評論
0/150
提交評論