数据库实验4
第1关:创建视图(1)
实验要求
创建一个副教授职称的教师视图 T_Sub(工号、姓名、性别和职称)。
teacher(教师表):
tno(工号) | tname(姓名) | sex(性别) | title(职称) | birthday(出生日期) |
---|---|---|---|---|
0014 | 李欣 | 男 | 教授 | 1969/7/25 |
0078 | 张云 | 女 | 副教授 | 1975/11/25 |
0118 | 王立 | 男 | 高级工程师 | 1985/4/28 |
0193 | 赵玲 | 女 | 讲师 | 1992/9/26 |
0213 | 杨梅 | 女 | 副教授 | 1986/6/7 |
0030 | 覃刚 | 男 | 副教授 | 1980/2/15 |
course(课程表):
cno(课程号) | cname(课程名) | credit(学分) | hours(学时) | examination(考核方式) |
---|---|---|---|---|
G001 | 线性代数 | 3 | 48 | 考试 |
R003 | 数据结构 | 3 | 48 | 考试 |
R009 | 离散数学 | 3 | 48 | 考试 |
S023 | 嵌入式系统与编程实验 | 1 | 32 | 考察 |
G012 | 大学物理 | 4 | 64 | 考试 |
class(班级表):
gno(班级号) | gname(班级名) | grade(年级) | dept(学院) | gnum(班级人数) |
---|---|---|---|---|
0211801 | 软件18级1班 | 18级 | 软件 | 37 |
0211903 | 软件19级3班 | 19级 | 软件 | 35 |
0131901 | 机械19级1班 | 19级 | 机械 | 37 |
teaching(教师授课表):
cno(课程号) | tno(工号) | gno(班级号) | term(开课学期) | classroom(教室) |
---|---|---|---|---|
G001 | 0078 | 0211903 | 1 | A101 |
G001 | 0078 | 0131901 | 1 | A101 |
R003 | 0118 | 0211801 | 2 | S001 |
R009 | 0213 | 0211903 | 2 | S002 |
S023 | 0193 | 0211801 | 1 | S001 |
G012 | 0030 | 0131901 | 2 | B003 |
代码
---------- BEGIN ----------
create view T_Sub(tno,tname,sex,title) as select tno,tname,sex,title from teacher where title='副教授';
---------- END ----------
第2关:创建视图(2)
实验要求
创建软件学院班级上课情况视图 C_S(班级名、课程名、教师号)。
teacher(教师表):
tno(工号) | tname(姓名) | sex(性别) | title(职称) | birthday(出生日期) |
---|---|---|---|---|
0014 | 李欣 | 男 | 教授 | 1969/7/25 |
0078 | 张云 | 女 | 副教授 | 1975/11/25 |
0118 | 王立 | 男 | 高级工程师 | 1985/4/28 |
0193 | 赵玲 | 女 | 讲师 | 1992/9/26 |
0213 | 杨梅 | 女 | 副教授 | 1986/6/7 |
0030 | 覃刚 | 男 | 副教授 | 1980/2/15 |
course(课程表):
cno(课程号) | cname(课程名) | credit(学分) | hours(学时) | examination(考核方式) |
---|---|---|---|---|
G001 | 线性代数 | 3 | 48 | 考试 |
R003 | 数据结构 | 3 | 48 | 考试 |
R009 | 离散数学 | 3 | 48 | 考试 |
S023 | 嵌入式系统与编程实验 | 1 | 32 | 考察 |
G012 | 大学物理 | 4 | 64 | 考试 |
class(班级表):
gno(班级号) | gname(班级名) | grade(年级) | dept(学院) | gnum(班级人数) |
---|---|---|---|---|
0211801 | 软件18级1班 | 18级 | 软件 | 37 |
0211903 | 软件19级3班 | 19级 | 软件 | 35 |
0131901 | 机械19级1班 | 19级 | 机械 | 37 |
teaching(教师授课表):
cno(课程号) | tno(工号) | gno(班级号) | term(开课学期) | classroom(教室) |
---|---|---|---|---|
G001 | 0078 | 0211903 | 1 | A101 |
G001 | 0078 | 0131901 | 1 | A101 |
R003 | 0118 | 0211801 | 2 | S001 |
R009 | 0213 | 0211903 | 2 | S002 |
S023 | 0193 | 0211801 | 1 | S001 |
G012 | 0030 | 0131901 | 2 | B003 |
代码
---------- BEGIN ----------
create view C_S(gname,cname,tno) as select gname,cname,tno from teaching join course on course.cno=teaching.cno join class on class.gno=teaching.gno where class.dept='软件' ;
---------- END ----------
第3关:查询视图
查询视图C_S中的班级名和课程名。
teacher(教师表):
tno(工号) | tname(姓名) | sex(性别) | title(职称) | birthday(出生日期) |
---|---|---|---|---|
0014 | 李欣 | 男 | 教授 | 1969/7/25 |
0078 | 张云 | 女 | 副教授 | 1975/11/25 |
0118 | 王立 | 男 | 高级工程师 | 1985/4/28 |
0193 | 赵玲 | 女 | 讲师 | 1992/9/26 |
0213 | 杨梅 | 女 | 副教授 | 1986/6/7 |
0030 | 覃刚 | 男 | 副教授 | 1980/2/15 |
course(课程表):
cno(课程号) | cname(课程名) | credit(学分) | hours(学时) | examination(考核方式) |
---|---|---|---|---|
G001 | 线性代数 | 3 | 48 | 考试 |
R003 | 数据结构 | 3 | 48 | 考试 |
R009 | 离散数学 | 3 | 48 | 考试 |
S023 | 嵌入式系统与编程实验 | 1 | 32 | 考察 |
G012 | 大学物理 | 4 | 64 | 考试 |
class(班级表):
gno(班级号) | gname(班级名) | grade(年级) | dept(学院) | gnum(班级人数) |
---|---|---|---|---|
0211801 | 软件18级1班 | 18级 | 软件 | 37 |
0211903 | 软件19级3班 | 19级 | 软件 | 35 |
0131901 | 机械19级1班 | 19级 | 机械 | 37 |
teaching(教师授课表):
cno(课程号) | tno(工号) | gno(班级号) | term(开课学期) | classroom(教室) |
---|---|---|---|---|
G001 | 0078 | 0211903 | 1 | A101 |
G001 | 0078 | 0131901 | 1 | A101 |
R003 | 0118 | 0211801 | 2 | S001 |
R009 | 0213 | 0211903 | 2 | S002 |
S023 | 0193 | 0211801 | 1 | S001 |
G012 | 0030 | 0131901 | 2 | B003 |
代码
---------- BEGIN ----------
select gname,cname from C_S;
---------- END ----------
第4关:删除视图
实验要求
删除班级上课情况视图C_S。
代码
---------- BEGIN ----------
drop view C_S;
---------- END ----------
第5关:视图的添加操作
实验要求
向 T_Sub 的教师视图中添加一条记录,其中工号为 0296,姓名为 赵梦,性别为 女,职称为 副教授。
teacher(教师表):
tno(工号) | tname(姓名) | sex(性别) | title(职称) | birthday(出生日期) |
---|---|---|---|---|
0014 | 李欣 | 男 | 教授 | 1969/7/25 |
0078 | 张云 | 女 | 副教授 | 1975/11/25 |
0118 | 王立 | 男 | 高级工程师 | 1985/4/28 |
0193 | 赵玲 | 女 | 讲师 | 1992/9/26 |
0213 | 杨梅 | 女 | 副教授 | 1986/6/7 |
0030 | 覃刚 | 男 | 副教授 | 1980/2/15 |
course(课程表):
cno(课程号) | cname(课程名) | credit(学分) | hours(学时) | examination(考核方式) |
---|---|---|---|---|
G001 | 线性代数 | 3 | 48 | 考试 |
R003 | 数据结构 | 3 | 48 | 考试 |
R009 | 离散数学 | 3 | 48 | 考试 |
S023 | 嵌入式系统与编程实验 | 1 | 32 | 考察 |
G012 | 大学物理 | 4 | 64 | 考试 |
class(班级表):
gno(班级号) | gname(班级名) | grade(年级) | dept(学院) | gnum(班级人数) |
---|---|---|---|---|
0211801 | 软件18级1班 | 18级 | 软件 | 37 |
0211903 | 软件19级3班 | 19级 | 软件 | 35 |
0131901 | 机械19级1班 | 19级 | 机械 | 37 |
teaching(教师授课表):
cno(课程号) | tno(工号) | gno(班级号) | term(开课学期) | classroom(教室) |
---|---|---|---|---|
G001 | 0078 | 0211903 | 1 | A101 |
G001 | 0078 | 0131901 | 1 | A101 |
R003 | 0118 | 0211801 | 2 | S001 |
R009 | 0213 | 0211903 | 2 | S002 |
S023 | 0193 | 0211801 | 1 | S001 |
G012 | 0030 | 0131901 | 2 | B003 |
代码
---------- BEGIN ----------
insert into T_Sub(tno,tname,sex,title) values('0296','赵梦','女','副教授');
---------- END ----------
第6关:视图的修改操作
实验要求
将 T_Sub 的教师视图中 赵梦 的职称改为“教授”。
teacher(教师表):
tno(工号) | tname(姓名) | sex(性别) | title(职称) | birthday(出生日期) |
---|---|---|---|---|
0014 | 李欣 | 男 | 教授 | 1969/7/25 |
0078 | 张云 | 女 | 副教授 | 1975/11/25 |
0118 | 王立 | 男 | 高级工程师 | 1985/4/28 |
0193 | 赵玲 | 女 | 讲师 | 1992/9/26 |
0213 | 杨梅 | 女 | 副教授 | 1986/6/7 |
0030 | 覃刚 | 男 | 副教授 | 1980/2/15 |
course(课程表):
cno(课程号) | cname(课程名) | credit(学分) | hours(学时) | examination(考核方式) |
---|---|---|---|---|
G001 | 线性代数 | 3 | 48 | 考试 |
R003 | 数据结构 | 3 | 48 | 考试 |
R009 | 离散数学 | 3 | 48 | 考试 |
S023 | 嵌入式系统与编程实验 | 1 | 32 | 考察 |
G012 | 大学物理 | 4 | 64 | 考试 |
class(班级表):
gno(班级号) | gname(班级名) | grade(年级) | dept(学院) | gnum(班级人数) |
---|---|---|---|---|
0211801 | 软件18级1班 | 18级 | 软件 | 37 |
0211903 | 软件19级3班 | 19级 | 软件 | 35 |
0131901 | 机械19级1班 | 19级 | 机械 | 37 |
teaching(教师授课表):
cno(课程号) | tno(工号) | gno(班级号) | term(开课学期) | classroom(教室) |
---|---|---|---|---|
G001 | 0078 | 0211903 | 1 | A101 |
G001 | 0078 | 0131901 | 1 | A101 |
R003 | 0118 | 0211801 | 2 | S001 |
R009 | 0213 | 0211903 | 2 | S002 |
S023 | 0193 | 0211801 | 1 | S001 |
G012 | 0030 | 0131901 | 2 | B003 |
代码
---------- BEGIN ----------
update T_Sub set title='教授' where tno='0296';
---------- END ----------
第7关:视图的删除操作
实验要求
删除 T_Sub 的教师视图中教师 覃刚 的记录。
teacher(教师表):
tno(工号) | tname(姓名) | sex(性别) | title(职称) | birthday(出生日期) |
---|---|---|---|---|
0014 | 李欣 | 男 | 教授 | 1969/7/25 |
0078 | 张云 | 女 | 副教授 | 1975/11/25 |
0118 | 王立 | 男 | 高级工程师 | 1985/4/28 |
0193 | 赵玲 | 女 | 讲师 | 1992/9/26 |
0213 | 杨梅 | 女 | 副教授 | 1986/6/7 |
0030 | 覃刚 | 男 | 副教授 | 1980/2/15 |
course(课程表):
cno(课程号) | cname(课程名) | credit(学分) | hours(学时) | examination(考核方式) |
---|---|---|---|---|
G001 | 线性代数 | 3 | 48 | 考试 |
R003 | 数据结构 | 3 | 48 | 考试 |
R009 | 离散数学 | 3 | 48 | 考试 |
S023 | 嵌入式系统与编程实验 | 1 | 32 | 考察 |
G012 | 大学物理 | 4 | 64 | 考试 |
class(班级表):
gno(班级号) | gname(班级名) | grade(年级) | dept(学院) | gnum(班级人数) |
---|---|---|---|---|
0211801 | 软件18级1班 | 18级 | 软件 | 37 |
0211903 | 软件19级3班 | 19级 | 软件 | 35 |
0131901 | 机械19级1班 | 19级 | 机械 | 37 |
teaching(教师授课表):
cno(课程号) | tno(工号) | gno(班级号) | term(开课学期) | classroom(教室) |
---|---|---|---|---|
G001 | 0078 | 0211903 | 1 | A101 |
G001 | 0078 | 0131901 | 1 | A101 |
R003 | 0118 | 0211801 | 2 | S001 |
R009 | 0213 | 0211903 | 2 | S002 |
S023 | 0193 | 0211801 | 1 | S001 |
G012 | 0030 | 0131901 | 2 | B003 |
代码
---------- BEGIN ----------
delete from T_Sub where tno='0030';
---------- END ----------
第8关:创建索引
实验要求
为教师表在姓名列上建立B-Tree索引TI。
teacher(教师表):
tno(工号) | tname(姓名) | sex(性别) | title(职称) | birthday(出生日期) |
---|---|---|---|---|
0014 | 李欣 | 男 | 教授 | 1969/7/25 |
0078 | 张云 | 女 | 副教授 | 1975/11/25 |
0118 | 王立 | 男 | 高级工程师 | 1985/4/28 |
0193 | 赵玲 | 女 | 讲师 | 1992/9/26 |
0213 | 杨梅 | 女 | 副教授 | 1986/6/7 |
0030 | 覃刚 | 男 | 副教授 | 1980/2/15 |
course(课程表):
cno(课程号) | cname(课程名) | credit(学分) | hours(学时) | examination(考核方式) |
---|---|---|---|---|
G001 | 线性代数 | 3 | 48 | 考试 |
R003 | 数据结构 | 3 | 48 | 考试 |
R009 | 离散数学 | 3 | 48 | 考试 |
S023 | 嵌入式系统与编程实验 | 1 | 32 | 考察 |
G012 | 大学物理 | 4 | 64 | 考试 |
class(班级表):
gno(班级号) | gname(班级名) | grade(年级) | dept(学院) | gnum(班级人数) |
---|---|---|---|---|
0211801 | 软件18级1班 | 18级 | 软件 | 37 |
0211903 | 软件19级3班 | 19级 | 软件 | 35 |
0131901 | 机械19级1班 | 19级 | 机械 | 37 |
teaching(教师授课表):
cno(课程号) | tno(工号) | gno(班级号) | term(开课学期) | classroom(教室) |
---|---|---|---|---|
G001 | 0078 | 0211903 | 1 | A101 |
G001 | 0078 | 0131901 | 1 | A101 |
R003 | 0118 | 0211801 | 2 | S001 |
R009 | 0213 | 0211903 | 2 | S002 |
S023 | 0193 | 0211801 | 1 | S001 |
G012 | 0030 | 0131901 | 2 | B003 |
代码
---------- BEGIN ----------
CREATE unique INDEX TI ON teacher(tname);
---------- END ----------
第9关:查看索引
实验要求
查看教师表的索引信息。
teacher(教师表):
tno(工号) | tname(姓名) | sex(性别) | title(职称) | birthday(出生日期) |
---|---|---|---|---|
0014 | 李欣 | 男 | 教授 | 1969/7/25 |
0078 | 张云 | 女 | 副教授 | 1975/11/25 |
0118 | 王立 | 男 | 高级工程师 | 1985/4/28 |
0193 | 赵玲 | 女 | 讲师 | 1992/9/26 |
0213 | 杨梅 | 女 | 副教授 | 1986/6/7 |
0030 | 覃刚 | 男 | 副教授 | 1980/2/15 |
course(课程表):
cno(课程号) | cname(课程名) | credit(学分) | hours(学时) | examination(考核方式) |
---|---|---|---|---|
G001 | 线性代数 | 3 | 48 | 考试 |
R003 | 数据结构 | 3 | 48 | 考试 |
R009 | 离散数学 | 3 | 48 | 考试 |
S023 | 嵌入式系统与编程实验 | 1 | 32 | 考察 |
G012 | 大学物理 | 4 | 64 | 考试 |
class(班级表):
gno(班级号) | gname(班级名) | grade(年级) | dept(学院) | gnum(班级人数) |
---|---|---|---|---|
0211801 | 软件18级1班 | 18级 | 软件 | 37 |
0211903 | 软件19级3班 | 19级 | 软件 | 35 |
0131901 | 机械19级1班 | 19级 | 机械 | 37 |
teaching(教师授课表):
cno(课程号) | tno(工号) | gno(班级号) | term(开课学期) | classroom(教室) |
---|---|---|---|---|
G001 | 0078 | 0211903 | 1 | A101 |
G001 | 0078 | 0131901 | 1 | A101 |
R003 | 0118 | 0211801 | 2 | S001 |
R009 | 0213 | 0211903 | 2 | S002 |
S023 | 0193 | 0211801 | 1 | S001 |
G012 | 0030 | 0131901 | 2 | B003 |
代码
---------- BEGIN ----------
select * from user_indexes where table_name='TEACHER';
---------- END ----------
第10关:修改索引
实验要求
将索引 TI 重命名为 TTI。
代码
---------- BEGIN ----------
alter index if exists TI rename to TTI;
---------- END ----------
第11关:删除索引
实验要求
删除索引 TTI。
代码
---------- BEGIN ----------
DROP INDEX TTI;
---------- END ----------
实验收获:
- 掌握了关系数据库标准语言的视图、索引部分内容。
- 掌握了视图的创建、查询、以及添加修改和删除。
- 掌握了索引的创建、查询、修改以及删除。
心得体会:
- 通过学习第三章“视图”、“索引”部分的内容,我完成了这次的实验报告,在这次报告中,我完成了对视图的一些操作,实现了对视图的创建、查询视图、删除视图以及视图的添加、修改和删除操作,以及对索引的一些操作包括创建索引、查看索引、修改索引、删除索引等操作。
- 在进行这次实验报告时候,我学会了对视图和索引的使用,学会了对数据操作的简化方式以及加快检索等。