PL/SQL编程实验报告班级:10网工三班学生姓名:谢昊天学号:1215134046实验目的和要求:(1)掌握PL/SQL块结构、PL/SQL的基本语法、PL/SQL的控制结构。(2)掌握PL/SQL块中使用复合数据类型和游标的方法。(3)掌握PL/SQL异常处理技术。(4)掌握存储过程、存储函数、触发器高级数据库对象的基本作用。(5)掌握存储过程、存储函数、触发器的建立、修改、查看、删除操作。实验内容:(1)记录执行命令和操作过程中遇到的问题及解决方法,注意从原理上解释原因。(2)记录利用SQL*Plus或iSQL*Plus编写、执行PL/SQL程序的命令。(3)记录执行命令和操作过程中遇到的问题及解决方法,注意从原理上解释原因。(4)记录利用企业管理器管理存储过程、存储函数、触发器的方法。(5)记录利用SQL*Plus和iSQL*Plus管理存储过程、存储函数、触发器的命令。实验步骤与调试过程:1、打开DOS命令窗口,在其中输入sqlplussystem/system命令进入oracle数据库系统。2、在SQLPLUS下输入createtablebusiness(bnochar(10)primarykey,bnamechar(50)notnull,btypechar(4),baddresschar(20),btelchar(13));,创建一个business表,3、用同样的方法新建hospital、card、staff、consume、insurance等表,使用“desc报表名”查看表结构。4、新建表staff_sq1,包含两列sno、sname,5、在SQLPLUS下输入altertablestaff_sq1renametostaff_sq10;,修改以表名。6、创建基于医院名的索引,输入createindexhospital_name_indexonHOSPITAL(HNAMEDESC);。7、对于多个列的索引,createindexhospital_name_indexonHOSPITAL(sname,ssexdesc,sbirthday)。8、删除已建的索引,输入dropindexhospital_name_index。9、视图是基于基础表的数据库的另一种数据库对象,不包含数据。输入命令createviewygbx_card_viewasselectcard.*,business.bname,staff.snamefromcard,business,staffwherecard.cno=staff.cnoandstaff.bno=business.bno即可。10:在命令行中输入命令descuser_view,查看视图的定义。11、输入insertintobusiness_viewvalues('B1997010287','格林制药','企业','鸭绿江街98号','84692315');实验结果:1、创建了实验中的多个表。利用lSQL*Plus或iSQL*Plus编写、执行PL/SQL程序的命令。2、执行命令和操作过程中遇到的问题及解决方法,利用企业管理器管理存储过程、存储函数、触发器的方法。3、利用SQL*Plus和iSQL*Plus管理存储过程、存储函数、触发器的命令。4、实现了用altertableold_table_namerenametonew_table_name表名进行修改。5、通过createindexindex_nameontable_name(column_name1asc|desc,column_name2asc|desc....)创建基于多列的索引。6、成功创建视图。7、createpublicsynonymsynonym_new_nameforold_name创建自己需要的同义词。8、createsequencesequence_name命令创建需要的序列。疑难小结:通过本次试验,我对PL/SQL编程思想有了进一步的了解,通过动手实现PL/SQL编程,更加深刻的理解了PL/SQL编程的特点。在实验中了掌握PL/SQL块结构、PL/SQL的基本语法、PL/SQL的控制结构。掌握PL/SQL块中使用复合数据类型和游标的方法。学习到了PL/SQL异常处理技术。了解了存储过程、存储函数、触发器高级数据库对象的基本作用。掌握存储过程、存储函数、触发器的建立、修改、查看、删除操作。实现了用altertableold_table_namerenametonew_table_name表名进行修改。学会了通过createindexindex_nameontable_name(column_name1asc|desc,column_name2asc|desc....)创建基于多列的索引。知道了需要用createpublicsynonymsynonym_new_nameforold_name创建自己需要的同义词。并且在实验过程中,回顾书本上的理论知识,巩固了我的知识。主要算法和程序清单createtablebusiness(bnochar(10)primarykey,bnamechar(50)notnull,btypechar(10),baddresschar(20),btelchar(13));hospital:createtablehospital(cnochar(15)primarykey,ctypechar(8)check(ctype='企业'orctype='事业'orctype='灵活就业'),cmoneynumber(7,2)unique);createtablecard(cnochar(15)primarykey,ctypechar(8),cmoneynumber(7,2)notnull);createtablestaff(snochar(15)primarykey,snamechar(20)notnull,ssexchar(2)check(ssex='男'orssex='女'),sbirthdaydate,saddresschar(20),stelchar(15)unique,cnochar(15),bnochar(10),constraintfk_card_cnoforeignkey(cno)referencescard(cno),constraintfk_business_bnoforeignkey(bno)referencesbusiness(bno));createtablesee(snochar(5)primarykey,hnochar(5)notnull,sdatedate);createtableconsume(cnochar(5),hnochar(5),sdatedatenotnull,manmechar(20),mnumintnotnull,csmoneynumber(7,2)notnull,constraintpk_consume_sno_hno_sdateprimarykey(cno,hno,sdate),constraintfk_consume_card_cnoforeignkey(cno)referencescard(cno),constraintfk_consume_hospital_hnoforeignkey(hno)referenceshospital(hno));createtableinsurance(idatedate,cnochar(15),imoneynumber(5,2)notnull,bnochar(10),constraintpk_insurance_idate_cnoprimarykey(idate,cno),constraintfk_insurance_cnoforeignkey(cno)referencescard(cno),constraintfk_insurance_bnoforeignkey(bno)referencesbusiness(bno));descbusiness查看表结构创建表staff_sq1:createtablestaff_sq1(snoint,snamenvarchar(20));altertablestaff_sq1renametostaffsq10;添加字段:altertablestaff_sq10addcolumnageint;altertablestaff_sq10addcolumnsalarynumber(5,2);altertablestaff_sq10addcolumnsalarynumber_addnumber(3,1);添加约束:altertablestaff_sq10addconstrationun_snameunique;删除字段:altertablestaff_sq10dropcolumnage;修改字段:altertablestaff_sq10alteragenvarchar(30);创建索引:createindexhospital_name_indexonHOSPITAL(HNAMEDESC);createindexstaff_info_indexonstaff(sname,ssexdesc,sbirthday);删除索引:dropindexhospital_name_index;dropindexstaff_info_index;创建视图:createviewygbx_card_viewasselectcard.*,business.bname,staff.snamefromcard,business,staffwherecard.cno=staff.cnoandstaff.bno=business.bno查看视图:descuser_view向视图插入数据:insertintobusiness_viewvalues('B1997010287','格林制药','企业','鸭绿江街98号','84692315');查看:select*frombusiness;删除视图:dropviewbusiness_view;创建同义词:createpublicsynonymybkforcar删除同义词:droppublicsynonymybk创建序列:createsequenceygbx_seq1startwith60incrementby1minvalue60maxvalue2800cycle;reatesequenceygbx_seq2startwith1incrementby10minvalue1nomaxvaluecycle;修改序列:altersequenceygbx_seq1startwith100incrementby5minvalue100maxvalue82000cycle删除序列:dropsequenceygbx_seq1