太原理工大学-oracle-大型数据库实验报告_第1页
太原理工大学-oracle-大型数据库实验报告_第2页
太原理工大学-oracle-大型数据库实验报告_第3页
太原理工大学-oracle-大型数据库实验报告_第4页
太原理工大学-oracle-大型数据库实验报告_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科实验报告课程名称:大型数据库系统实验工程:创立数据库和表实验地点:多学科楼4506专业班级:软件工程0901学号:200学生姓名:指导教师:2023年4月17日实验目的和要求了解数据库的结构以及一些根本概念。了解表的结构特点。了解Oracle11g的根本数据类型。学会使用DBCA创立数据库。学会使用界面方式创立表。学会使用SQL语句手工创立数据库。学会使用SQL语句创立表。实验内容和原理能够创立数据库的用户必须是系统管理员,或是被授权使用CREATEDATABASE语句的用户。创立数据库必须要确定数据库名、所有者〔即创立数据库的用户〕、数据库大小、SGA分配和存储数据库的文件。确定数据库包含哪些表以及所包含的各表的结构,还要了解Oracle11g的常用数据类型,以创立数据库的表。创立企业管理的员工管理数据库YGGL,包含Employees〔员工自然信息〕表、Departments〔部门信息〕表和Salary〔员工薪水情况〕表。各表的结构如下所示。表T1.1Employees表结构列名数据类型长度是否允许为空值说明EmployeeIDChar6×员工编号,主键NameChar10×姓名BirthdayDate×出生日期SexNumber1×性别AddressChar20√地址ZipChar6√PhoneNumberChar12√号码DepartmentChar3×员工部门号、外键表T1.2Departments表结构列名数据类型长度是否允许为空值说明DepartmentIDChar3×部门编号、主键DepartmentNameChar20×部门号NoteVarchar2100√备注表T1.3Salary表结构列名数据类型长度是否允许为空值说明EmplyeeIDChar6×员工编号、主键InComeNumber8,2×收入OutComeNumber8,2×支出主要仪器设备WindowsXP/7、oracle10g/11g操作方法与实验步骤利用DBCA创立数据库数据库名称为YGGL,它的全局数据库名称为YGGL。控制文件三个,存放路径为……,名称分别为CONTROL01.CR、CONTROL02.CR和CONTROL03.CR。重做日志文件三个,大小为100MB,存放路径为:………………,名称分别为redo01.log、redo02.log和redo03.log。创立临时表空间temp01.dpf。数字字符集为ZHS16GBK,国家字符集为AL16UTF16。数据块大小为4KB。进入DBCA,根据其提示逐步完成数据库的创立工作。实际情况,我以创立表空间代替。利用DBCA删除数据库〔实际不操作〕在OEM和利用sql语句分别创立表下面列出建表语句:/**创立Departments表*/createtableDepartments(department_idchar(3),department_namevarchar2(20)notnull,notevarchar2(100),constraintdepartments_pkprimarykey(department_id))tablespaceyggl;/**创立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;实验结果与分析创立表空间:以下为创立表,因为自己的命名习惯,对其中局部名称进行了修正,另外,一些数据的数据类型该用更适宜的数据类型。创立employees表:利用sql语句建表也全部成功。讨论、心得〔可选〕本次试验考察内容根本为数据定义语言,有数据库的创立〔因为以前已建过了,所以这次我用名称空间代替〕,表的创立〔图形化操作与sql语句操作〕。差不多就这样子,通过这次试验大概可以掌握oracle数据库的根本操作,主要有助于对其环境的熟悉。本科实验报告课程名称:大型数据库系统实验工程:表数据插入、修改和删除实验地点:多学科楼4506专业班级:软件工程0901学号:20230学生姓名:指导教师:2012年4实验目的和要求学会使用PL/SQL语句对数据库表进行插入、修改和删除数据操作。学会使用SQLDeveloper对数据库表进行插入、修改和删除数据的操作。了解数据更新操作时要注意数据完整性。了解PL/SQL语句对表数据操作的灵活控制功能。实验内容和原理了解对表数据的插入、删除、修改都属于表数据的更新操作。对表数据的操作可以在SQLDeveloper中进行,也可以由PL/SQL语句实现。掌握PL/SQL语句中用于对表数据进行插入、修改和删除的命令分别是INSERT、UPDATE和DELETE〔或TRANCATETABLE〕。在执行插入、删除、修改等数据更新操作时,必须保证数据的完整性。使用PL/SQL语句在对表数据进行插入、修改及删除时,比在OEM中操作表数据更为灵活,功能更强大。在实验1中,用于实验的YGGL数据库中的三个表已经建立,现在要将各表的样本数据添加到表中。样本数据如表T2.1、表T2.2和表T2.3所示。表T2.1Employees表数据样本编号姓名出生日期性别住址号码部门号000001王林1966-01-231中山路32-1-508210003833556682010008伍容华1976-03-281北京东路100-2210001833213211表T2.2Departments表数据样本部门号部门名称备注部门号部门名称备注1财务部NULL4研发部NULL2人力资源部NULL5市场部NULL3经理办公室NULL表T2.3Salary表数据样本编号收入支出编号收入支出0000012100.8123.091089913259.98281.520100081582.6288.030200102860.0198.01022012568.88185.650200182347.68180.0主要仪器设备WINDOWSXP/WINDOWS7Oracle10g/11g操作方法与实验步骤分别使用SQLDeveloper和PL/SQL语句,在实验1建立的数据库YGGL的表Employees、表Departments和表Salary中插入多行数据记录,然后修改和删除一些记录。使用PL/SQL命令进行有限制的修改和删除。使用SQLDeveloper操作数据启动SQLDeveloper,展开yggl_ora连接,单击〞Employees〞表,在左边窗口中选择〞Data〞选项卡。在此窗口中,单击〞Insertrow〞按钮,表中将增加一个新行,在新行中双击一列空白处后输入新数据,输完后单击〞CommitChanges〞按钮,将数据保存到数据库中。修改数据的方法和添加数据类似,如果要删除一行数据,选中该行数据,单击〞DeleteSelectedRow(s)〞按钮,之后该行的行号前会显示一个“——〞号,删除后单击〞CommitChanges〞按钮保存。使用PL/SQL命令操作数据使用PL/SQL语句分别向YGGL数据库的表Employees、表Departments和表Salary中插入插入一行记录。在启动SQL*Plus窗口或SQLDeveloper的代码编辑窗口中,输入以下PL/SQL语句并执行:一下为对3个表的数据的所有插入语句:/**向DEPARTMENTS表中插入数据样本*/insertintoDEPARTMENTSvalues('001','财务部',null);insertintoDEPARTMENTSvalues('002','人力资源部',null);INSERTINTODepartmentsVALUES('003','经理办公室',NULL);INSERTINTODepartmentsVALUES('004','研发部',NULL);INSERTINTODepartmentsVALUES('005','市场部',NULL);commit;/**向employee表中插入数据样本*/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表中插入数据样本*/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中的某个记录的字段值。语句:/**updateSALARY表**/UPDATESALARYSETINCOME=2890WHEREEMPLOYEE_ID='000001';COMMIT;按回车键,执行上述语句,将编号为000001的职工收入改为2890.在OEM中翻开YGGL数据库的Salary表,观察数据变化。使用PL/SQL语句修改表Salary中的所有记录的字段值。在SQL*Plus界面中输入以下PL/SQL语句:语句/***将其所有行的IMCOME加100**/UPDATESALARYSETINCOME=INCOME+100;COMMIT;按回车键,执行上述语句,将所有职工的收入增加100。可见,使用PL/SQL语句操作表数据比在SQLDeveloper中操作表数据更为灵活。输入以下PL/SQL语句,观察数据变化。SELECT*FROMSalary;使用DELETE语句删除Salary表中一行记录。/***删除salary表中的一行记录**/DELETEFROMSALARYWHEREemployee_id='010008';COMMIT;使用TRANCATETABLE语句删除表中所有行。在SQL*Plus界面中输入以下PL/SQL语句:/***清空表**/deletefromSalary;deletefromemployees;deletefromdepartments;TRUNCATETABLESALARY;实验结果与分析按上述过程操作,试验结果均满足预期要求。讨论、心得〔可选〕本次试验主要考察对表的数据的根本更新操作,即dml语言。通过对表的增删改操作熟悉对应的sql语句以及OEM操作。本科实验报告课程名称:大型数据库系统实验工程:数据库的查询和视图实验地点:多学科楼506专业班级:软件工程0901学号:202300学生姓名:指导教师:2023年4月21日实验目的和要求1、掌握SELECT语句的根本语法2、掌握子查询的表示方法3、掌握连接查询的表示方法4、掌握数据汇总的方法5、掌握SELECT语句的GROUPBY子句的作用和使用方法6、掌握SELECT语句的ORDERBY子句的作用和使用方法7、掌握视图的使用方法二、实验内容1.了解SELECT语句的根本语法格式和执行方法2.了解子查询的表示方法、连接查询和数据汇总的方法3.了解SELECT语句的GROUPBY子句的作用和使用方法4.了解SELECT语句的ORDERBY子句的作用5.了解视图的作用和创立方法6.了解视图的使用方法三、实验环境与设备Win7、Oracle11g四、操作方法与实验步骤1、SELECT语句的根本使用〔1〕对于实验2给出的数据库表结构,查询每个雇员的所有数据在SQL*Plus窗口或SQLDeveloper中输入语句并执行SELECT*FROMEmployees;SELECT*FROMDepartments;SELECT*FROMSalary;〔2〕查询每个雇员的地址和/***查询每个雇员的地址和**/SELECTADDRESS,PHONE_NUMBERFROMEMPLOYEES;〔3〕查询EmployeeID为000001的雇员的地址和SELECTAddress,PhoneNumberFROMEmployeesWHEREEmployee_ID='000001';〔4〕查询Employees表中所有女雇员的地址和,使用AS子句将结果中各列的标题分别指定为地址和SELECTAddressAS地址,PhoneNumberASFROMEmployeesWHEREsex=0;/***查询每个女性雇员的地址和,并对列名重新命名**/SELECTADDRESSas地址,PHONE_NUMBERFROMEMPLOYEESWHERESEX='0';〔5〕计算ID号以10开头的雇员的实际收入/***计算ID号以10开头的雇员的实际收入**/SELECTemployee_id,INCOME-OUTCOMEAS实际收入FROMSALARYWHEREEMPLOYEE_IDLIKE'10%';子查询的使用查找在财务部工作的雇员的情况SELECT*FROMEMPLOYEESWHEREDepartment_ID=(SELECTDepartment_IDFROMDepartmentsWHEREDepartmentName='财务部');查询财务部年龄不低于所有研发部雇员年龄的雇员的姓名/***查找财务部年龄不低于所有研发部雇员年龄的雇员的姓名**/SELECT*FROMEMPLOYEESWHEREdepartment_idIN(SELECTDEPARTMENT_IDFROMdepartmentsWHEREdepartment_name='财务部')ANDbirthday<=ALL(SELECTBIRTHDAYFROMEMPLOYEESWHEREDEPARTMENT_IDIN(SELECTDEPARTMENT_IDFROMdepartmentsWHEREdepartment_name='研发部'));查找比所有财务部的雇员收入都搞得雇员的姓名/***查找比所有财务部的雇员收入都要高的雇员的姓名**/SELECTNAMEFROMEMPLOYEESWHEREEMPLOYEE_idIN(SELECTEMPLOYEE_IDFROMSALARYWHEREINCOME>=ALL(SELECTINCOMEFROMSALARYWHEREEMPLOYEE_IDIN(SELECTEMPLOYEE_IDFROMEMPLOYEESWHEREDEPARTMENT_ID=(SELECTDEPARTMENT_IDFROMDEPARTMENTSWHEREDEPARTMENT_NAME='财务部'))))3、连接查询的使用〔1〕查询每个雇员的情况以及其薪水的情况SELECTEmployees.*,Salary.*FROMEmployees,SalaryWHEREEmployees.Employee_ID=Salary.Employee_ID;〔2〕查找财务部收入在2200元以上的雇员的姓名及其薪水详情/***查找财务部收入在2200元以上的雇员姓名及其薪水详情**/SELECTname,INCOME,OUTCOMEFROMEMPLOYEES,SALARY,DEPARTMENTSWHEREemployees.employee_id=salary.employee_idANDemployees.department_id=departments.department_idANDdepartments.department_NAME='财务部'ANDINCOME>2200;数据汇总求财务部雇员的平均收入/***查找财务部雇员的平均收入**/SELECTAVG(INCOME)FROMSALARY,EMPLOYEES,DEPARTMENTSWHEREsalary.employee_id=employees.employee_idANDemployees.department_id=departments.department_idANDdepartments.department_name='财务部';求财务部雇员的平均实际收入SELECTAVG(InCome-OutCome)AS财务部平均实际收入FROMSalaryWHEREEmployee_IDIN(SELECTEmployee_IDFROMEmployeesWHEREDepartment_ID=(SELECTDepartment_IDFROMDepartmentsWHEREDepartment_Name='财务部'));求财务部雇员的总人数SELECTCOUNT(Employee_ID)FROMEmployeesWHEREDepartment_ID=(SELECTDepartment_IDFROMDepartmentsWHEREDepartment_Name='财务部');5、GROUPBY和ORDERBY子句的使用〔1〕求各部门的雇员数/***求各部门的雇员数**/SELECTDEPARTMENT_NAME,COUNT(*)FROMEMPLOYEES,departmentsWHEREemployees.department_id=departments.department_idGROUPBYDEPARTMENTS.department_NAME;〔2〕将各部门的情况按收入由低到高排列/***将各雇员的情况按收入由低到高排序**/SELECTEMPLOYEES.*,SALARY.INCOME,salary.outcomeFROMEMPLOYEES,SALARYWHEREemployees.employee_id=salary.employee_idORDERBYINCOME;使用视图〔1〕创立视图a、限制查看雇员的实际情况CREATEORREPLACEVIEWcx_employeesASSELECTEmployeeID,Name,Birthday,Sex,DepartmentIDFROMEmployees;b、限制各部门经理只能查找本部门雇员的薪水情况,如限制财务经理想查看自己部门雇员姓名及其薪水详情/***创立财务部视图**/CREATEORREPLACEVIEWCX_SALARYASSELECTNAME,INCOME,OUTCOMEFROMEMPLOYEES,SALARY,DEPARTMENTSWHEREemployees.employee_id=salary.employee_idANDemployees.department_id=departments.department_idANDdepartment_name='财务部';〔2〕使用视图/***查询财务部雇员薪水情况**/SELECT*FROMCX_SALARY;五、实验结果与分析查询employees表的全部数据查询每个雇员的地址和查询每个女性雇员的地址和,并对列名重新命名计算ID号以10开头的雇员的实际收入查找财务部年龄不低于所有研发部雇员年龄的雇员的姓名查找比所有财务部的雇员收入都要高的雇员的姓名查找财务部收入在2200元以上的雇员姓名及其薪水详情查找财务部雇员的平均收入求各部门的雇员数将各雇员的情况按收入由低到高排序查询财务部雇员薪水情况六、讨论、心得本实验考察对表的查询操作,算是sql语句中最常用的操作,这也是我们每个学生应该必须掌握的根本操作,此后是关于视图的局部,它是一个很有效的功能,能够有效限制各用户只对自己有权操作的数据进行操作。本科实验报告课程名称:大型数据库系统实验工程:索引和完整性实验地点:多学科楼506专业班级:软件工程0901学号:2023学生姓名:指导教师:2023年4月21日一、实验目的和要求目的:〔1〕掌握索引的使用方法〔2〕掌握数据完整性的概念及分类〔3〕掌握各种数据完整性的实现方法要求:〔1〕了解索引的作用与分类〔2〕掌握索引的创立〔3〕理解数据完整性的概念及分类〔4〕了解各种数据完整性的实现方法二、实验内容和原理1、建立索引对YGGL数据库中Employees表的DepartmentID列建立索引/***在Employees表的Departm_ID列建立索引**/createindexEMP_DEIDONEMPLOYEES(DEPARTMENT_ID)TABLESPACEUSERSPCTFREE48INITRANS10MAXTRANS100STORAGE(INITIAL64KNEXT64KMINEXTENTS5MAXEXTENTS20PCTINCREASE10FREELISTS1FREELISTGROUPS1)PARALLEL(DEGREEDEFAULT);实现域完整性/***在Employees表的phone_number列上建立check约束**/ALTERTABLEEMPLOYEESADD(CONSTRAINTCH_PHONECHECK(PHONE_NUMBERBETWEEN'0'AND'9'));实现实体完整性〔参见实验1〕实现参照完整性〔参见实验1〕三、主要仪器设备Win7、Oracle11g四、实验结果与分析〔必填〕在Employees表的Departm_ID列建立索引在Employees表的phone_number列上建立check约束五、讨论、心得本次实验首先是对索引的建立,它是一种可以提升用户查询效率的机制,在这一局部,我有注意到建立索引时是需要指定模式名的,似乎不同的用户查询同一张表格可能会用到不同的索引,不知道这样理解正不正确。然后就是关于完整性的局部,由于在实验一建立表的时候,我就已经安照要求建立好了完整性约束,所以这里没有再重复做。本科实验报告课程名称:大型数据库系统实验工程:PL/SQL编程实验地点:多学科楼506专业班级:软件工程1学号:2002学生姓名:指导教师:2023年4月21日实验目的与要求进一步稳固第2章~第4章所学内容掌握变量的分类与使用掌握各种运算符的使用掌握各种控制语句的使用掌握系统函数及用户自定义函数的使用实验内容和原理了解PL/SQL支持的各种根本数据类型了解PL/SQL各种运算符、控制语句的功能及使用方法了解系统函数的调用方法了解用户自定义函数时用的一般步骤主要仪器设备WindowsXP/7、oracle10g/11g操作方法与实验步骤条件结构的使用在SQL*Plus的编辑窗口中分别输入【例6.5】、【例6.6】、【例6.7】和例【6.8】程序并执行。观察结果。循环结构的使用在SQL*Plus的编辑窗口中分别输入【例6.9】、【例6.10】、【例6.11】和例【6.12】程序并执行。观察结果。选择和跳转语句在SQL*Plus的编辑窗口中分别输入【例6.13】和【例6.14】程序并执行。观察结果。自定义函数的使用定义一个函数实现如下功能。对于给定的DepartmentID值,查询该值在Departments表中是否存在,假设存在返回0,否那么返回-1。语句:/***给定一个Department_id值,查询其在Departments表中是否存在,假设存在返回0,否那么返回-1.**/CREATEORREPLACEFUNCTIONCHECK_ID(P_DEPARTMENT_IDINCHAR)RETURNNUMBERASNUMNUMBER;BEGINSELECTCOUNT(*)INTONUMFROMDEPARTMENTSWHEREDEPARTMENT_ID=P_DEPARTMENT_ID;IFNUM>0THENNUM:=0;ELSENUM:=-1;ENDIF;RETURN(NUM);END;写一段PL/SQL脚本程序调用上述函数。当向Employees表中插入一条记录时,首先调用CHECK_ID检索该记录的DepartmentID值在表Departments的DepartmentID字段中是否存在对应值,假设存在,那么将该记录插入Employees表。语句:/***对上述函数进行测试**/setserveroutputonDECLARENUMNUMBER;BEGINNUM:=check_id('002');IFNUM=0THENdbms_output.put_line('存在!');INSERTINTOEMPLOYEESVALUES('990210','张文',TO_DATE('19820324','yyyymmdd'),0,'南京镇江路2号','210009','3497534','002');ENDIF;END;实验结果与分析给定一个Department_id值,查询其在Departments表中是否存在,假设存在返回0,否那么返回-1.对上述函数进行测试讨论、心得本实验,书上给的实例代码是不能正确运行的,主要原因是PL/SQL在执行时并不区分大写小,所以必须给参数和变量命不同的名字。然后就是,在调试程序时,我用了dbms_output.put_line('存在!');这样的打印语句,它需要翻开输入效劳才能在sqldeveloper环境下正确运行。setserveroutputon;本科实验报告课程名称:大型数据库系统实验工程:实验6存储过程和触发器的使用实验地点:学院楼502专业班级:软件0901学号:20学生姓名:指导教师:2023年4月21日实验目的和要求掌握存储过程的使用方法掌握触发器的使用方法实验内容和原理创立触发器对表Employees的DepartmentID列与表Departments的DepartmentID列应满足参照完整性,规那么如下:向表Employees添加一条记录时,该记录的DepartmentID在Departments表中应存在:修改Departments表DepartmentID字段时在Employees表中应对应修改。删除Departments表中一记录时,该记录对于于Employees表中的记录也应删除.利用触发器实现上述约束。创立存储过程添加职员记录的存储过程EmployeeAdd。修改职员记录的存储过程EmployeeUpdate。删除职员记录的存储过程EmployeeDelete。调用存储过程主要仪器设备Win7电脑一台,oracle11g操作方法与实验步骤创立触发器对表Employees的 DEPARTMENT_ID列与表Departments的 DEPARTMENT_ID列应满足参照完整性,规那么如下:向表Employees添加一条记录时,该记录的 DEPARTMENT_ID在Departments表中应存在:/***向表Employees添加或修改一条记录时,该记录的 DEPARTMENT_ID在Departments表中应存在**/CREATEORREPLACETRIGGEREMPLOYEES_INSAFTERINSERTORUPDATEONEMPLOYEESFOREACHROWDECLARENUMNUMBER;BEGINSELECTCOUNT(*)INTONUMFROMDEPARTMENTSWHEREDEPARTMENT_ID=:NEW.DEPARTMENT_ID;IFNUM=0THENRAISE_APPLICATION_ERROR(-20001,'职员所在的部门不存在');ENDIF;END;修改Departments表 DEPARTMENT_ID字段时在Employees表中应对应修改。/***修改Departments表 DEPARTMENT_ID字段时在Employees表中应对应修改**/CREATEORREPLACETRIGGERDEPARTMENTS_UPDATEAFTERUPDATEONDEPARTMENTSFOREACHROWBEGINUPDATEEMPLOYEESSETDEPARTMENT_ID=:NEW.DEPARTMENT_IDWHEREDEPARTMENT_ID=:OLD.DEPARTMENT_ID;END;删除Departments表中一记录时,该记录对于于Employees表中的记录也应删除./***删除Departments表中一记录时,该记录对于于Employees表中的记录也应删除**/CREATEORREPLACETRIGGERDEPARTMENTS_DELETEAFTERDELETEONDEPARTMENTSFOREACHROWBEGINDELETEFROMEMPLOYEESWHEREDEPARTMENT_ID=:OLD.DEPARTMENT_ID;END;因为Employees表与Salary表存在外键约束,所以,对于此也建立一个触发器以使得上面的触发器有效。/***删除Employees表中一记录时,该记录对于于Salary表中的记录也应删除**/CREATEORREPLACETRIGGEREMPLOYEES_SALARYAFTERDELETEONEMPLOYEESFOREACHROWBEGINDELETEFROMSALARYWHEREEMPLOYEE_ID=:OLD.EMPLOYEE_ID;END;存储过程的创立及调用添加职员记录的存储过程EmployeeAdd。/***添加职员记录的存储过程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号','210003','83355668','003');〔这里注意,调用存储过程时不能换行!〕修改职员记录的存储过程EmployeeUpdate。/***修改职员记录的存储过程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号','210003','83355668','003');删除职员记录的存储过程EmployeeDelete。/***删除职员记录的存储过程EmployeeDelete**/CREATEORREPLACEPROCEDUREEMPLOYEE_DELETE(IDINCHAR)ASBEGINDELETEFROMEMPLOYEESWHEREEMPLOYEE_ID=ID;COMMIT;END;EXECEMPLOYEE_DELETE('990230');实验结果与分析验证触发器1:insertintoemployeesvalues('009001','王林2',to_d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论