典型数据库.docx
- 文档编号:29850041
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:15
- 大小:186.86KB
典型数据库.docx
《典型数据库.docx》由会员分享,可在线阅读,更多相关《典型数据库.docx(15页珍藏版)》请在冰豆网上搜索。
典型数据库
典型数据库
实验指导书
____/____年第____学期
姓名:
_____________
学号:
_____________
班级:
_____________
指导教师:
_____________
目录
实验1
OracleDatabase环境和SQL*Plus基础………………………
3
实验2
管理数据库表及其完整性…………………………………………
5
实验3
SQL查询技术………………………………………………………
7
实验4
PL/SQL基础……………………………………………………
11
实验5
索引和视图………………………………………………………
13
实验6
存储过程和触发器………………………………………………
15
实验一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,表格式如下:
字段名称
数据类型
是否为主码
是否为空
中文含义
sno
Varchar2(8)
*
Notnull
学号
sname
Varchar2(8)
null
学生姓名
sex
Varchar2
(2)
null
公司名
birthday
date
null
地址
deptno
Varchar2(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.打开并配置
四、实验预习和准备
参考相关书籍,能够熟练地使用SQL语言。
五、实验过程与结果
六、实验小结和体会
通过本次实验的学习,我掌握了如何通过CMD创建用户,然后通过ORCL软件创建新的连接,然后创建表并且添加新的数据进去,要注意的是某些数据的数据格式,比如说生日的格式要用到to_char,整体的查询显示语句还是有点相似的。
实验二管理数据库表及其完整性
一、实验目的
掌握Oracle中数据库和表以及数据类型的创建,同时能够熟练地进行表及表间数据完整性约束的创建。
二、实验环境
本实验采用的RDBMS是Oracle公司的数据库管理系统,以OracleDatabase11g版本为软件平台。
三、实验内容与要求
1.在SQL*Plus或SQLDeveloper环境中建立如下结构表:
(1)C表
字段名称
数据类型
是否为主码
是否为空
中文含义
cno
Varchar2(8)
*
Notnull
课程号
cname
Varchar2(16)
null
课程名
credit
NUMBER(3,1)
null
学分
(2)SC表
字段名称
数据类型
是否为主码
是否为空
中文含义
sno
Varchar2(8)
*
Notnull
学号
cno
Varchar2(8)
*
Notnull
课程号
grade
NUMBER(5,1)
null
成绩
(3)Dept表
字段名称
数据类型
是否为主码
是否为空
中文含义
deptno
Varchar2(8)
*
Notnull
系部编号
deptname
Varchar2(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约束(0 若要创建外键约束可参阅如下代码: ALTERTABLE"SC"ADDCONSTRAINT"SC_C_FK1"FOREIGNKEY("CNO") REFERENCES"C"("CNO")ENABLE; 检查约束可参考如下代码: ALTERTABLE"S"ADDCONSTRAINT"S_C_FK1" Check(sexin(‘男’,’女’))); 默认值约束可参考如下代码: ALTERTABLE"S"MODIFY("SEX"CHAR(2CHAR)DEFAULT'男'); 四、实验预习和准备 完成本次实验首先要熟悉SQL语句如何创建数据库表,同时还要熟悉如何使用Alter语句创建主、外键,创建默认值、规则等。 五、实验过程与结果 七、实验小结和体会 本次实验的目的是掌握Oracle中数据库和表以及数据类型的创建,同时能够熟练地进行表及表间数据完整性约束的创建。 上次实验已经掌握了如何创建表,本次实验则是比较注重约束条件,比如说主键约束等,条件约束在软件和DOS段都可以使用,本次实验受益很大,值得回味! 实验三SQL查询技术 一、实验目的 掌握常用的查询技术,能够熟练的运用各种查询和汇总方式进行数据的查询和统计。 二、实验环境 本实验采用的RDBMS是Oracle公司的数据库管理系统,以OracleDatabase11g版本为软件平台。 三、实验内容与要求 1)查询所有学生的学号、姓名、年龄信息,并以年龄升序排列。 2)查询每一个学生选修课程的门数、最高分、最低分、平均分,以门数降序排列。 3)查询除“李明”外所有姓“李”和姓“张”的学生信息。 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.grade>60; 子查询: selectS.sname,SC.gradefromSJOINSConS.sno=SC.snowhereS.snoin(selectsnofromSwhereS.deptno=(selectdeptnofromDEPTwheredeptnamelike’计算机系’))andSC.cnoin(selectcnofromCwherecnamelike’数据库系统概论’)andSC.grade>60; 6、selectC.name,C.credit,SC.grade,S.sname fromCLEFTOUTERJOINSConC.cno=SC.cnoLEFTOUTERjoinSonSC.sno=S.sno; 7、selectDISTINCTsnofromSCSCXwherenotEXISTS(select*fromSCSCYwhereSCY.sno='3'andnotEXISTS(select*fromSCSCZwhereSCZ.Sno=SCX.SnoandSCZ.cno=o)); 六、实验小结和体会 通过本次实验,让我想起了SQL语言和ORCL语言很多相似的地方,内链接和子查询等等,充分掌握好SQL语言,对学习ORCL语言的帮助很大。 实验四PL/SQL基础 一、实验目的 掌握常用的PL/SQL变量和语句,能够熟练的运用循环结构、条件语句等进行程序设计。 一、实验环境 本实验采用的RDBMS是Oracle公司的数据库管理系统,以OracleDatabase11g版本为软件平台。 三、实验内容与要求 (3)用数组实现C表中课程号和课程名的显示,要求将C表中的课程号赋给数组的索引,将课程名作为数组元素,同时反序输出数组的索引和元素。 (4)用多分支条件case语句实现sc表中成绩的等第转换,优秀(>=90)、良好(80-90)、中等(70-80)、及格(60-70)、不及格(<60)。 (5)用游标实现成绩学分绩点的计算,要求显示学生姓名、课程名、学分、成绩、学分绩点等信息。 学分绩点=学分*对应绩点,成绩和对应绩点的关系表如下: 成绩 对应绩点 >=90 5 80-89 4 70-79 3 60-69 2 <60 0 如: 某门课该学生的成绩为72分,该课程的学分为4,则该生该门课的学分绩点=4*3=12。 四、实验预习和准备 了解PL/SQL的常变量的定义,熟悉流程控制语句和游标的使用。 五、实验过程与结果 六、实验小结和体会 实验五索引和视图 一、实验目的 掌握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的索引和视图的定义,熟悉创建和使用索引和视图。 五、实验过程与结果 六、实验小结和体会 实验六存储过程和触发器 一、实验目的 掌握Oracle中存储过程和触发器的创建和调用方法。 二、实验环境 本实验采用的RDBMS是Oracle公司的数据库管理系统,以OracleDatabase11g版本为软件平台。 三、实验内容与要求 1)创建并执行一个存储过程,要求向选课关系中插入一条记录,记录的内容以参数的方式进行传递。 2)创建并执行一个存储过程,能根据输入的学号查找出学生的姓名。 3)创建并执行一个函数,能根据输入的学号和课程号查找出学生的成绩。 4)创建一个触发器,当删除学生表的学生信息时,自动删除该学生所选修的课程信息。 5)创建一个触发器,在插入学生表的学生信息时,当出生日期小于当前系统日期时,不允许插入数据。 四、实验预习和准备 参照相关书籍和文档,熟悉CreateProcedure、createFunction、createTrigger等指令的用法。 五、实验过程与结果 六、实验小结和体会
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 典型 数据库
![提示](https://static.bdocx.com/images/bang_tan.gif)