Oracle实验报告.docx
《Oracle实验报告.docx》由会员分享,可在线阅读,更多相关《Oracle实验报告.docx(14页珍藏版)》请在冰点文库上搜索。
![Oracle实验报告.docx](https://file1.bingdoc.com/fileroot1/2023-5/27/f6079093-f30f-45b0-a275-dd7a5140164b/f6079093-f30f-45b0-a275-dd7a5140164b1.gif)
Oracle实验报告
华北电力大学
实验报告
|
|
实验名称学生选课数据库的设计与管理
课程名称Oracle数据库系统应用
|
|
专业班级:
软件11学生姓名:
学号:
2011090202成绩:
指导教师:
黄建才实验日期:
2014年5月10日
(实验报告如打印,纸张用A4,左装订;页边距:
上下2.5cm,左2.9cm,右2.1cm;字体:
宋体小四号,1.25倍行距。
)
验证性、综合性实验报告应含的主要内容:
一、实验目的及要求
二、所用仪器、设备
三、实验原理
四、实验方法与步骤
五、实验结果与数据处理
六、讨论与结论(对实验现象、实验故障及处理方法、实验中存在的问题等进行分析和讨论,对实验的进一步想法或改进意见)
七、所附实验输出的结果或数据
设计性实验报告应含的主要内容:
一、设计要求
二、选择的方案
三、所用仪器、设备
四、实验方法与步骤
五、实验结果与数据处理
六、结论(依据“设计要求”)
七、所附实验输出的结果或数据
*封面左侧印痕处装订
实验题目:
学生选课数据库的设计与管理
实验内容:
1.熟悉ORACLE的环境
2.用SQLPLUS创建用户,并赋予其管理员权限。
3.登陆创建的用户
4.设计教师表、课程表、学生表,及其建立各个表之间的约束
5.用数据定义语言建立三个表及其约束
6.对上述表插入一定数量的记录(至少每个表要求插入10条记录)。
7.用SQL语句查询至少教两门课的教师信息;用临时变量查询某个学生信息。
8.用PL/SQL,显示所有教师的信息。
9.将上面的所有的插入操作和查询操作按照不同的内容放到到不同的文件中,当到某个操作时,在SQLPLUS下运行该文件即可。
10.分别设计函数和过程均实现如下功能:
返回某门课学生的平均成绩(该课名称由参数传递)
11.设计过程显示某位教师所教的学生(该教师名通过参数进行传递)。
一、实验目的及要求
熟悉ORACLE的环境
二、所用仪器、设备
PC机和oracle编译软件
三、实验方法与步骤
用户管理:
创建用户和用户授权:
createuserliyun1identifiedbyliyun1;
grantsysdbatoliyun1;
grantcreatesessiontoliyun1;
创建表:
1.创建教师表:
在教师表中,教师的tno号是唯一确定一位教师的,因此在表中设置为主键。
教师表中包含教师的一些基本信息,教师号,教师名字,教师年龄,教师性别。
createtableteacher
(
tnovarchar2(20)primarykey,
tnamevarchar2(20)notnull,
tagevarchar2(10),
tsexvarchar2(5)check(tsexin('男','女'))
);
插入教师数据:
insertintoteachervalues('95001','海丰','35','男');
insertintoteachervalues('95002','巩燕','32','女');
insertintoteachervalues('95003','王涛','41','男');
insertintoteachervalues('95004','秦始皇','35','男'');
insertintoteachervalues('95005','冯艳艳','40','女');
insertintoteachervalues('95006','胖大海','39','男');
insertintoteachervalues('95007','王晓楠','48','女');
insertintoteachervalues('95008','李大钊','51','男');
insertintoteachervalues('95009','张柏芝','35','女');
insertintoteachervalues('95010','林志玲','37','女');
2.创建学生表
学生表中的学生号也是唯一选定一位学生的,因此也将学生号设置成为主键,该学生表中有学生号,学生姓名,学生年龄,学生性别属性。
createtablestudent(
snovarchar(20)primarykey,
snamevarchar(20)notnull,
sagevarchar(10),
ssexvarchar(5)check(ssexin('男','女'))
);
插入学生数据:
insertintostudentvalues('10001','李小龙','22','男');
insertintostudentvalues('10002','曾志伟','23','男');
insertintostudentvalues('10003','科比','21','男');
insertintostudentvalues('10004','李宁','22','女');
insertintostudentvalues('10005','司马光','24','男');
insertintostudentvalues('10006','钱多','20','女');
insertintostudentvalues('10007','黄飞鸿','23','男');
insertintostudentvalues('10008','神马','21','男');
insertintostudentvalues('10009','送高祖','24','男');
insertintostudentvalues('10010','周杰伦','25','男');
insertintostudentvalues('10011','小小','22','女');
insertintostudentvalues('10012','娜迦','23','女');
3.创建课程表:
课程表中课程号唯一确定课程,设置为主键,课程表中有课程的号码,课程的名字,课程的上课时间和上课地点。
createtablecourse(
cnovarchar(20)primarykey,
cnamevarchar(20)notnull,
ctimevarchar(10),
cplacevarchar(50)
);
插入课程数据:
insertintocoursevalues('50001','数据库管理','21','教3_301');
insertintocoursevalues('50002','面向对象设计','23','教3_211');
insertintocoursevalues('50003','人工智能','41','教4_311');
insertintocoursevalues('50004','计算机英语','44','教4_313');
insertintocoursevalues('50005','软件工程','13','教3_305');
insertintocoursevalues('50006','跆拳道','11','体育馆');
insertintocoursevalues('50007','古希腊文化','54','教3_321');
insertintocoursevalues('50008','中国历史','52','教3_101');
insertintocoursevalues('50009','舞蹈','34','音乐管');
insertintocoursevalues('50010','音乐','31','音乐馆');
insertintocoursevalues('50011','c++','32','教3_205');
insertintocoursevalues('50012','sql语言','14','教3_102');
insertintocoursevalues('50013','网页设计','22','教3_106');
4.创建关系表:
在关系表中设置的是以上三个表的关系,在关系表中学生号,教师号,课程号,都设置为外键,以用来连接几个表。
同时关系表中还有学生的课程成绩。
createtablesele(
snovarchar(20),
cnovarchar(20),
tnovarchar2(20),
gradeint,
foreignkey(sno)referencesstudent(sno),
foreignkey(cno)referencescourse(cno),
foreignkey(tno)referencesteacher(tno)
);
插入关系数据:
insertintoselevalues('10001','50003','95001','80');
insertintoselevalues('10001','50006','95002','58');
insertintoselevalues('10002','50002','95001','89');
insertintoselevalues('10002','50003','95005','100');
insertintoselevalues('10002','50001','95001','95');
insertintoselevalues('10004','50009','95009','83');
insertintoselevalues('10004','50010','95010','76');
insertintoselevalues('10004','50011','95003','66');
insertintoselevalues('10005','50008','95004','57');
insertintoselevalues('10005','50001','95001','59');
insertintoselevalues('10006','50010','95010','75');
insertintoselevalues('10006','50012','95007','72');
insertintoselevalues('10008','50007','95001','72');
insertintoselevalues('10008','50003','95005','91');
insertintoselevalues('10009','50003','95005','88');
insertintoselevalues('10009','50005','95006','93');
insertintoselevalues('10010','50001','95001','66');
insertintoselevalues('10010','50004','95003','92');
insertintoselevalues('10010','50006','95002','77');
insertintoselevalues('10011','50009','95009','75');
insertintoselevalues('10012','50013','95008','100');
insertintoselevalues('10012','50007','95001','82');
insertintoselevalues('10012','50010','95010','78');
对库进行一些关系查询:
1.用SQL语句查询至少教两门课的教师信息;用临时变量查询某个学生信息。
查询至少教两门课的教师信息:
select*fromteacher
wheretnoin(
selecttnofromsele
groupbytno
havingcount(distinct(cno))>=2);
查询某个学生信息:
selectsname,sage,sno,&&temp
fromstudentwheresno=&temp;
2.显示所有教师的信息:
Setserveroutputon
Declare
cursormy_cursoris
select*fromteacher;
Begin
forcurrent_cursorinmy_cursor
loop
dbms_output.put_line('教师号:
'||current_cursor.tno);
dbms_output.put_line('教师姓名:
'||current_cursor.tname);
dbms_output.put_line('教师年龄:
'||current_cursor.tage);
dbms_output.put_line('教师性别:
'||current_cursor.tsex);
endloop;
End;
/
3.过程实现如下功能:
返回某门课学生的平均成绩(该课名称由参数传递)
Setserveroutputon
createorreplaceproceduresearch_avg(in_conino%type)
as
out_gradeint;
Begin
selectavg(grade)intoout_grade
fromsele,course
whereo=oandcname=in_con;
dbms_output.put_line('学生平均成绩:
'||out_grade);
Endsearch_avg;
/
调用过程:
executesearch_avg('音乐');
4.设计过程显示某位教师所教的学生(该教师名通过参数进行传递)。
Setserveroutputon
createorreplaceproceduremyserach(preinnumber)
as
cursormy_cursoris
selectsno,sname,sage,ssexfromstudentwheresnoin(selectsnofromselewheretno=pre);
Begin
forcurrent_cursorinmy_cursor
loop
dbms_output.put_line('学生号:
'||current_cursor.sno);
dbms_output.put_line('学生姓名:
'||current_cursor.sname);
dbms_output.put_line('学生年龄:
'||current_cursor.sage);
dbms_output.put_line('学生性别:
'||current_cursor.ssex);
endloop;
Endmyserach;
/
调用过程:
executemyserach('95001');
删除过程:
dropproceduremyserach;
四、实验结果与数据处理
用户创建和授权:
教师表:
学生表:
课程表(一部分):
关系表:
查询至少教两门课的教师信息
显示所有教师信息(一部分):
用临时变量查询某个学生信息:
返回某门课学生的平均成绩:
显示某位教师所教的学生:
五、讨论与结论.
通过这次对学生选课数据库的设计,以及对数据库的安装和配置,我对oracle有了更深的理解。
对于oracle的配置也有了了解。
学习到了如何在数据库中管理表对象,管理表中的数据以及根据系统业务规则处理表中的数据。
在以后的学习中应当更加努力。