Oracle实验指导书.docx
- 文档编号:10765111
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:31
- 大小:25.86KB
Oracle实验指导书.docx
《Oracle实验指导书.docx》由会员分享,可在线阅读,更多相关《Oracle实验指导书.docx(31页珍藏版)》请在冰豆网上搜索。
Oracle实验指导书
实验1熟悉Oracle环境
一、实验目的
1.练习Oracle10g登录和退出
2.学会相关Oracle简单操作
3.了解Oracle的基本体系结构
二、实验内容
1.Oracle10g登录操作
(1)启动SQL*Plus:
单击“开始”“程序”选择Oracle—oracle10g选择“应用程序开发”选项单击SQL*Plus,启动SQL之后,将会出现下图所示的屏幕。
填写相应的详细资料。
按Tab键转到下一个选项。
安装Oracle时创建的默认用户名、密码和主机字符串。
如:
登录后会出现下面的提示信息:
SQL>
(2)退出SQL*PLUS
SQL>exit
则退回到Windows桌面。
(3)创建表结构:
Createtable
创建部门登记表dept和雇员登记表emp的结构
SQL>Createtabledept
(deptnonumber
(2)notnull,
dnamechar(14),
locchar(13));
SQL>Createtableemp
(empnonumber(4)notnull,
enamechar(9),
jobchar(10),
mgrnumber(4),
Hiredatedate,
salnumber(7,2),
commnumber(7,2),
deptnonumber
(2)notnull);
(4)显示表结构
显示部门登记表dept和雇员登记表emp的结构
SQL>descdept
SQL>descemp
(5)向表中插入记录
--向部门登记表dept中插入一条记录
SQL>insertintodept
Values(60,‘Computer’,‘Beijing’);
SQL>select*fromdept;
--向部门登记表dept中连续插入多条记录
SQL>insertintodept(deptno,dname,loc)
Values(&deptno,&dname,&loc);
2.简单查询语句
(1)无条件简单查询:
--查表中所有记录
SQL>selectDname,Deptno
2Fromdept;
--对查询结果进行计算和统计
SQL>selectcount(*)ALL_EMP,sum(sal)ALL_Sal
2Fromemp;
(2)有条件简单查询:
查表中部分记录
--查在20号部门工作的雇员姓名和工资
SQL>selectename,sal,deptno
2Fromemp
3wheredeptno=20;
--查找工种是职员或分析员的雇员姓名和工种
SQL>selectename,job
2Fromemp
3wherejobIN(‘Clerk’,’Analyst’);
--查找以“S”开头的雇员姓名和所在部门
SQL>selectename,deptno
2Fromemp
3whereenamelike‘S%’;
--按工资升序排列20号部门的雇员
SQL>selectename,sal,deptno
2Fromemp
3wheredeptno=20
4orderbysalasc;
--查所有部门中工资大于2800美元的雇员
SQL>selectename,sal
fromAccount
wheresal>2800
union
selectename,sal
fromResearch
Wheresal>2800
Union
Selectename,sal
Fromsales
Wheresal>2800;
3.修改个人登录密码
(1)修改密码的SQL语句
SQL>ALTERUSER
(2)重新登陆
SQL>Conn
WhenyoustartSQL*Plus,youcanenteryourusernameandpassword,separatedbyaslash(/),followingthecommandSQLPLUS.Forexample,youcanenter
SQLPLUSHR/your_password
AndpressReturn.
4.SQL*Plus显示环境格式设置
SQL>SETECHOOFF
SETVERIFYOFF
SETLINESIZE80
SETPAGESIZE90
COLUMNENAMEFORMATA30
COLUMNDNAMEFORMATA33
COLUMNSALARYFORMAT9,999
5.保存SQL*Plus脚本执行过程
SQL>spoolI:
\qqq.txt
SQL>…………………;
SQL>…………………;
SQL>spooloff
6.直接执行SQL脚本文件
在硬盘某个目录下I:
\whoami.sql
SQL>@whoami
7.查看数据库对象,说明数据库与表空间、段、盘区、数据块、方案的关系,以及数据库与表、索引、视图等的关系。
并在图形工具下练习创建它们的基本操作。
三.实验报告要求
本实验结束后,要求提交实验报告,实验报告内容应包括实验题目、实验目的、实验内容、简单的实验步骤以及实验小结。
实验2创建和使用表
一、实验目的
1.掌握创建表的方法。
2.掌握修改、删除和查询表的方法。
二.实验内容
1.创建和使用表
创建一个名为STUDENT的表,该表有ID(学号)、NAME(姓名)、SEX(性别)、COURSE(课程)、SCORE(成绩)字段,并保存在USER表空间。
并通过INSERT、SELECT、UPDATE、DELETE语句对表进行操作。
2.创建一个临时表
创建一个名为TEMP的临时表,该表有ID(学号)、NAME(姓名)、SEX(性别)、COURSE(课程)、SCORE(成绩)字段,并保存在USER表空间中。
并通过INSERT、SELECT、UPDATE、DELETE语句对表进行操作。
3.修改表
(1)在SQL*PLUS中修改STUDENTS表,为表添加一个新的列。
(2)在SQL*PLUS中执行ALTERTABLE语句修改STUDENTS表的COURSE列的类型。
(3)在SQL*PLUS中执行ALTERTABLE语句在STUDENTS表新增加一个AGE列,列的类型为NUMBER
(2)。
(4)在列ID(学号)上为表创建主键。
(5)在列SCORE(成绩)上为表创建check约束。
4.管理表
(1)为STUDENT表新插入5行数据;
(2)更新STUDENT表中SCORE(成绩)小于60分的数据;
(3)将STUDENT表结构和数据复制到stu1表,然后删除表STU中的所有记录。
(4)在SQL*PLUS中执行TRUNCATETABLE语句删除STUDENTS表中的所有记录。
5.思考题。
普通表和临时表有何区别?
三.实验报告要求
本实验结束后,要求提交实验报告,实验报告内容应包括实验题目、实验目的、实验内容、简单的实验步骤以及实验小结。
实验3索引和视图
一、实验目的
1.掌握创建视图的方法。
2.掌握创建索引的方法。
3.掌握修改、分析、删除和查询视图、索引的方法。
二.实验内容
1视图操作。
(1)为20号部门的雇员创建一个视图,包括姓名,工资,部门号。
Createviewemp_view(name,salary,no)
As
Selectename,sal,deptno
Fromemp
wheredeptno=20;
(2)建立一个视图myV_emp,视图包括myEMP表的empno、ename、sal,并按sal从大到小排列。
createviewmyV_EMP
as
selectempno,ename,salfromemp;
2.创建索引
对表STUDENTS中的NAME字段建立一个B树索引;对表STUDENTS中的SEX字段建立一个位图索引。
(1)在SQL*PLUS中执行CREATEUNIQUEINDEX语句对表STUDENTS中的NAME字段建立一个B数索引。
(2)在SQL*PLUS中执行CREATEBITMAPINDEX语句对表STUDENTS中的SEX字段建立一个位图索引。
3.分析索引
对NAME_INDEX索引进行分析,查询INDEX_STATSW数据字典统计索引使用情况。
(1)在SQL*PLUS中执行ANALYZEINDEX分析索引语句对NAME_INDEX索引进行分析。
(2)在SQL*PLUS对INDEX_STATS数据字典视图进行查询获得NAME_INDEX索引的统计信息。
4.查询ORACLE数据库的模式对象信息
用SCOTT帐户登录SQL*PLUS,通过用户视图USER_TABLES、USER_VIEWS、USER_INDEXS、USER_OBJECTS、USER_TRIGGERS、USER_SEQUENCES等模式对象信息。
5.视图主要分几类,各有什么特点?
索引创建完后什么时候会用到?
三.实验报告要求
本实验结束后,要求提交实验报告,实验报告内容应包括实验题目、实验目的、实验内容、简单的实验步骤以及实验小结。
实验4Oracle管理安全性
一、实验目的
1. 练习在ORACLESQL*PLUS下创建用户,并用新创建的用户在客户端登录。
2.学会对ORACLE数据表进行用户授权,取消权限等相关数据控制命令。
二、实验内容
SERVER端创建用户,在服务器端进入SQL*PLUS,用system登录,主机字符串要输入全局数据库名ORCL,登录成功后出现如图1
图1
1.创建用户user1,user2
(提示:
createuseruser1identifiedbypass1;)
2.分别为user1,user2授予相应的权限
(提示:
grantconnect,resourcetouser1;)
3.退出SQL-plus
(quit)
4.在CLIENT端进入SQL-PLUS,分别试用user1,user2登录试验。
5.练习修改口令:
alteruserusernameidentifiedbypassword;
6.用超级用户system在CLIENT端登录,并建立两个普通用户如U1,U2分配权限。
提示:
createuseru1identifiedbypass1;(默认建在SYSTEM表空间下)
grantconnect,resourcetou1;
7.显示当前连接用户:
showuser;
8.查看系统拥有哪些用户
select*fromall_users;
9.将insert,select,delete权限授于u1用户,
将select权限授于u2用户
然后再以分别以U1,U2的身份登录SQL-PLUS,检查:
U1是否具有insert,select,delete权限
U2是否具有insert,select,delete权限
然后再以system身份登录
10.去掉U1的delete权限
11.将insert的授于其它用户的权限授予U1
再以U1身份登录,检查:
12.U1是否还具有delete权限
13.以U1的身份将insert权授予U2
再以U2身份登录,检查:
U2是否具有insert授予权
U2是否可以将SELECT权限授予U1
三.实验报告要求
本实验结束后,要求提交实验报告,实验报告内容应包括实验题目、实验目的、实验内容、简单的实验步骤以及实验小结。
实验5查询语句和函数
一、实验目的
1、掌握SQL语言中常用查询语句的功能和使用方法
2、掌握SQL语言中分组查询命令的功能及其使用方法
3、掌握SQL语言中连接查询命令的功能及其使用方法
4、掌握SQL语言中子查询命令的功能及其使用方法
5、掌握子查询命令中的函数的使用方法
二、实验内容
1、分组查询命令的使用
(1)不带条件的分组查询:
每组只返回一条记录。
--计算每个部门的工资总和
SQL>selectdeptno,sum(sal)
2Fromemp
3Groupbydeptno;
--查每部门每个工种的雇员数。
SQL>selectdeptno,job,count(*)
2Fromemp
3Groupbydeptno,job;
(2)带条件的分组查询
--部门工资总和超过$9000的部门,并按工资总和升序排列。
SQL>selectdeptno,sum(sal)
2Fromemp
3Groupbydeptno
4Havingsum(sal)>9000
5Orderbysum(sal);
3、连接查询命令的使用
(1)无条件连接
SQL>SelectDept.Deptno,Dname,Empno,Ename,Sal
2FromDept,Emp;
(2)等值连接:
参与连接的表在公共列上有相同值。
--查看工资高于¥3000的雇员及所在部门情况。
SQL>Selectename,sal,emp.deptno,loc,dname
2Fromemp,dept
3WhereEmp.deptno=Dept.deptnoandsal>3000;
(3)外连接:
可避免连接时丢失信息
SQL>Selectename,dept.deptno,loc
Fromemp,dept
Whereemp.deptno=dept.deptno;
SQL>Selectename,dept.deptno,loc
Fromemp,dept
Whereemp.deptno(+)=dept.deptno;
SQL>Selectename,dept.deptno,loc
Fromemp,dept
Wheredept.deptno=emp.deptno(+);
2、子查询命令的使用
(1)单行值子查询:
子查询返回一条纪录
--查询工资高于7698号雇员,并且工种与他相同的雇员情况。
SQL>selectename,sal,job,empno
Fromemp
Wheresal>(Selectsal
Fromemp
Whereempno=7698)
andjob=(Selectjob
Fromemp
Wherempno=7698);
--查询工资高于或等于20号部门工资额最高的雇员情况。
SQL>Selectename,sal,deptno
Fromemp
Wheresal>=(Selectmax(sal)
Fromemp
Wheredeptno=20);
(2)多行值子查询:
子查询返回一组纪录
--查工资在¥2000到¥2900之间的雇员所在部门的雇员。
SQL>Selectename,sal,job,deptno
Fromemp
WheredeptnoIN(Selectdeptno
Fromemp
Wheresalbetween2000and2900);
--查工资在¥2000到¥2900之间的雇员所在部门的雇员。
SQL>Selectename,sal,job,deptno
Fromemp
Wheredeptno=ANY(Selectdeptno
Fromemp
Wheresalbetween2000and2900)
Orderbysaldesc;
(3)多列值子查询
--查询工资、奖金与20号部门雇员匹配(相同)的雇员情况。
SQL>Selectename,sal,comm,deptno
Fromemp
Where(NVL(comm,0),sal)IN(SelectNVL(comm,0),sal
Fromemp
Wheredeptno=20);
2、子查询命令中函数的使用
--将所有雇员的名字用大小写形式显示。
SQL>Selectempno,Upper(ename),Initcap(ename)
Fromemp;
--计算所有雇员的日工资(设一个月为25个工作日)。
SQL>Selectename,round(sal/25,0),round(sal/25,-1)
Fromemp;
--显示当前日期,dual是系统提供的一张空表。
SQL>Selectsysdate
Fromdual;
--显示当前日期。
SQL>Selectto_char(sysdate,’yyyy-mm-dd’)
Fromdual;
--分部门统计所有雇员的中收入。
SQL>Selectdeptno,sum(sal+comm),sum(sal+NVL(comm,0))
Fromemp
Groupbydeptno;
--根据输入值将雇员信息排序:
若输入1,则按ename排序;若输入2,则按SAL排序;
缺省时,按ename排序。
SQL>Select*
fromemp
orderbydecode(&ob,1,ename,2,sal,ename);
三.实验报告要求
本实验结束后,要求提交实验报告,实验报告内容应包括实验题目、实验目的、实验内容、简单的实验步骤以及实验小结。
实验6PL/SQL命令的使用
一、实验目的
1、了解SQL/PL块的基本结构与功能
2、掌握SQL/PL块中各种SQL命令的使用方法
3、掌握SQL/PL块中流程控制语句的使用方法
4、掌握SQL/PL块中游标的使用方法
5、掌握SQL/PL块中例外处理的使用方法
二、实验内容
1、SQL/PL块中查询命令的使用
--将7788号雇员的工资和奖金作为Smith的工资和奖金。
SQL>DECLARE
v_empnoemp.empno%TYPE:
=7788;
v_enameemp.ename%TYPE:
=‘Smith’;
v_salemp.sal%TYPE;
v_commm%TYPE;
BEGIN
SELECTsal,commINTOv_sal,v_comm
FROMEMP
WHEREempno=v_empno;
updateemp
setsal=v_sal,comm=v_comm
whereename=v_ename;
commit;
END;
--查询SMITH的情况。
SQL>DECLARE
emp_recEMP%ROWTYPE;
v_enameEMP.ename%TYPE:
='SMITH';
BEGIN
SELECT*INTOemp_rec
FROMEMP
WHEREENAME=v_ename;
------------------
END;
2、SQL/PL块中数据操纵命令的使用
--向EMP表插入一新雇员。
SQL>DECLARE
v_deptnodept.deptno%TYPEnotnull:
=50;
v_dnamedept.dname%TYPE:
=‘Computer’;
v_locdept.loc%TYPE:
=‘Beijing’;
BEGIN
insertintodept(deptno,dname,loc)
values(v_deptno,v_dname,v_loc);
commitwork;
END;
--修改7788号雇员的工资。
SQL>DECLARE
v_empnoemp.empno%TYPE:
=7788;
v_addsalemp.sal%TYPE;
BEGIN
v_addsal:
=1000;
UPDATEEMP
SETsal=sal+v_addsal
WHEREempno=v_empno;
COMMIT;
END;
--从EMP表中删除7788号雇员。
SQL>DECLARE
BEGIN
DELETEFROMEMP
WHEREempno=7788;
COMMIT;
END;
3、SQL/PL块中流程控制语句的使用
(1)条件控制语句的使用
将EMP表中名为SMITH的雇员的工资进行修改,若原工资大于$2000,则加$500,否则加$1000。
SQL>DECLARE
v_enameemp.ename%TYPE:
='SMITH';
v_addsalemp.sal%TYPE;
v_salemp.sal%TYPE;
BEGIN
SELECTsalINTOv_sal
FROMEMP
WHEREENAME=v_ename;
IFv_sal>20OOTHEN
v_addsal:
=500;
ELSE
v_addsal:
=1000;
ENDIF;
UPDATEEMP
SETsall=sal+v_addsal
WHEREENAME=v_ename;
commit;
END;
(2)循环控制语句的使用
---给10号部门增加新雇员,只确定雇员号,其它信息忽略。
SQL>DECLARE
v_empnoemp.empno%TYPE:
=8000;
BEGIN
LOOP
INSERTINTOemp(deptno,empno)
VALUES(10,v_empno);
v_empno:
=v_empno+l00;
EXITWHENv_empno>=9000;
ENDLOOP;
END;
4、SQL/PL块中游标的使用
--取出10号部门雇员姓名和工资
SQL>DECLARE
v_deptnoemp.deptno%TYPE;
v_enameemp.ename%TYPE;
v_salemp.sal%TYPE;
CURSORC1IS
SELECTename,sal
FROMEMP
WHEREDEPTNO=v_deptno;
BEGIN
v_deptno:
=10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 实验指导书 实验 指导书