分布式数据库管理与实现 Oracle数据库文档格式.docx
- 文档编号:16545576
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:16
- 大小:75.45KB
分布式数据库管理与实现 Oracle数据库文档格式.docx
《分布式数据库管理与实现 Oracle数据库文档格式.docx》由会员分享,可在线阅读,更多相关《分布式数据库管理与实现 Oracle数据库文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
实验名称:
实验一oracle基本操作
实验时间:
2011.9.27
实验地点:
S203
实验目的:
1.熟练掌握SQL*Plus的使用;
2.熟悉oracle网络连接配置;
3.掌握系统与对象权限管理;
4.掌握DBAC创建数据库和表空间的维护;
实验步骤:
使用sys登录SQL*Plus,查看系统中各表空间的状态,使用数据字典DBA_TABLESPACES,写出相关的命令。
scott/tiger进行登录
connsys/managerassysdba进行管理员登录
Selectusername,privilege,admin_optionfromuser_sys_privs;
7.使用scott登录SQL*Plus,查看该用户下有哪些表,并查看dept表和emp表结构以及表中数据;
使用hr连接SQL*Plus,查看该用户下有哪些表,并查看jobs表和employees表结构以及表中的数据,写出完成以上操作的各个命令。
连接scott/tiger用户
查询dept和emp表结果如下面两张图片显示:
1.emp表显示结果:
2、dept表的结果:
3、连接hr用户之后输入代码:
Select*fromtab;
显示结果如下:
4.查询命令代码:
select*fromjobs;
5.查询命令代码:
select*fromemployees;
10.使用scott用户登录em,写出操作步骤。
使用SYS登录在角色列表里去修改添加Select_catalog_role
账号scott密码tiger权限普通用户。
12.将创建表空间和创建数据库链接的系统特权授予scott用户,以scott用户登录查看获得的系统特权,收回scott用户获得的创建表空间和创建数据库链接系统特权,写出以上操作的命令。
connsys/managerassysdba
Grantcreatetablespacetoscott;
Grantcreatedatabaselinktoscott;
13.将hr用户下employees表的first_name和last_name两列的更新权限授予给scott用户,并允许该用户具有向外再授权的权利。
connhr/hr
SQL>
Grantupdate(first_name,last_name)onemployeestoscott;
14.在SQL*Plus中,锁定scott用户,并修改该用户的密码为tiger,然后解锁该用户。
写出相应的命令。
alteruserscottaccountlock;
Alteruserscottaccountunlock;
Alteruserscottidentifiedbytiger;
17.创建经理用户manager,指定该用户的数据表空间为datats,临时表空间为tempts。
授权该用户可以查看scott用户下emp表中的记录。
写出以上操作的命令。
Dropusermanagercascade;
Createusermanageridentifiedbymanager
Defaulttablespacedatats
Temporarytablespacetempts;
Grantconnecttomanager;
Connmanager/manager
Grantselectonemptomanager;
必须在有前提条件的情况下才能执行处正确的结果结果,错误信息是因为没有给manager用户建立相应的数据表空间datats和临时表tempts。
实验总结:
通过今天的实验我学习了对oracle网络连接配置,系统与对象权限的管理,以DBA身份使用SQL*Plus创建数据库还有对表空间的维护。
实验二oracle中的表对象
2011.10.11
1.熟练掌握oracle中常用的数据类型;
2.熟悉表的存储参数、表结构维护和数据完整性约束维护;
3.熟悉按索引组织的表、簇表和外部表;
4.掌握分区表、对象表和嵌套表;
1.创建用户stu01,口令为pwd,该用户使用USERS作为数据表空间,使用TEMP作为临时表空间。
Createuserstu01identifiedbypwd
Defaulttablespaceusers
Temporarytablespacetemp;
2.授予用户stu01相关的操作权限,保证该用户可以创建表对象。
Grantcreatesession,
Createtable,
Createdatabaselinktostu01;
4.使用stu01用户,在SQL*Plus中,创建student表,要包含学号,姓名,性别,年龄和班级,要求学号为主键,姓名唯一,性别取值为男或女,年龄在16到22之间,班级非空。
要求以上约束写成表级完整性约束。
写出相关的SQL命令。
createtablestudent(
Snovarchar2(10)primarykey,
Namevarchar(20)notnullunique,
Sexvarchar2
(2)check(sexin(‘男’,’女’)),
Agenumber
(2)check(agebetween16and20),
Classvarchar2
(2)notnull);
7.使用sys用户连接SQL*Plus,创建4个表空间,分别为ts1、ts2、ts3和ts4,要求数据文件的大小为2MB,并可重用。
Createtablespacets1,ts2,ts3,ts4
Datafile'
%oracle_home%database\ts1.dbf'
size2Mreuse;
%oracle_home%database\ts2.dbf'
size2Mreuse;
%oracle_home%database\ts3.dbf'
size2Mreuse;
%oracle_home%database\ts4.dbf'
8.使用scott用户连接SQL*Plus,观察该用户下的emp表,试根据该表创建范围分区表,将各个分区分别放到上题所创建的表空间中,然后将emp表中数据插入到新建的范围分区表中,查看各个分区的数据情况,看是否实现的范围分区,写出相关的SQL命令,并仔细体会范围分区的用途。
connscott/tiger
Droptablepart_emp;
Createtablepart_emp
(Empnonumber(4)notnull,
Enamevarchar2(10),
Jobvarchar(3),
Mgrnumber(4),
Hiredatedate,
Salnumber(7,2),
CommNumber(7,2),
Deptnonumber(7))
Partitionbyrange(sal)
(
Partitionsal_1000valueslessthan(1000)tablespaceusers,
Partitionsal_2000valueslessthan(2000)tablespaceusers,
Partitionsal_3000valueslessthan(3000)tablespaceusers,
Partitionsal_4000valueslessthan(4000)tablespaceusers,
Partitionsal_maxvalueslessthan(maxvalue)tablespaceusers);
Insertintopart_empselect*fromemp;
Commit;
10.使用hr用户连接SQL*Plus,查看该用户下所有的表,并观察各表的表结构,试创建一个列表分区表,,并插入相关记录进行验证,写出相关的SQL命令。
Connhr/hrpwb@orcl
Select*fromtab;
DPOPTABLEsales_records;
Createtablesales_records(
Empnonumber(4),
Part_novarchar2(12),
Ptynumber(7,3),
Unit_pricenumber(9,2),
Total_pricenumber(10,2),
Locvarchar2(12))
Partitionbylist(loc)
(partitionsales_records_p1values(‘东南’,’华东’)tablespacets1,
partitionsales_records_p2values(‘华南’,’中南’)tablespacets2,
partitionsales_records_p3values(‘西南’,’西北’)tablespacets3,
partitionsales_records_p4values(‘华北’,’东北’)tablespacets4);
INSERTINTOsales_records
VALUES(1001,’080091’,1,3500,3500,’华南’);
COMMIT;
经过今天的实验我复习了数据库中常用的数据类型,数据完整性约束维护,并熟悉了新学的索引组织的表、簇表、外部表、分区表、对象表和嵌套表。
实验三oracle中的各类对象及支持的SQL
2011.10.21
1.熟练掌握各种表的管理操作;
2.掌握索引与视图;
3.熟悉其它常用方案对象;
4.熟练掌握Oracle支持的SQL;
1.创建一个图书对象类型,要求包括书名、作者和摘要属性;
基于该图书对象类型创建参考书目表类型;
创建课程参考嵌套表,要求包括专业、课程名和参考书目;
向该嵌套表中插入三行记录。
写出相关的SQL语句命令。
CONNscott/tiger@orcl
DROPTYPEbook_typFORCE;
CREATETYPEbook_typASOBJECT(
nameVARCHAR2(25),
writerVARCHAR2(25),
sxVARCHAR2(25));
DROPTYPEbook_tab_typFORCE;
CREATETYPEbool_tab_typASTABLEOFbook_typ;
DROPTABLEkc_infoCASEADECONSTRAINTS;
CREATETABLEkc_info(
zyVARCHAR2(25),
kcVARCHAR2(25),
cbookVARCHAR2(25),
bookbook_tab_typ)
NESTEDTABLEbookSTOREASbook_tab_typ;
INSERTINTOkc_infoVALUES('
软件'
,'
数据'
高数'
,book_tab_typ());
INSERTINTOTABLE(SELECTh.bookFORMkc_infoh
Whereb.sx='
)VALUES('
);
软'
数'
高'
软件工程'
数据仓库'
高等数学'
3.修改stu表,要求把姓名列宽度在原有基础上加大4个字符,向表中增加一个性别列,默认值为“男”;
查看表结构;
删除性别列;
将stu表重命名为student,将编号列重命名为学号,从数据字典TAB中查看表名的变化,然后再查看表结构。
写出相关的语句命令。
Altertablestumodify(enamevarchar2(3))
Altertablestuadd(sexvarchar2
(2)default‘男’)
Select *from emp;
Alter table drop(sex)
Rename stutostudent;
altertablesturenamecolumnpidtosno;
Select * from tab ;
Select * from student ;
6.使用scott用户连接SQL*Plus,观察该用户下的emp表,为该表建立一个视图,要求只显示30好部门的雇员和他们的年收入。
createorreplaceviewv_emp_30
Asselectename,(sal+nvl(comm,0))*12annual_incomefromemp
Wheredeptno=30;
查询emp表中,前五行记录的雇员名、工资、佣金和年收入。
写出查询语句。
selectename,sal,comm,(sai+nvl(comm,0))*12fromempwhererownum<
6;
11.查询emp表中,平均工资超过2000的部门及他们的平均工资。
selectdeptnosal(avg)fromempgroupbydeptno
Havingavg(sal)>
2000;
12.熟悉emp表和dept表,查询工资高于2300的雇员及其所在部门。
selectd.dname,d.deptno,e.sal,e.enamefromempe,deptdwheree.sal>
2300ande.deptno=d.deptno;
13.查询工资高于他所在部门的平均工资的雇员信息。
select*fromempwheresal>
(selectavg(sal)fromemp);
14.查询emp表中各部门各职位的工资总额进行从高到低排序,要求显示dept、job、工资总额和次序。
selectjob(sal+nvl(comm.,0))*12incomefromemporderbysal;
15.查询emp表中工资最高的6个人,要求从高到低显示。
selectse1.*,rownumfrom(selectname,salaryfromscott.emporderbysalarydesc)se1whererownum<
=5orderbydesc;
在今天的实验中运用Oracle支持的SQL进行了简单的查询,并进一步学习了索引和视图的创建和使用,以及其它常用方案对象。
实验四PL/SQL和数据导入/导出
2011.10.28
1.熟练掌握PL/SQL基本语法规则;
2.掌握替换变量、绑定变量和复合数据类型;
3.熟悉PL/SQL的流程控制语句;
4.掌握游标、例外、存储过程、函数、包和数据库触发器;
5.熟悉大对象类型LOB和虚拟专用数据库;
1.使用PL/SQL的替换变量和绑定变量,输出显示emp表中empno为7788号雇员的sal的值。
SETserveroutputON
DEFINEp_empno=7788
VARIABLEg_salaryNUMBER
SETVERIFYON
BEGIN
Selectsal
INTO:
g_salary
FROMemp
WHEREempno='
&
p_empno'
;
DBMS_OUTPUT.PUT_LINE('
工资值已取出至绑定变量g_salary'
END;
2.使用%TYPE定义变量,输出显示empno为7934号雇员的job值。
DECLARE
v_enoemp.empno%TYPE;
v_strVARCHAR2(60);
v_str1v_str%TYPE;
SELECTempno,jobINTOv_eno,v_str
WHEREempno=7934;
v_str1:
=v_str;
DBMS_OUTPUT.PUT_LINE(v_eno||'
isa'
||v_str1);
4.创建yg表,包含no、name、job和sal四列,使用游标将emp表中sal大于2000的雇员的empno、ename、job和sal信息插入到yg表中。
CONNhr/hrpwb@orcl
DROPTABLEyg;
createTABLEyg(
noNUMBERPRIMARYKEY,
nameVARCHAR2(25)notnull,
jobVARCHAR2(25),
salNUMBER);
CURSOREmp_Cur(p_empsalNUMBER)IS
SELECTnoempno,nameename,jobJOB,salSAL
Wheresal>
SAL;
emp_recEmp_Cur%ROWTYPE;
DELETEFROMyg;
COMMIT;
OPENEmp_Cur(2000);
LOOP
FETCHEmp_CurINTOemp_rec;
EXITWHENEmp_Cur%NOFOUND;
INSERTINTOyg
VALUES(emp_rec.no,emp_rec.name,emp_rec.job,emp_rec.sal);
ENDLOOP;
CLOSEEmp_Cur,
5.按年度基本工资额修改emp表中记录的sal字段值,如年基本工资低于36000,sal增加15%,否则sal增加10%。
CONNscott/tigger@orcl
v_salNUMBER(7,2);
CURSORemp_curISSELECT12*salFROMempFORUPDATE
OPENemp_cur;
FETCHemp_curINTOv_sal;
EXITWHENemp_cur%NOTFOUND;
IFv_sal<
36000THEN
UPDATEempSETsal=sal*1.15whereCURRENTOFemp_cur;
ELSE
UPDATEempSETsal=sal*1.1whereCURRENTOFemp_cur;
ENDIF;
CLOSEemp_cur;
7.使用存储过程查询emp表中指定empno的雇员ename、sal和comm。
CREATEORREPLACEPROCEDUREquery_emp
(p_noINemp.empno%TYPE,
p_nameOUTemp.ename%TYPE,
p_salOUTemp.sal%TYPE,
p_commOUTm%TYPE)
IS
SELECTename,sal,comm
INTOp_name,p_sal,p_comm
FORMemp
WHEREempno=p_no;
ENDquery_emp;
VARIABLEg_nameVARCHAR2(25)
VARIABLEg_salNUMBER
VARIABLEg_commNUMBER
EXECUTEquery_emp(7369,:
g_name,:
g_sal,:
g_comm)
9.建立可重载的更新emp表中雇员薪资的包。
根据给定的参数不同,执行不同的更新雇员薪资的操作。
SQL>
CREATEORREPLACEPACKAGEwage_package1
IS
PROCEDUREupdate_wages
(p_enoINemp.empno%TYPE,
p_salINemp.sal%TYPE,
p_commINm%TYPE);
PROCEDUREupdate_wages
P_salINemp.empsal%TYPE);
ENDwage_package1;
CREATEORREPLACEPACKAGEBODYwage_package1
p_commINm%TY
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布式数据库管理与实现 Oracle数据库 分布式 数据库 管理 实现 Oracle
