数据库实验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 ---------- 

实验收获:

  1. 掌握了关系数据库标准语言的视图、索引部分内容。
  2. 掌握了视图的创建、查询、以及添加修改和删除。
  3. 掌握了索引的创建、查询、修改以及删除。

心得体会:

  1. 通过学习第三章“视图”、“索引”部分的内容,我完成了这次的实验报告,在这次报告中,我完成了对视图的一些操作,实现了对视图的创建、查询视图、删除视图以及视图的添加、修改和删除操作,以及对索引的一些操作包括创建索引、查看索引、修改索引、删除索引等操作。
  2. 在进行这次实验报告时候,我学会了对视图和索引的使用,学会了对数据操作的简化方式以及加快检索等。
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