oracle实验报告.docx
《oracle实验报告.docx》由会员分享,可在线阅读,更多相关《oracle实验报告.docx(27页珍藏版)》请在冰豆网上搜索。
oracle实验报告
实验一初识ORACLE数据库
实验目的
(1)了解oracle11g的4个版本。
(2)掌握oracle11g的安装和卸载方法。
(3)掌握部分常用命令。
实验内容
(1)sqlplus登录(两种方法)
Acmdsqlplussys/orcl@orclassysdba
Sqlplussystem/orcl@orcl
Sqlplusscott/tiger@orcl
Bsqlplus工具
请输入用户名:
sysassysdba
或者System或者scott
Connsystem/orcl
showuser--显示当前连接用户
(2)Alteruserscottidentifiedbytigeraccountunlock;
Select*fromemp;
desc表名 显示表的结构
(3)spool
该命令可以将sqlplus屏幕上的内容输出到制定的文件中去
sql>spoold:
\b.sql
sql>select*fromemp;
spl>spooloff
说明:
spool命令将select*fromemp;的查询结果输出到指定位置的文件中然后spooloff类似于IO的开启/关闭
(4)&
可以替代变量,而该变量在执行时需要用户输入
sql>select*fromempwherejob='&job';
oracle会提示用户输入值
(5)显示和设置环境变量
可以用来控制输出的各种格式。
Ølinesize设置显示行的宽,默认是80个自己字符
sql>showlinesize
sql>setlinesize120
Øpagesize设置每页显示的行数默认是14,用法同linesize
Øsettimingon--默认为OFF,设置查询耗时,可用来估计SQL语句的执行时间,测试性能
Øsetlinesize1000--设置屏幕显示行宽,默认100
SQL>setautocommitON--设置是否自动提交,默认为OFF
SQL>setpauseon--默认为OFF,设置暂停,会使屏幕显示停止,等待按下ENTER键,再显示下一页
Øexit 退出SQL*PLUS
Øclearscreen 清空当前屏幕显示
实验数据记录及分析(或程序及运行结果)
评语:
日期:
2014年月日
实验二服务和OEM
实验目的
(1)掌握使用dos命令启动三个常用服务的方法
(2)掌握OEM的使用方法
(3)掌握使用DBCA创建数据库的方法
实验内容
(1)练习用dos命令启动和停止OracleDBConsoleorcl服务、OracleOraDb11g_home1TNSListener服务,并查看OracleDBConsoleorcl服务的状态。
a启动OracleDBConsoleorcl(Oracle数据库控制台服务)
Ø启动:
emctlstartdbconsole
Ø关闭:
emctlstopdbconsole
b启动OracleOraDb10g_home1TNSListener(监听器服务)
Ø启动:
lsnrctlstart
Ø关闭:
lsnrctlstop
Ø查看监听状态:
lsnrctlstatus
c启动OracleServiceORCL(Oracle数据库服务)
Ø启动:
netstartOracleServiceORCL
Ø停止:
netstopOracleServiceORCL
(2)启动OEM,以sys用户sysdba身份登录到数据库。
打开各个页面,查看其基本组成。
(3)使用DBCA创建数据库test。
实验数据记录及分析(或程序及运行结果)
评语:
日期:
2014年月日
实验三数据库的启动和关闭
实验目的
(1)掌握使用DBCA创建数据库的方法
(2)掌握启动和关闭数据库的命令
实验内容
(1)使用DBCA创建数据库test,并通过SQLPLUS登录到test数据库。
(两种方式:
A.setoracle_sid=test,然后再正常登录
B.sqlplussys/密码@testassysdba
登录以后可以通过showparameterdb_name查看数据库的名称)
(2)练习启动数据库的五种命令,并理解它们的使用含义。
练习使用TRANSACTIONAL、IMMEDIATE选项来关闭数据库。
(3)只有数据库处于open模式下scott用户才能连接上,nomount和mount模式不行。
试着设计一系列命令,验证这句话的正确性。
(4)对于startuprestrict,分别使用system用户和scott用户连接,将命令结
果和由此总结出来的结论记录到实验报告中,再使用alter命令结束限制访问状态,并将使用的命令按顺序记录到实验报告中。
实验数据记录及分析(或程序及运行结果)
(2)
setoracle_sid=test
Sqlplussys/orclassysdba
Showparameterdb_name
Shutdown
Startup
Shutdownimmediate
Startupnomount
Shutdownnormal
Startupopen
Shutdowntransactional
Startupforce
Shutdownabort
Startuprestrict
Shutdownnormal
Startupnomount
(3)
Shutdownnormal
Startupopen
connscott/tiger已连接
connsys/orclassysdba
shutdownimmediate
startupmount
connscott/tiger警告:
您不再连接到ORACLE。
connsys/orclassysdba
shutdownimmediate
startupnomount
connscott/tiger警告:
您不再连接到ORACLE。
connsys/orclassysdba
shutdownimmediate
(4)
startuprestrict
connsystem/orclassysdba
connscott/tiger警告:
您不再连接到ORACLE。
connsystem/orclassysdba已连接
showparameterdb_name
altersystemdisablerestrictedsession系统已更改。
connscott/tiger已连接。
结论:
在受限制的情况下,管理员用户能够连接上数据库,而一般用户不能连接到数据库。
用alter语句结束限制后,一般用户能够连接并能使用数据库。
评语:
日期:
2014年月日
实验四表和数据查询
实验目的
(1)掌握使用SQL语句手工创建表和使用OEM创建表的方法
(2)掌握用PL/SQL语句对数据库表进行插入、修改和删除数据的操作
(3)理解数据更新操作时要注意数据的完整性
(4)掌握SELECT语句的基本语法
实验内容
(1)启动SQL*Plus,根据上学期集中实践题目创建各自的表,注意必须创建约束。
(2)利用INSERTINTO命令向各表添加数据(建议至少向其中三个表添加数据,这三个表之间必须有外键关系)。
(3)根据各自创建的表,完成下列类似的查询(这些查询是基于学生表、课程表、成绩表给出来的题目,其他同学先根据以下查询改编各自题目,然后再给出查询答案)。
(a)SELECT基本使用
●查询每个同学的所有数据。
●查询学号为“061210”同学的姓名、性别和专业。
●查询每个女同学的姓名、性别,并将结果中各列的标题指定为姓名和性别;
●查询所有其姓名含有“林”的同学的专业、性别;
●查询课程编号“101”,且成绩在70~80之间的同学的学号;
(b)嵌套查询
●查询选修“101”课程的同学的学号、姓名和专业信息;
●查询没有选修“101”课程的同学的学号、姓名和专业信息;
●查询比通信工程专业的同学总学分都高的同学学号、姓名和专业信息;
●查询平均成绩高于80分的同学的学号、姓名、性别和专业;
(c)连接查询
●查询每个同学的学号、姓名、课程名和成绩信息;
●查询总学分大于48分的同学姓名和其选课情况(包括课程名称、学时和成绩);
(d)数据汇总
●查询计算机专业同学总学分的平均分;
●查询全体同学的总学分的最高分和最低分;
●查询计算机专业同学总人数;
●查询学号为“061101”同学的各门课程总分;
(e)GROUPBY
●查询每个专业的总人数;
●查询每位同学的平均分;
(f)ORDERBY
●查询每个同学的学号、姓名、课程名和成绩信息,并按成绩由低到高排列输出;
(g)利用PL/SQL的UPDATE命令修改表数据:
●在数据表XS中,将学号(XH)为“061101”同学的专业(ZYM)改为“通信工程”;
●在数据表XS_KC中,将成绩(CJ)小于70分的所有同学成绩置空;
●在数据表XS_KC中,将计算机系的学生成绩增加10分;
(h)利用PL/SQL的DELETE命令删除数据表XS_KC中所有男生的成绩记录。
实验数据记录及分析(或程序及运行结果)
(1)
启动:
setoracle_sid=orcl
Sqlplussys/orclassysdba
Connscott/tiger
创建表:
createtableBumen
(Bumenidchar(5)primarykey,
Bnamevarchar2(20)notnull
);
createtableTeacher
(Tidchar(5)primarykey,
Tnamevarchar2(20)notnull,
Tsexchar
(2)check(Tsex='女'orTsex='男'),
Temailvarchar2(30),
Tjopvarchar2(20)notnull,
Tzhichengvarchar2(20)notnull,
Bumenidchar(5)referencesBumen(Bumenid)notnull
);
createtableJC
(JCidchar(5)primarykey,
JCnamevarchar2(20)notnull,
JCcontentvarchar2(20),
JCtimevarchar2(15),
Tidchar(5)referencesTeacher(Tid)notnull
);
(2)
insertintoBumenvalues('20001','人事部');
insertintoBumenvalues('20002','财务处');
insertintoBumenvalues('20003','设备管理处');
insertintoBumenvalues('20004','教务处');
insertintoBumenvalues('20005','医务处');
insertintoTeachervalues('10001','蓝琪蕊','女','3512055451@','班主任','教授','20001');
insertintoTeachervalues('10002','韩欣宸','女','785210632@','辅导员','副教授','20002');
insertintoTeachervalues('10003','穆黎','女','6523018852@','辅导员','讲师','20003');
insertintoTeachervalues('10004','水一涵','女','3512055459@','班主任','教授','20004');
insertintoTeachervalues('10005','卓一航','男','4512055451@','班主任','教授','20001');
insertintoJCvalues('40001','降职','11年被降职处理','2011-02-03','10001');
insertintoJCvalues('40002','获奖','带学院获校级一等奖','2009-03-12','10002');
insertintoJCvalues('40003','获荣誉称号','辅导班获省级称号','2013-03-06','10003');
insertintoJCvalues('40004','降职','12年被降职处理','2013-04-06','10004');
insertintoJCvalues('40005','获荣誉称号','辅导班获省级称号','2012-03-06','10005');
(3)
A
查询每个教师的所有数据
Select*fromTeacher;
查询教师号为“10001”的姓名,性别和职称
SelectTname,Tsex,TzhichengfromTeacherwhereTid=10001;
查询每个女教师的姓名,性别,并将结果中各列的标题指定为姓名和性别
SelectTname姓名,Tsex性别fromTeacherwhereTsex='女';
查询所有其姓名含有“水”的教师的职称,性别
SelectTsex,TzhichengfromTeacherwhereTnamelike'%水%';
查询奖惩编号为“40001”且奖惩名字为降职的教师号
SelectTidfromJCwhereJCname='降职'andJCid=40001;
B
查询奖惩编号为“40002”教师的教师号,姓名和电子邮箱
SelectTid,Tsex,TemailfromTeacherwhereTidin(selectTidfromJCwhereJCid=40002);
查询奖惩编号不是“40002”教师的教师号,姓名和电子邮箱
SelectTid,Tsex,TemailfromTeacherwhereTidnotin(selectTidfromJCwhereJCid=40002);
查询比通信工程专业的同学总学分都高的同学学号、姓名和专业信息;
SelectXH,XM,ZYMfromXSwhereCJ>all(selectCJfromXS_KCwhereZYM=’通讯工程’)andXS_KC.XH=XS.XH);
查询平均成绩高于80分的同学的学号、姓名、性别和专业;
SelectXH,XM,XB,ZYMfromXS_KCwhereAVG(CJ)>80;
C
查询每名教师的教师号,姓名,部门号和部门名;
SelectTid,Tname,Teacher.Bumenid,BnamefromBumen,TeacherwhereBumen.Bumenid=Teacher.Bumenid;
查询总学分大于48分的同学姓名和其选课情况(包括课程名称、学时和成绩);
SelectXM,KCM,XS,CJfromXS,XS_KC,KCwhereZXF>48andXS.XH=XS_KC.XHandKC.KCH=XS_KC.KCH;
D
查询计算机专业同学总学分的平均分;
SelectAVG(ZXF)fromXSgroupbyZYM havingZYM=’计算机’;
查询全体老师的部门编号的最高和最低;
SelectMax(Bumenid),Min(Bumenid)fromTeacher;
查询’20001’部门的总人数
Selectcount(*)fromTeachergroupbyBumenidhavingBumenid=20001;
查询学号为“061101”同学的各门课程总分;
SelectSum(CJ)fromXS_KC,groupbyCJhavingXH=061101
E
查询每个部门的总人数;
SelectBumenid,count(*)fromTeachergroupbyBumenid;
查询每位同学的平均分;
SelectXH,Avg(CJ)fromXS_KCgroupbyXH,CJ;
F
查询每个老师的教师号,姓名,部门名字和奖惩号并按部门号由低到高排序;
SelectTeacher.Tid,Teacher.Tname,Bumen.Bname,JC.JCidfromBumen,JC,TeacherwhereBumen.Bumenid=Teacher.BumenidandTeacher.Tid=JC.TidorderbyTeacher.Bumenid;
G
在教师表中,将教师号为“10003”教师的职称改为教授;
UpdateTeachersetTzhicheng='教授'whereTid=10003;
在奖惩表中将教师号小于20003的奖惩内容置空
UpdateJCsetJCcontent=nullwhereTid<10003;
在奖惩表中,教师号为10002的奖惩号加5;
UpdateJCsetJCid=JCid+5whereTid=10002;
H
撤除奖惩表中女教师号为10002的记录;
DeletefromJCwhereTid=10002;
评语:
日期:
2014年月日
实验五视图和索引
实验目的
(1)了解视图的重要性
(2)掌握视图的建立
(3)掌握视图的使用
(4)掌握索引的使用方法
(5)掌握索引的概念及分类
实验内容
针对实验四中的各数据表,完成下列操作(这些题目是基于学生表、课程表、成绩表给出来的题目,其他同学先改编各自题目,然后再给出答案)。
(1)使用PL/SQL语句CREATEVIEW命令创建下列视图:
●视图view_female,包含学生信息表中所有女生信息;
●视图view_count,包含每个专业的名称和学生人数信息;
●视图view_sum,包含每个同学的学号、姓名、课程总成绩信息;
●视图view_score,包含每个同学的学号、姓名、课名,成绩信息;
(2)使用语句DROPVIEW命令删除视图view_female。
(3)在SQLPlus中,通过视图,执行下列操作:
●查询“计算机”专业的学生人数;
●查询学号“061101”同学的所选课程和课程成绩信息
●通过视图view_female,插入一个女同学的信息
●通过视图view_score,删除061101的信息,能否删除?
(4)使用PL/SQL命令CREATEINDEX建立以下两个索引:
●对课程信息表KC的KCM列创建索引idx_kcm;
●对学生表XS的XH、XM列创建唯一索引idx_xhxm;
(5)通过数据字典查看XS表的索引信息
实验数据记录及分析(或程序及运行结果)
(1)
视图view_female包含教师信息表所有女生信息
createviewview_female
as
select*fromTeacherwhereTsex='女';
视图view_count包含每个部门级部门的老师人数。
createviewview_count(Bumenid,Tcount)
as
selectBumenid,count(Bumenid)fromTeachergroupbyBumenid;
视图view_sum,包含教师号,姓名和部门号总和
createviewview_sum(Tid,Tname,Tsum)
as
selectTid,Tname,sum(Bumenid)
fromTeachergroupbyTid,Tname;
视图view_score包含每个教师的教师号,教师名,部门号和部门名称
createviewview_score(Tid,Tname,Bumenid,Bname)
as
selectTid,Tname,Bumen.Bumenid,Bumen.BnamefromTeacher,BumenwhereTeacher.Bumenid=Bumen.Bumenid;
(2)
使用Dropview命令删除视图view_female
Dropviewview_female;
(3)
查询Bumenid=20002的教师人数;
SelectTcountfromview_countwhereBumenid=20002;
查询教师号为10001的教师名及部门信息
Select*fromview_scorewhereTid=10001;
通过视图view_female,插入一个女教师的信息
insertintoview_femalevalues('10006','蓝琪','女','3512055452@',','教授','20006');
通过视图view_score,删除10001的信息能否删除?
不能,违反完整性约束条件
(4)
对奖惩表中的JCname列建立索引idx_JCname;
createindexidx_JCname
onJC(JCname);
对教师表Teacher的Tid,Tname列创建唯一索引idx_TT;
createuniqueindexidx_TT
onTeacher(Tid,Tname);
(5)
通过数据字典查看Teacher的索引信息
select*fromDBA_INDEXES;
select*fromeDBA_INDEXESwhereTABLENAME='TEACHER';
评语:
日期:
2014年月日
实验六PL/SQL编程
实验目的
(1)掌握变量的分类及使用
(2)掌握各种运算符的使用
(3)掌握各种控制语句的使用
(4)游标的使用
实验内容
(1)编写PL/SQL程序,分别计算1——100之间所有偶数和奇数之和。
(2)编写一个PL/SQL块,要求用户输入三个数,输出三个数中最大的数。
(3)编写一个PL/SQL块,输出所有学生的学号、姓名、性别,课程名,成绩。
(4)查询姓名为“王林”的学