数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx

上传人:b****7 文档编号:15278069 上传时间:2023-07-03 格式:DOCX 页数:17 大小:125.35KB
下载 相关 举报
数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx_第1页
第1页 / 共17页
数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx_第2页
第2页 / 共17页
数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx_第3页
第3页 / 共17页
数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx_第4页
第4页 / 共17页
数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx_第5页
第5页 / 共17页
数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx_第6页
第6页 / 共17页
数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx_第7页
第7页 / 共17页
数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx_第8页
第8页 / 共17页
数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx_第9页
第9页 / 共17页
数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx_第10页
第10页 / 共17页
数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx_第11页
第11页 / 共17页
数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx_第12页
第12页 / 共17页
数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx_第13页
第13页 / 共17页
数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx_第14页
第14页 / 共17页
数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx_第15页
第15页 / 共17页
数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx_第16页
第16页 / 共17页
数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx

《数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx》由会员分享,可在线阅读,更多相关《数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx(17页珍藏版)》请在冰点文库上搜索。

数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践.docx

数据库开发技术实验报告认识Oracle常用管理工具和DDLDML实践

福建工程学院信息科学与工程学院

实验报告

2013–2014学年第1学期任课老师:

蒋建辉

课程名称

数据库开发技术

班级

座号

姓名

实验题目

认识Oracle常用管理工具和DDL、DML实践

实验时间

实验开始日期:

2013.10.12

报告提交日期:

2013.10.16

实验目的、要求

实验目的:

1.认识并熟悉Oracle常用的管理工具:

SQLPlus、iSQLPlus、SQLDevelopter和EM。

2.掌握Oracle表的数据定义(DDL)语言,实现表的定义、删除与修改。

3.掌握创建Oracle表各种约束的方式和方法。

4.掌握利用数据字典视图查看各种有用信息的方法。

5.掌握插入、删除和更新表中数据的方法。

6.掌握控制事务的方法。

7.掌握WHERE子句中条件表达式的使用方法。

8.掌握访问替换变量的方法。

9.学会创建并执行一个脚本文件。

10.掌握CASE结构的使用方法。

实验设计内容及实现步骤

实验内容和要求

1.*登录到SQLPlus、iSQLPlus、SQLDevelopter和EM,认识并运用这些常用的Oracle管理工具。

2.DDL实践

(1)Oracle表的DDL实践。

设有如下关系表S_班名座号(如:

s_wg100103):

s_wg100103(SNO,SNAME,SSEX,SAGE,SDEPT),主关键字是SNO。

其中SNO为学号,NUMBER(5),学号不能为空,值是惟一的;SNAME为姓名,VARCHAR2(20);SSEX为性别,char

(2);SAGE为年龄,NUMBER

(2);SDEPT为所在系名,VARCHAR2(10)。

写出实现下列功能的SQL语句。

1)创建此表并插入数据;

createtables_ji3110307207

snonumber(5)primarykeynotnull,

snamevarchar2(20),

ssexchar

(2),

sagenumber

(2),

sdeptvarchar2(10)

INSERTINTOSVALUES(95001,'李明勇','男',20,'CS');

INSERTINTOSVALUES(95002,'刘晨','女',19,'IS');

INSERTINTOSVALUES(95003,'王名','女',18,'MA');

INSERTINTOSVALUES(95004,'张立','男',19,'CS');

INSERTINTOSVALUES(95005,'张军','男',21,'MA');

INSERTINTOSVALUES(95006,'王张凤','女',19,'FL');

INSERTINTOSVALUES(95011,'王敬','女',18,'IS');

INSERTINTOSVALUES(95021,'张名惠','男',19,'FL');

2)查看此表的数据结构和数据;

3)根据此表再复制创建一个只有’IS’系学生组成的新表S_IS_班名座号;

createtables_is_ji3110307207

asselect*froms_ji3110307207

wheresdept='is'

4)向S表添加“入学时间(comedate)”列,其数据类型为日期型(date);

altertables_ji3110307207addcomedatedate

5)将年龄的数据类型改为NUMBER(3)且默认值为19,并查看这些修改后的表结构;

列无数据的情况下直接修改:

altertables_ji3110307207modifysagemunber(3),default(19)

列有数据的情况下:

新建一列

altertables_ji3110307207addnewsagenumber(3)default(19)

旧列数据复制新列中

updates_ji3110307207setnewsage=cast(sageasnumber(3));

删除旧列

altertables_ji3110307207dropcolumnsage;

重新命名新列

altertables_ji3110307207renamecolumnnewsagetosage;

6)删除新添加的列,查看更改情况;

altertables_ji3110307207dropcolumncomedate

7)将表s改名为student;

altertables_ji3110307207renametostudent_3110307207

8)为表s添加注释'学生信息表'

commentontablestudent_3110307207is'学生信息表'

读取注释:

