资源描述
______________________________________________________________________________________________________________
《Oracle数据库原理》考核
学号:2014XXXXXX
《Oracle数据库原理》实验报告
姓名 XXXX
院系 计算机与信息技术学院
专业 计算机科学与技术
教师 XXX
2016年10月实验一:SQL语言
实验目的
1. 掌握SQL*PLUS、SQL Developer或PL/SQL Developer的使用;
2. 理解并掌握SQL语言;
3. 理解并掌握oracle的特殊对象和高级SQL命令;
实验时间
6学时
实验步骤
(这一部分务必认真填写,注意事项:1. 完成实验要求的工作,需列出执行命令和执行结果;2. 对执行结果的详细分析和解释;3. 错误以及错误原因;4. 文档格式清晰。)
1. 定义表student,要求具有列:学号(类型为number,主键)、姓名(类型为varchar2,长度为50个字符)、性别(类型为varchar2,长度为10个字符)、家庭住址(类型为varchar2,长度为500个字符);
2.在建立的student表中插入自己的学号、姓名、性别和家庭住址,并提交;
3.向student表中加入新列:电话(类型为number);
4.向student表插入学号为自己学号、姓名、性别、家庭住址和电话号码的新行;
5.显示目前表student中的所有行(需要使用4.4节的select语句);
6.向表student中添加一行:123456789、张三、男、山西太原、13100000000;
7.从student表中删除学号为123456789的行;
8.再次向表student中添加信息:123456789、张三、男、山西太原、13100000000;
9.再次向表student中添加信息:123456789、张三、男、山西太原、13100000000,查看能否成功,如果不成功,请解释原因;
不成功,违反唯一约束条件。
10.更新学号为123456789的学生信息,将其电话号码改为13300000000;
11.删除表student。
实验内容二:
1. 定义表student,要求具有列:学号(类型为number,主键)、姓名(类型为varchar2,长度为50个字符)、职位(类型为varchar2,长度为50个字符)、性别(类型为varchar2,长度为10个字符)、数学(类型为number)、英语(类型为number)、语文(类型为number)、总成绩(类型为number);
2.在建立的student表中插入以下信息并提交:
3.在student表中找出总成绩大于等于200分的学生学号、姓名以及总成绩;
4.在student表中找出数学、英语和语文成绩都大于等于60且总成绩大于等于200分的学生学号、姓名、数学成绩、英语成绩、语文成绩和总成绩;
5.找出student表中所有李姓和刘姓学生的姓名、学号和总成绩;
6.找出student表中数学成绩在[60,80]范围内的学生姓名、学号和数学成绩;
7.学生最终数学成绩定义为数学成绩开根号乘10,显示所有学生学号、姓名、数学成绩和最终数学成绩(提示:参考4.6.3节的数值函数);
8.计算student表中数学、英语和语文成绩的均值和方差;
9.计算不同职位学生数学成绩的均值和方差(提示:参考4.4.5节的聚集计算和4.4.6节的分组查询);
10.计算不同性别学生数学成绩的均值和方差(提示:参考4.4.5节的聚集计算和4.4.6节的分组查询)。
实验内容三
参考教材4.4.7~4.4.9,完成以下实验操作(可以使用SQL*PLUS、SQL Developer或PL/SQL Developer完成),并将实验步骤(含过程截图)记录到实验报告中。
1. 找出student表中满足以下条件的学生学号和姓名:数学成绩、英语成绩和语文成绩均大于student表中的某一学生的数学成绩、英语成绩和语文成绩;
2.新建address表,要求具有列:学号(类型为number,主键)、姓名(类型为varchar2,长度为50个字符)、籍贯(类型为varchar2,长度为200个字符);
3.将student表中所有学生的学号和姓名添加到address表中;
4.为address表中的学生添加籍贯信息如下:
5.根据表student和address,查询所有山西学生的学号、姓名和总成绩;
6.根据表student和address,查询所有山西和陕西学生的学号、姓名和总成绩(要求使用集合查询);
7.查询student表中总成绩大于平均总成绩的学生学号、姓名和总成绩。
实验内容四
参考教材4.5,完成以下实验操作(可以使用SQL*PLUS、SQL Developer或PL/SQL Developer完成),并将实验步骤(含过程截图)记录到实验报告中。
1. 使用SQL语句计算18*1.05的值;
2.新建表name,要求具有列:学号、姓名和性别,列类型与student表中相应列的类型一致;
3.新建表score,要求具有列:学号、姓名、数学、英语、语文和总成绩,列类型与student表中相应列的类型一致;
4.使用insert all语句将student表的信息分解到name表和score表中;
5.新建表student_shanxi和student_henan,表中列信息与student表的列信息一致;
6.结合student表和address表,使用insert first语句将student表中籍贯为山西的学生信息插入到表student_shanxi中,籍贯为河南的学生信息插入到表student_henan中;
7.新建表student_math,要求具有列:学号(类型为number,主键)、姓名(类型为varchar2,长度为50个字符)、数学(类型为varchar2,长度为10个字符);
8.将表student中籍贯为山西的学生学号、姓名和数学成绩插入到表student_math,要求数学成绩使用五档制,即分数在[90,100]范围内的记为A,在[80,90)内的记为B,在[70,80)内的记为C,在[60,70)内的记为D,60分以下的记为E(提示:可以使用case when语句,参考4.6.6);
9.使用merge into语句将student表中没有插入到student_math表中的信息插入到student_math表中。
实验内容五 层次查询
1. 显示student表中总成绩排名前10的学生学号和姓名(提示:使用rownum伪列);
2.新建表sc_district,要求具有列:id(类型为number),parent_id(类型为number),name(类型为varchar2,长度为255字符)
3.向表sc_district插入以下信息:
_
4.执行以下SQL语句:
解释上述SQL语句和执行结果(提示:参考4.7.2);
5.执行以下SQL语句:
解释上述SQL语句和执行结果(提示:参考4.7.2);
6.执行以下SQL语句:
解释上述SQL语句和执行结果(提示:参考4.7.2);
7.执行以下SQL语句:
解释上述SQL语句和执行结果(提示:参考4.7.2,并通过网络查找并了解
sys_connect_by_path函数的含义);
8.执行以下SQL语句:
解释上述SQL语句和执行结果(提示:参考4.7.2,并通过网络查找并了解sys_connect_by_path函数的含义);
9.执行以下SQL语句:
解释上述SQL语句和执行结果(提示:参考4.7.2,并通过网络查找并了解sys_connect_by_path函数的含义);
精品资料
实验二 Oracle数据类型
实验目的
1. 掌握Oracle中的数据类型
2. 了解Oracle大对象类型的概念、特点和使用方法
实验时间
2学时
实验步骤
1. 执行以下SQL语句:
解释上述SQL语句的执行结果;
2. 执行以下SQL语句:
解释上述SQL语句的执行结果;
3. 执行以下SQL语句:
解释上述SQL语句的执行结果;
4. 执行以下SQL语句:
解释上述SQL语句的执行结果;
5. 设计数据表验证以下结果:
6. 执行以下SQL语句:
解释上述SQL语句的执行结果;
7. 执行以下SQL语句:
解释上述SQL语句的执行结果;
8. 执行以下SQL语句:
解释上述SQL语句的执行结果;
9. 执行以下SQL语句:
解释上述SQL语句的执行结果(注意修改语句中的日期,以便于实验时的日期相匹配);
10. 执行以下SQL语句:
解释上述SQL语句的执行结果(注意修改语句中的日期,以便于实验时的日期相匹配);
11. 执行以下SQL语句:
解释上述SQL语句的执行结果;
12. 执行以下SQL语句:
解释上述SQL语句的执行结果;
13. 执行以下SQL语句:
解释上述SQL语句的执行结果;
14. 执行以下SQL语句:
解释上述SQL语句的执行结果(注意修改语句中的日期,以便于实验时的日期相匹配);
select * from t_date
where col=to_date('2016-11-25','yyyy-mm-dd');
select * from t_date
where trunc(col)=to_date('2016-11-25','yyyy-mm-dd');
15. 执行以下SQL语句:
解释上述SQL语句的执行结果;
16. 执行以下SQL语句:
解释上述SQL语句的执行结果;
17. 执行以下SQL语句:
解释上述SQL语句的执行结果;
18. 执行以下SQL语句:
解释上述SQL语句的执行结果;
19. 执行以下SQL语句:
解释上述SQL语句的执行结果;
20. 新建表t_lob,要求具有列:bcol(类型为BLOB)、ccol(类型为CLOB)、fcol(类型为BFILE);
21. 在t_lob中插入一行,要求在bcol中加入一个图片、在ccol中加入两行文本、在fcol中加入一个文件;
提示:添加BFILE文件可能需要新建目录项以支持非默认目录:
实验三 Oracle中的数据库对象管理
实验目的
1. 了解表空间;
2. 掌握Oracle中的数据表类型,包括堆表、索引组织表、外部表、临时表、嵌套表和对象表;
3. 掌握Oracle中的视图类型,包括关系视图和物化视图;
4. 掌握Oracle中的索引类型,包括B*索引、反转键索引、位图索引和函数索引;
5. 掌握Oracle中的序列
实验时间
4学时
实验步骤
实验内容1:表空间和表
1. 创建表空间ts,要求:
a) 使用两个数据文件,大小均为1000M,均可以自动扩展,每次扩展100M,最大不超过2000M;
b) 默认使用日志记录;
c) 使用自动段管理和本地区管理,其中区大小自动分配;
显示创建表空间ts的SQL语句,并解释该语句;
2. 创建一个索引组织表it,要求:
a) 具有列:学号(类型为number,主键)、姓名(类型为varchar2,长度为50个字符)、附加数据(类型为varchar2,长度为4000个字节);
b) 百分比阈值设为45;
c) 包含列:姓名;
显示创建该索引组织表的SQL语句,并解释该语句;
3. 创建两个csv文件,内容为:
然后创建一个外部表EXTERNAL_TABLE,要求:
a) 具有列:编号(类型为number)、国家(类型为varchar2);
b) 为上述两个文件所在的目录建立目录类型;
c) 类型为ORACLE_LOADER;
d) 访问参数为:FIELDS TERMINATED BY ','optionally enclosed BY '"';
e) 文件为上述两个文件;
显示创建该索引组织表的SQL语句,并解释该语句;
4. 修改文件1.csv或2.csv,查看外部表EXTERNAL_TABLE中的数据是否相应更改;
5. 创建类型person和employee:
执行以下SQL语句,并显示执行结果:
6. 执行以下SQL语句:
执行并解释以下SQL语句:
然后执行并解释以下SQL语句:
实验内容2:视图
1. 参考教材6.1.3,创建关系视图,要求满足:
a) SQL查询为:SELECT s.学号,s.姓名,s.性别,a.籍贯,s.总成绩FROM student s, address where s.学号=a.学号;
b) 创建时强制执行;
c) 查询限制选择WITH CHECK OPTION
显示创建该关系视图的SQL语句,并解释该语句;
2. 参考教材6.3.1,创建实体化视图,要求满足:
a) SQL查询为:SELECT s.学号,s.姓名,s.性别,a.籍贯,s.总成绩FROM student s, address where s.学号=a.学号;
b) 需要时完全刷新;
c) 立即生成视图
显示创建该实体化视图的SQL语句,并解释该语句;
实验内容3:索引、序列、同义词和数据字典
1. 参考教材6.4,定义表student_i,要求:
a) 具有列:学号(类型为number)、姓名(类型为varchar2,长度为50个字符)、性别(类型为varchar2,长度为10个字符)、籍贯(类型为varchar2,长度为500个字符);
b) 将学号指定为主键;
c) 为性别创建位图索引;
将student和address表中相应的信息填入student_i;
2. 参考教材6.7,定义序列seq,要求:
a) 初始化值为1;
b) 步长值为1;
c) 最大值设为NOMAXVALUE;
d) 最小值设为1;
e) 序列不循环;
f) 无需缓冲。
显示并解释创建序列seq的SQL语句。接下来删除表student_i中的所有行,并执行以下SQL:
insert into student_i
select seq.nextval, s.姓名,s.性别,a.籍贯
from student s, address a
where s.学号=a.学号
显示执行结果,并解释上述SQL语句的含义;
3. 参考教材6.8,为student表和address表分别创建同义词s和a,然后执行SQL语句:
insert into student_i
select seq.nextval, s.姓名,s.性别,a.籍贯
from s, a
where s.学号=a.学号
4. 参考教材6.9,执行以下SQL语句:
select * from dict where instr(comments,’index’)>=0
显示执行结果,并解释上述SQL语句的含义(提示:dict为dictionary的同义词,dictionary视图中存放了全部数据字典表的名称和解释);
5. 参考教材6.9,执行以下SQL语句:
select * from dict_columns where table_name=’USER_INDEXES’
显示执行结果,并解释上述SQL语句的含义(提示:dict_columns视图中存放了全部数据字典表里字段名称和解释)
实验四 PL/SQL
实验目的
1. 掌握PL/SQL代码组织方式与运行过程;
2. 掌握PL/SQL程序控制结构
实验时间
4学时
实验步骤
1. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果
2. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
3. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
4. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
5. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
6. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
7. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
8. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
9. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
10. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
11. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
12. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
13. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
14. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
15. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;1-20
16. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
Declare
Type t_stus is varray(5) of address%rowtype;
stus t_stus:=t_stus(null,null,null,null,null);
Begin
for i in 10..15 loop
select * into stus(i-9) from address where 学号=i;
dbms_output.put_line('学号:'||stus(i-9).学号||chr(13)||
'姓名:'||stus(i-9).姓名||chr(13)||
'籍贯:'||stus(i-9).籍贯);
End loop;
End;
17. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
Declare
Type t_stus is varray(5) of address%rowtype;
Stus t_stus:=t_stus() ;
Begin
Stus.extend(5);
For i in 10..15 loop
Select * into stus(i-9) from address where 学号=i;
dbms_output.put_line('学号:'||stus(i-9).学号||chr(13)||
'姓名:'||stus(i-9).姓名||chr(13)||
'籍贯:'||stus(i-9).籍贯);
End loop;
End;
18. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
19. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
20. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
21. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
22. 执行以下PL/SQL代码:
解释以上代码,并显示执行结果;
Welcome To
Download !!!
欢迎您的下载,资料仅供参考!
展开阅读全文