典型数据库实验指导书____/____年第____学期姓名:_____________学号:_____________班级:_____________指导教师:_____________2目录实验1OracleDatabase环境和SQL*Plus基础………………………3实验2管理数据库表及其完整性…………………………………………5实验3SQL查询技术………………………………………………………7实验4PL/SQL基础……………………………………………………11实验5索引和视图………………………………………………………13实验6存储过程和触发器………………………………………………153实验一OracleDatabase环境和SQL*Plus基础一、实验目的掌握OracleDatabase数据库的安装,学会使用SQL*Plus环境的设置及应用。二、实验环境本实验采用的RDBMS是Oracle公司的数据库管理系统,以OracleDatabase11g版本为软件平台。三、实验内容与要求1.熟悉OracleDatabase软件的获取和安装,简要说明OracleDatabase11g的安装过程。2.启动和设置SQL*Plus环境,通过SQL*Plus环境执行SQL语句。(1)打开SQL*Plus环境,登录Oracle数据库,以系统默认用户身份登录,用户名:system,口令:Admin123。登录成功后出现:“SQL”提示符。(2)以学生姓名拼音建立新的Oracle数据库用户(姓全拼,名字的首字母),并给用户授予连接和管理员权限。参考代码:createuserwangwidentifiedbywangw;(前一个为用户名,后一个为口令)grantcreatesession,dbatowangw;(session为连接权限,dba是具有100多个权限的角色)3.以当前新定义用户登录后创建学生表,表名:S,表格式如下:字段名称数据类型是否为主码是否为空中文含义snoVarchar2(8)*Notnull学号snameVarchar2(8)null学生姓名sexVarchar2(2)null公司名birthdaydatenull地址deptnoVarchar2(24)null所在系部编号使用describe命令查看所定义的表结构。4.使用insert语句向S表中插入至少10条数据。参考代码:INSERTINTOEMP(EMPNO,ENAME,HIREDATE)VALUES(7844,'TURNER',to_date('8-9-1981','dd-mm-yyyy'));5.查询:(1)查询所有学生信息的信息;(2)格式化查询结果:改变deptno列的显示宽度为A10,将所有列标题设置成相应的中文含义。6.打开并配置4四、实验预习和准备参考相关书籍,能够熟练地使用SQL语言。五、实验过程与结果567六、实验小结和体会通过本次实验的学习,我掌握了如何通过CMD创建用户,然后通过ORCL软件创建新的连接,然后创建表并且添加新的数据进去,要注意的是某些数据的数据格式,比如说生日的格式要用到to_char,整体的查询显示语句还是有点相似的。实验二管理数据库表及其完整性一、实验目的掌握Oracle中数据库和表以及数据类型的创建,同时能够熟练地进行表及表间数据完整性约束的创建。二、实验环境本实验采用的RDBMS是Oracle公司的数据库管理系统,以OracleDatabase11g版本为软件平台。三、实验内容与要求1.在SQL*Plus或SQLDeveloper环境中建立如下结构表:(1)C表字段名称数据类型是否为主码是否为空中文含义cnoVarchar2(8)*Notnull课程号cnameVarchar2(16)null课程名8creditNUMBER(3,1)null学分(2)SC表字段名称数据类型是否为主码是否为空中文含义snoVarchar2(8)*Notnull学号cnoVarchar2(8)*Notnull课程号gradeNUMBER(5,1)null成绩(3)Dept表字段名称数据类型是否为主码是否为空中文含义deptnoVarchar2(8)*Notnull系部编号deptnameVarchar2(16)null系部名称示例:创建表CREATETABLEEMP(EMPNONUMBER(4)CONSTRAINTPK_EMPPRIMARYKEY,ENAMEVARCHAR2(10),JOBVARCHAR2(9),MGRNUMBER(4),HIREDATEDATE,SALNUMBER(7,2),COMMNUMBER(7,2),DEPTNONUMBER(2)CONSTRAINTFK_DEPTNOREFERENCESDEPT);2.创建约束:同时添加相应的主键约束、外键约束,并给C表中的credit字段添加check约束(0credit10),给sc表中的grade添加默认值(default为0),并验证。若要创建外键约束可参阅如下代码:ALTERTABLESCADDCONSTRAINTSC_C_FK1FOREIGNKEY(CNO)REFERENCESC(CNO)ENABLE;检查约束可参考如下代码:ALTERTABLESADDCONSTRAINTS_C_FK1Check(sexin(‘男’,’女’)));默认值约束可参考如下代码:ALTERTABLESMODIFY(SEXCHAR(2CHAR)DEFAULT'男');四、实验预习和准备完成本次实验首先要熟悉SQL语句如何创建数据库表,同时还要熟悉如何使用Alter语句创建主、外键,创建默认值、规则等。9五、实验过程与结果10七、实验小结和体会本次实验的目的是掌握Oracle中数据库和表以及数据类型的创建,同时能够熟练地进行表及表间数据完整性约束的创建。上次实验已经掌握了如何创建表,本次实验则是比较注重约束条件,比如说主键约束等,条件约束在软件和DOS段都可以使用,本次实验受益很大,值得回味!实验三SQL查询技术一、实验目的掌握常用的查询技术,能够熟练的运用各种查询和汇总方式进行数据的查询和统计。二、实验环境本实验采用的RDBMS是Oracle公司的数据库管理系统,以OracleDatabase11g版本为软件平台。三、实验内容与要求1)查询所有学生的学号、姓名、年龄信息,并以年龄升序排列。2)查询每一个学生选修课程的门数、最高分、最低分、平均分,以门数降序排列。113)查询除“李明”外所有姓“李”和姓“张”的学生信息。4)在选课关系中查询每门课程的选修人数、平均成绩,并将平均成绩大于70分的课程的课程号、选修人数和平均成绩显示出来。5)查询“计算机系”选修“数据库系统概论”课程且成绩大于60分的学生姓名和成绩。(分别用内连接和子查询实现)6)查询所有课程的选修情况(包含没有学生选修的课程),包括课程名称、学分、学生姓名和成绩。7)查询至少选修了“3”号学生选修所有课程的学生的学号和姓名。四、实验预习和准备参照相关书籍和文档,熟悉Select语句的各种用法。五、实验过程与结果1、selectsno,sname,to_char(sysdate,’yyyy’)-to_char(birthday,’yyyy’)asagefromSorderbyage;2、selectsno,count(cno),max(grade),min(grade),avg(grade)fromSCgroupbysnoorderbycount(cno)desc;3、select*fromSwheresnamelike‘李%’orsnamelike‘张%’minusselect*fromSwheresnamelike‘李明’;4、selectcno,count(sno),avg(grade),fromSCgroupbycnohavingavg(grade)70;5、内连接:selectS.sname,SC.gradefromS,SC,DEPT,CwhereS.sno=SC.snoandS.deptno=DEPT.deptnoandDEPT.deptnamelike‘计算机系’andC.cnamelike‘数据库系统概论’andC.cno=SC.cnoandSC.grade60;子查询:selectS.sname,SC.gradefromSJOINSConS.sno=SC.snowhereS.snoin(selectsnofromSwhereS.deptno=(selectdeptnofromDEPTwheredeptnamelike’计算机系’))andSC.cnoin(selectcnofromCwherecnamelike’数据库系统概论’)andSC.grade60;6、selectC.name,C.credit,SC.grade,S.snamefromCLEFTOUTERJOINSConC.cno=SC.cnoLEFTOUTERjoinSonSC.sno=S.sno;7、selectDISTINCTsnofromSCSCXwherenotEXISTS(select*fromSCSCYwhereSCY.sno='3'andnotEXISTS(select*fromSCSCZwhereSCZ.Sno=SCX.SnoandSCZ.cno=scy.cno));六、实验小结和体会通过本次实验,让我想起了SQL语言和ORCL语言很多相似的地方,内链接和子查询等等,充分掌握好SQL语言,对学习ORCL语言的帮助很大。实验四PL/SQL基础一、实验目的12掌握常用的PL/SQL变量和语句,能够熟练的运用循环结构、条件语句等进行程序设计。一、实验环境本实验采用的RDBMS是Oracle公司的数据库管理系统,以OracleDatabase11g版本为软件平台。三、实验内容与要求(3)用数组实现C表中课程号和课程名的显示,要求将C表中的课程号赋给数组的索引,将课程名作为数组元素,同时反序输出数组的索引和元素。(4)用多分支条件case语句实现sc表中成绩的等第转换,优秀(=90)、良好(80-90)、中等(70-80)、及格(60-70)、不及格(60)。(5)用游标实现成绩学分绩点的计算,要求显示学生姓名、课程名、学分、成绩、学分绩点等信息。学分绩点=学分*对应绩点,成绩和对应绩点的关系表如下:成绩对应绩点=90580-89470-79360-692600如:某门课该学生的成绩为72分,该课程的学分为4,则该生该门课的学分绩点=4*3=12。四、实验预习和准备了解PL/SQL的常变量的定义,熟悉流程控制语句和游标的使用。五、实验过程与结果六、实验小结和体会实验五索引和视图一、实验目的13掌握oracle中索引和视图的基本原理,能够熟练的创建使用索引和视图。二、实验环境本实验采用的RDBMS是Oracle公司的数据库管理系统,以OracleDatabase11g版本为软件平台。三、实验内容与要求1.对s表的sname字段创建唯一索引。2.给sc表中的sno和cno两个字段创建连接索引。3.给dept表中的deptname字段创建B树索引,同时设定数据块的预留空间为40%。4.给c表中的cname字段定义函数索引,要求查询时忽略cname两边的空格。5.创建视图view_sc,要求显示学生的姓名、课程名、成绩,以成绩降序排列;同时在此视图的基础上查询,要求统计出不同课程的选课人数,并显示大于2人的课程名和人数。6.使用内嵌视图实现如下查询:显示各个系部的名称、学生人数和学生人数所占的比例。四、实验预习和准备了解PL/SQL的索引和视图的定义,熟悉创建和使用索引和视图。五、实验过程与结果六、实验小结和体会实验六存储过程和触发器14一、实验目的掌握Oracle中存储过程和触发器的创建和调用方法。二、实验环境本实验采用的RDBMS是Oracle公司的数据库管理系统,以OracleDatabase11g版本为软件平台。三、实验