oracle实验三.docx
《oracle实验三.docx》由会员分享,可在线阅读,更多相关《oracle实验三.docx(18页珍藏版)》请在冰豆网上搜索。
oracle实验三
课程名称Oracle数据库系统设计
实验序号03
实验项目数据库对象管理
实验地点综B502
实验学时2实验类型操作性
指导教师侯睿实验员
专业计算机科学与技术(师范)班级
学号姓名
2014年4月18日
实验报告要求
1、实验报告封面填表说明(每份实验报告必须附上封面)
(1)课程名称:
要求与实验大纲和实验指导书中的课程名称一致。
(2)实验序号:
指该课程的第几个实验。
(3)实验项目:
要求与实验大纲和实验指导书中的实验项目一致。
(4)实验地点:
填写完成该实验项目所在的实验室名称。
(5)实验学时:
要求与实验大纲和实验指导书中完成该实验项目所需学时一致。
(6)实验类型:
是指演示性、操作性、验证性、综合性、设计性。
演示性:
教师操作,学生观察,验证理论、说明原理和方法。
操作性:
学生按要求动手拆装、调试实验装置或上机操作,掌握其基本原理和方法。
验证性:
按实验指导书(教材)要求,由学生通过操作验证所学理论,加深对理论、知识的理解,掌握基本实验知识、方法、技能、数据处理等。
综合性:
实验内容涉及本课程的综合知识或相关课程的知识,运用多的知识、多种方法,按要求或自拟实验方案进行实验。
主要培养学生综合运用所学知识、实验方法和实验技能,以培养其分析、解决问题的能力。
设计性:
给定实验目的、要求和实验条件,学生自己设计实验方案并加以实现的实验。
学生独立完成从查阅资料、拟定实验方案、实验方法和步骤(或系统分析和设计)、选择仪器设备(或自行设计缺制作)进行实验并完成实验全过程,形成实验报告,培养学生自主实验的能力。
2、实验报告的格式
软件类实验报告格式
公共课实验报告格式
硬件类实验报告格式
序号
要求
序号
要求
序号
要求
1
实验目的及要求
1
实验目的及要求
1
实验预习
实验目的实验原理及内容(简明扼要,主要是实验接线图)
2
实验原理与内容
2
实验步骤
所用仪器设备
3
实验软硬件环境
3
操作要点
预习思考题
4
实验过程(实验步骤、记录、数据、分析)
4
实验结果
2
实验原始记录(经实验指导教师签名认可)
画出实验所需要的各种记录表格
5
测试/调试及实验结果分析
5
实验问题
3
实验报告
数据处理(数据表格、计算结果、误差、结果表达、曲线图等)
6
实验结论与体会
6
小结及讨论
结论
讨论
3、教师批改学生实验报告要求
(1)批改:
全部批改及更正错误。
(2)评分:
按百分制评分,不能评分为“优、良、中、差”或“A、B、C”。
(3)签名及批改日期:
任课教师必须在每份学生实验报告中签名和写上批改日期。
(4)成绩:
填写学生实验成绩表,实验成绩作为考试成绩评定的依据。
(4)评语:
任课教师批改学生实验报告时,应给出简明扼要的评语。
成绩:
教师评语
指导教师签名:
批阅日期:
一、实验目的及要求
通过上机实践熟悉Oracle11g的对象管理,包括表、索引、视图、同义词和序列几种数据库对象的管理等。
二、实验原理与内容
(1)使用SQL语句创建表
①创建学生表student(Sno,Sname,Ssex,Sage,Sclass),定义Sno为主键,添加约束:
对列Ssex的取值为男和女,Sage的取值为18到24。
②创建课程表course(Cno,Cname,Ccredit),定义Cno为主键。
③创建选修表SC(Sno,Cno,grade),Sno和cno为主键,Sno为外键,Cno为外键。
④使用insert语句向以上三个表插入以下数据。
student表course表
Sno
Sname
Ssex
Sage
Sclass
410601
李军
男
18
计算机科学与技术
410602
王红
女
18
计算机科学与技术
410603
赵平
女
19
计算机科学与技术
520801
张强
男
19
网络工程
520802
孙兰
女
18
网络工程
Cno
Cname
Ccredit
1
C程序设计
3
2
数据结构
4
3
数据库原理及应用
4
4
操作系统
4
SC表
Sno
Cno
Grade
410601
2
85
410601
3
88
410601
4
82
410602
3
75
410602
5
88
410603
3
90
410603
4
81
520801
3
88
(2)用SQL语句实现如下的查询。
①查询性别为女生的平均成绩。
②查询选修了课程号为3的所有学生的姓名。
③查询既选修了课程2又选修了课程3的学生姓名和学号。
④查询与“孙兰”在同一个系学习的学生。
(3)使用SQL语句创建student表基于姓名字段的索引,索引名为index_stu_name。
(4)使用SQL语句创建视图:
建立网络工程2班学生所选修的课程名称,视图名称为v_net_cname;并查询该视图。
(5)创建视图v_net_cname的同义词vnc并使用同义词进行查询。
(6)在学生表student中增加列sid,创建名称为seq_stu_id序列,序列的初值为1,增长值为1,最小值为1,最大值为9999,当向表student插入数据时,sid列的取值为序列seq_stu_id。
并向student表中插入一行数据(411605,'王强','男',20,'计算机科学与技术42',seq_stu_id.nextval)。
三、实验软硬件环境
1、多媒体计算机一台;
2、计算机上安装有Oracle11g数据库软件;
四、实验过程(实验步骤、记录、数据、分析)
1、打开进程,并以数据库管理员身份登陆:
(1)点击“开始”-“运行”,输入lsnrctlstart以启动监听程序服务,如下:
C:
\DocumentsandSettings\zhang>lsnrctlstart
LSNRCTLfor32-bitWindows:
Version11.1.0.6.0-Productionon18-4月-201416:
3
2:
38
Copyright(c)1991,2007,Oracle.Allrightsreserved.
启动tnslsnr:
请稍候...
TNSLSNRfor32-bitWindows:
Version11.1.0.6.0-Production
系统参数文件为d:
\app\zhang\product\11.1.0\db_1\network\admin\listener.ora
写入d:
\app\zhang\diag\tnslsnr\A34\listener\alert\log.xml的日志信息
监听:
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
监听:
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=A34)(PORT=1521)))
正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
LISTENER的STATUS
------------------------
别名LISTENER
版本TNSLSNRfor32-bitWindows:
Version11.1.0.6.0-Produ
ction
启动日期18-4月-201416:
32:
41
正常运行时间0天0小时0分4秒
跟踪级别off
安全性ON:
LocalOSAuthentication
SNMPOFF
监听程序参数文件d:
\app\zhang\product\11.1.0\db_1\network\admin\listene
r.ora
监听程序日志文件d:
\app\zhang\diag\tnslsnr\A34\listener\alert\log.xml
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=A34)(PORT=1521)))
监听程序不支持服务
命令执行成功
(2)输入netstartoracleserviceorcl以启动实例服务,:
C:
\DocumentsandSettings\zhang>netstartoracleserviceorcl
OracleServiceORCL服务正在启动...............................
OracleServiceORCL服务已经启动成功。
(3)通过命令行连接到SQL*Plus:
C:
\DocumentsandSettings\zhang>sqlplussys/sysassysdba
SQL*Plus:
Release11.1.0.6.0-Productionon星期五4月1816:
38:
052014
Copyright(c)1982,2007,Oracle.Allrightsreserved.
连接到:
OracleDatabase11gEnterpriseEditionRelease11.1.0.6.0-Production
WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions
SQL>
2、使用SQL语句创建表:
①创建学生表student(Sno,Sname,Ssex,Sage,Sclass),定义Sno为主键,添加约束:
对列Ssex的取值为男和女,Sage的取值为18到24:
SQL>createtablestudent(
2Snonumber(20)primarykey,
3Snamevarchar2(8),
4Ssexchar
(2)check(Ssexin('男','女')),
5Sagenumber(4)check(Sagebetween18and24),
6Sclassvarchar2(20)
7*)
SQL>/
表已创建。
SQL>
②创建课程表course(Cno,Cname,Ccredit),定义Cno为主键。
SQL>createtablecourse(
2Cnonumber
(2)primarykey,
3Cnamevarchar2(16),
4Ccreditnumber
(2)
5)
6/
表已创建。
SQL>
③创建选修表SC(Sno,Cno,grade),Sno和cno为主键,Sno为外键,Cno为外键。
SQL>createtableSC(
2Snonumber(20),
3Cnonumber
(2),
4gradenumber(8),
5constraintSC_studentforeignkey(Sno)referencesstudent(Sno),
6constraintSC_courseforeignkey(Cno)referencescourse(Cno),
7constraintSC_primaryprimarykey(Sno,Cno)
8*)
SQL>/
表已创建。
SQL>
④使用insert语句向以上student表插入以下数据:
SQL>insertintostudent
2values
3*(410601,'李军','男',18,'计算机科学与技术')
SQL>/
已创建1行。
SQL>insertintostudent
2values
3*(410602,'王红','女',18,'计算机科学与技术')
SQL>/
已创建1行。
SQL>insertintostudent
2values
3*(410603,'赵平','女',19,'计算机科学与技术')
SQL>/
已创建1行。
SQL>insertintostudent
2values
3*(520801,'张强','男',19,'网络工程')
SQL>/
已创建1行。
SQL>insertintostudent
2values
3*(520802,'孙兰','女',18,'网络工程')
SQL>/
已创建1行。
SQL>
使用insert语句向以上course表插入以下数据:
SQL>insertintocourse
values
(1,'C程序设计',3)
SQL>/
已创建1行。
SQL>
SQL>insertintocourse
values
(2,'数据结构',4)
SQL>/
已创建1行。
SQL>
SQL>insertintocourse
values
(3,'数据库原理及应用',4)
SQL>/
已创建1行。
SQL>
SQL>insertintocourse
values
(4,'操作系统',4)
SQL>/
已创建1行。
SQL>
使用insert语句向以上SC表插入以下数据:
SQL>insertintoSC
values
(410601,2,85)
SQL>/
已创建1行。
SQL>
SQL>insertintoSC
values
(410601,3,88)
SQL>/
已创建1行。
SQL>
SQL>insertintoSC
values
(410601,4,82)
SQL>/
已创建1行。
SQL>
SQL>insertintoSC
values
(410602,3,75)
SQL>/
已创建1行。
SQL>
SQL>insertintoSC
2values
3*(410602,5,88)
SQL>/
insertintoSC
*
第1行出现错误:
ORA-02291:
违反完整约束条件(SYS.SC_COURSE)-未找到父项关键字
SQL>insertintoSC
values
(410603,3,90)
SQL>/
已创建1行。
SQL>
SQL>insertintoSC
values
(410603,4,81)
SQL>/
已创建1行。
SQL>
SQL>insertintoSC
values
(520801,3,88)
SQL>/
已创建1行。
SQL>
(4)用SQL语句实现如下的查询。
①查询性别为女生的平均成绩。
SQL>SELECTavg(grade)FROMSC
2WHERESnoIN
3(SELECTSnoFROMstudent
4WHERESsex='女')
5/
AVG(GRADE)
----------
82
SQL>
②查询选修了课程号为3的所有学生的姓名。
SQL>SELECTSnameFROMstudent
2WHERESnoIN
3(SELECTSnoFROMSC
4WHERECno=3)
5/
SNAME
--------
李军
王红
赵平
张强
SQL>
③查询既选修了课程2又选修了课程3的学生姓名和学号。
SQL>SELECTSno,SnameFROMstudent
2WHERESnoIN
3(SELECTSnoFROMSC
4WHERECno=2)
5andSnoIN
6(SELECTSnoFROMSC
7WHERECno=3)
8/
SNOSNAME
------------------
410601李军
SQL>
④查询与“孙兰”在同一个系学习的学生。
SQL>select*fromstudent
2whereSclassin
3(
4selectSclassfromstudent
5whereSname='孙兰'
6)
7/
SNOSNAMESSSAGESCLASS
--------------------------------------------------
520801张强男19网络工程
520802孙兰女18网络工程
SQL>
(5)使用SQL语句创建student表基于姓名字段的索引,索引名为index_stu_name。
SQL>createindexindex_stu_name
2*onstudent(Sname)
SQL>/
索引已创建。
(6)使用SQL语句创建视图:
建立网络工程2班学生所选修的课程名称,视图名称为v_net_cname;并查询该视图。
①创建视图:
SQL>createviewv_net_cname
2as
3selectCnamefromcourse
4whereCnoin(
5selectCnofromSC
6whereSnoin(
7selectSnofromstudent
8whereSclass='网络工程'
9)
10*)
11/
视图已创建。
②查询视图:
SQL>select*fromv_net_cname;
CNAME
----------------
数据库原理及应用
SQL>
(7)创建视图v_net_cname的同义词vnc并使用同义词进行查询。
①创建同义词:
SQL>createpublicsynonymvncforv_net_cname;
同义词已创建。
SQL>
②使用同义词进行查询:
SQL>select*fromvnc;
CNAME
----------------
数据库原理及应用
SQL>
(8)在学生表student中增加列sid,创建名称为seq_stu_id序列,序列的初值为1,增长值为1,最小值为1,最大值为9999,当向表student插入数据时,sid列的取值为序列seq_stu_id。
并向student表中插入一行数据(411605,'王强','男',20,'计算机科学与技术42',seq_stu_id.nextval)。
①在学生表student中增加列sid:
SQL>altertablestudentaddsidnumber(5)
SQL>/
表已更改。
SQL>
②创建名称为seq_stu_id序列:
SQL>createsequenceseq_stu_id
2startwith1
3incrementby1
4minvalue1
5maxvalue9999
6nocache
7nocycle
8*order
SQL>/
序列已创建。
SQL>
③并向student表中插入一行数据:
SQL>insertintostudent
2values
3(411605,'王强','男',20,'计算机科学与技术42',seq_stu_id.nextval)
4/
已创建1行。
SQL>
五、测试/调试及实验结果分析
1、遇到的问题:
(1)当输入lsnrctlstart以启动进程监听时,显示以下信息:
C:
\Users\Administrator>lsnrctlstart
LSNRCTLfor32-bitWindows:
Version11.1.0.6.0-Productionon20-3月-201217:
2
5:
05
Copyright(c)1991,2007,Oracle.Allrightsreserved.
启动tnslsnr:
请稍候...
TNSLSNRfor32-bitWindows:
Version11.1.0.6.0-Production
系统参数文件为D:
\app\Administrator\product\11.1.0\db_1\network\admin\listener.or
a
写入d:
\app\administrator\diag\tnslsnr\Chenk2007\listener\alert\log.xml的日志信息
监听:
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
监听该对象时出错:
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=202.192.134.11)(PORT
=1521)))
TNS-12545:
因目标主机或对象不存在,连接失败
TNS-12560:
TNS:
协议适配器错误
TNS-00515:
因目标主机或对象不存在,连接失败
32-bitWindowsError:
49:
Unknownerror
监听程序未能启动。
请参阅上面的错误消息...
因此,打开“配置和移植工具”中的“NetManager”把“主机名”改为本机的主机名“Chenk2007”,这样即可解决本问题。
六、实验结论与体会
总的来说,通过本次实验,我学会了与Oracle进行交互的工具SQL*Plus的一些相关功能和操作,同时还学会了
(1)创建表、视图、索引、序列等;
(2)查询表、视图、索引、序列等;
这些其实都是一些入门的、最基本的知识,在接下来的学习中我会更加努力,学会Oracle数据PL/SQL语言的更多知识。
2014年04月18日