select*fromuser_tab_commentswherecommentsisnotnull

9)截断s表;

truncatetables_ji3110307207

10)删除生成的新表S_IS_班名座号;

truncate和delete只删除数据不删除表的结构(定义)

drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),

索引(index);依赖于该表的存储过程

droptables_is_ji3110307207

(2)创建约束

要求按普遍采用的约定为这些约束命名,约束创建后要进行约束测试。

(参见所附的表结构和数据,表名要加上班名座号)

CREATETABLECOURSE_ji3110307207

CNONUMBER(4),

CNAMEVARCHAR2(30),

CPNONUMBER(4),

CCREDITNUMBER

(2),

CLIMITNUMBER(4)

1)为COURSE表添加一个主键约束;

altertablecourse_ji3110307207addconstraintpk_cnoprimarykey(cno)

查看此表的约束:

Select*fromuser_constraintswheretable_name='COURSE_JI3110307207'

2)创建SC表的主键约束和外键约束(一个列级和一个表级),表级的外键约束要求允许使用级联删除选项;

altertablecourse_ji3110307207addconstraintpk_cnoprimarykey(cno)

select*fromuser_constraintswheretable_name='SC'

altertablescaddconstraintsno_cno_fkforeignkey(sno,cno)referencess_ji3110307207(sno)andcourse_ji3110307207(cno)

ORA-02256:

要引用的列数必须与已引用列数匹配?

3)为S表的SSEX创建CHECK约束;

altertables_ji3110307207addconstraintssex_chkcheck(ssexin('男','女'))

Select*fromuser_constraintswheretable_name='S_JI3110307207'

4)为S表创建一个合适的Notnull和unique惟一性约束;

姓名为非空:

select*fromUSER_CONSTRAINTSwheretable_name='S_JI3110307207'

学号是唯一的:

altertables_ji3110307207addconstraintsno_uniqueunique(sno)

建表时已经将sno设为主键了,然后就添加不进去了;ORA-02261:

表中已存在这样的唯一关键字或主键;然后查约束条件的时候又没有看到?

5)在上题基础上,删除其中一个约束,启用/禁用其中一个约束,并测试之。

Altertables_ji3110307207dropconstraintssex_chk

altertables_ji3110307207disableconstraintsys_c005176

altertables_ji3110307207enableconstraintsys_c005176

(3)使用数据字典视图

利用任意3种数据字典视图查看数据库对象的信息,如查看表、表空间信息和约束信息等。

查看用户下所有的表:

select*fromuser_tables

显示用户信息所属的表空间:

selectdefault_tablespace,temporary_tablespacefromdba_users

查询约束信息:

Select*fromuser_constraints

3.DML实践

(1)Oracle表的DML操作。

1)7369号雇员加薪10%。

updateemp

setsal=sal*1.1

whereempno=7369

2)*从部门表(DEPT)中删除部门30,如果删除不成功,那么写出你自己的建议,说明应该怎么做。

应该把30号部门的员工信息删除,因为部门表的部门编号作为了员工表的外键

3)向EMP表中插入一个新雇员。

Insertintoempvalues(7950,'QSL','MANAGER',7839,to_date('21-08-2003','DD-MM-YYYY'),4000.00,NULL,10)

(2)数据检索。

1)*显示EMP表中月薪>$2850的雇员的姓名和薪资。

selectename,salfromemp

wheresal>2850

2)*显示雇员号为7566的员工的姓名和部门号。

selectename,deptnofromemp

whereempno=7566

3)显示受雇日期在’20-2月-1981’与’1-5月-1981’之间的员工的姓名、工种和受雇日期,要求以受雇日期升序排列。

selectename,job,hiredatefromemp

wherehiredatebetween'20-2月-1981'and'1-5月-1981'

orderbyhiredate

4)*显示部门号为10、30的员工的姓名和部门号,要求以姓名序排列。

selectename,deptnofromemp

wheredeptnoin(10,30)

orderbyename

5)显示EMP表中所有岗位(job)的类型。

selectdistinctjobfromemp

6)显示没有上司员工的姓名和工种。

selectename,jobfromemp

wheremgrisnull

7)显示部门号为10、30且月薪>$1500的所有员工的姓名和月薪,要求显示列名为“Employee”和“MonthlySalary”。

selectenameEmployee,salMonthlySalaryfromemp

wheredeptnoin(10,30)and

sal>1500

8)显示哪些姓名中含有字母”A”并且部门号为30的员工或者上司号为7782的员工姓名。

selectenamefromemp

whereenamelike'%A%'anddeptno=30ormgr=7782

9)*在查询EMP表中使用连接操作符和原义字符串。

查询结果类同以下:

selectename||'isa'||job

fromemp

雇员和职务表

-------------------------

SMITHisaCLERK

ALLENisaSALESMAN

WARDisaSALESMAN

JONESisaMANAGER

MARTINisaSALESMAN

......

10)*显示哪些挣了佣金(comm)的员工的姓名、月薪和佣金,要求显示结果按月薪降序,月薪相同再按佣金降序。

降序:

selectsalfromemporderbysaldesc

升序:

selectsalfromemporderbysal

selectename,sal,commfromemp

wherecommisnotnull

orderbysaldesc,commdesc

(3)事务控制、替代变量、CASE结构

1)*请为用户创建一个定制提示符,提示用户为Deptno列输入50~99之间的一个值

2)*学习使用COMMIT、ROLLBACK和SAVEPOINT等事务控制语句。

3)*学会创建并执行一个脚本文件。

4)*观察数据的读一致性。

(提示:

用两个不同的连接来观察,另一个连接比如可以用scott的身份连接)

5)显示符合任意条件的雇员的编号以及其它任意的列

6)将CASE结构用于UPDATE语句。

基于雇员的job值来更新job值。

’MANAGER’更新为'管理人员','PRESIDENT'更新为'总经理',其余的更新为'普通人员'。

updateemp

setjob=case

whenjob='MANAGER'then'管理人员'

whenjob='PRESIDENT'then'总经理'

else'普通人员'

end

EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO

-------------------------------------------------------------------------------

7369SMITH普通人员790217-12月-8080020

7499ALLEN普通人员769820-2月-81160030030

7521WARD普通人员769822-2月-81125050030

7566JONES管理人员783902-4月-81297520

7654MARTIN普通人员769828-9月-811250140030

7698BLAKE管理人员783901-5月-81285030

7782CLARK管理人员783909-6月-81245010

7788SCOTT普通人员756613-7月-87300020

7839KING总经理17-11月-81500010

……

已选择14行。

一、*附加题

查询EMP表中10号部门的员工平均工资,如果参加平均的员工工资低于2000就以2000作为最低可能的工资参加平均。

指出你使用的CASE结构是简单CASE表达式(SimpleCASEExpression)还是搜索式CASE表达式(SearchedCaseExpression)。

二、实验报告

根据以上实验内容的要求认真填写实验报告,记录所有的实现方法和运行结果,并记录实验过程中遇到的困难和解决问题的方法。

(实验报告中不要求写加*题目的实验过程和内容)

三、附录:

CREATETABLECOURSE(

CNONUMBER(4)

CNAMEVARCHAR2(30),

CPNONUMBER(4),

CCREDITNUMBER

(2),

CLIMITNUMBER(4));

CREATETABLESC(

SNONUMBER(5),

CNONUMBER(4),

GRADENUMBER(3,1));

INSERTINTOCOURSEVALUES(1,'数据库',5,5,10);

INSERTINTOCOURSEVALUES(2,'数学',NULL,3.10);

INSERTINTOCOURSEVALUES(3,'信息系统',1,4,12);

INSERTINTOCOURSEVALUES(4,'操作系统',6,4,12);

INSERTINTOCOURSEVALUES(5,'数据结构',7,5,16);

INSERTINTOCOURSEVALUES(6,'数据处理',NULL,3,15);

INSERTINTOCOURSEVALUES(7,'PASCAL语言',6,2,NULL);

COMMIT;

INSERTINTOSCVALUES(95001,5,92);

INSERTINTOSCVALUES(95002,3,80);

INSERTINTOSCVALUES(95001,1,58);

INSERTINTOSCVALUES(95002,2,90);

INSERTINTOSCVALUES(95003,3,NULL);

INSERTINTOSCVALUES(95001,3,70);

INSERTINTOSCVALUES(95002,1,84.5);

INSERTINTOSCVALUES(95009,2,67);

INSERTINTOSCVALUES(95010,2,NULL);

INSERTINTOSCVALUES(95009,1,34.5);

INSERTINTOSCVALUES(95001,2,85);

COMMIT;

调试过程记录

4)为S表创建一个合适的Notnull和unique惟一性约束;

姓名为非空:

select*fromUSER_CONSTRAINTSwheretable_name='S_JI3110307207'

学号是唯一的:

altertables_ji3110307207addconstraintsno_uniqueunique(sno)

建表时已经将sno设为主键了,然后就添加不进去了;ORA-02261:

表中已存在这样的唯一关键字或主键;然后查约束条件的时候又没有看到?

总结以及心得体会

第一次完成oracle实验,说实话,量还是很多的,幸好老师给了比较多的时间去完成,总体来说难度还算中等,就是有些语法不是很了解,所以要尝试比较多次才能出来结果,但是通过这次的实验,oracle基本的一些操作算是差不多了解并大致掌握了。

实验中也遇到了许多困难,而后通过了看书,还有上网XX查资料获得了解决。

另外也记录了自己比较不清楚的知识点在实验报告中,以便以后的复习。

指导老师评阅意见

指导老师:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2