KingbaseES(金仓数据库)-头歌-实验报告四(共11关)
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。可以使用专门用于创建索引的 CREATE INDEX 语句在一个已有的表上创建索引,但该语句不能创建主键。语句,我们也可以提交数据,就像这些来自于某个单一的表。语句,我们也可以提交数据,就像这些来自于某个单一的表。注
第1关:创建视图(1)
- 任务要求
- 评论
- 关卡排行榜
实验要求
创建一个副教授职称的教师视图 T_Sub(工号、姓名、性别和职称)。
-
teacher(教师表):
tno(工号) tname(姓名) sex(性别) title(职称) birthday(出生日期) 0014 李欣 男 教授 1969-07-25 0078 张云 女 副教授 1975-11-25 0118 王立 男 高级工程师 1985-04-28 0193 赵玲 女 讲师 1992-09-26 0213 杨梅 女 副教授 1986-06-07 0030 覃刚 男 副教授 1980-02-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
相关知识
视图:
在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。
注意:数据库的设计和结构不会受到视图中的函数、WHERE 或 JOIN 语句的影响。
SQL CREATE VIEW 语法:
CREATE VIEW <视图名>AS SELECT <字段名1>, <字段名2>...FROM <表名>WHERE <条件>;
---------- BEGIN ----------
create view T_Sub
as
select tno,tname,sex,title
from teacher
where title='副教授'
---------- END ----------
第2关:创建视图(2)
- 任务要求
- 评论
- 关卡排行榜
实验要求
创建软件学院班级上课情况视图 C_S(班级名、课程名、教师号)。
-
teacher(教师表):
tno(工号) tname(姓名) sex(性别) title(职称) birthday(出生日期) 0014 李欣 男 教授 1969-07-25 0078 张云 女 副教授 1975-11-25 0118 王立 男 高级工程师 1985-04-28 0193 赵玲 女 讲师 1992-09-26 0213 杨梅 女 副教授 1986-06-07 0030 覃刚 男 副教授 1980-02-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
相关知识
视图:
在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。
注意:数据库的设计和结构不会受到视图中的函数、WHERE 或 JOIN 语句的影响。
SQL CREATE VIEW 语法:
CREATE VIEW <视图名>AS SELECT <字段名1>, <字段名2>...FROM <表名1>, <表名2>...WHERE <条件1> AND <条件2> AND...;
---------- BEGIN ----------
create view C_S
as select gname,cname,teacher.tno
from class,course,teacher,teaching
where class.dept='软件' and teacher.tno=teaching.tno and teaching.cno=course.cno and class.gno=teaching.gno
---------- END ----------
第3关:查询视图
- 任务要求
- 评论
- 关卡排行榜
实验要求
查询视图C_S中的班级名和课程名。
-
teacher(教师表):
tno(工号) tname(姓名) sex(性别) title(职称) birthday(出生日期) 0014 李欣 男 教授 1969-07-25 0078 张云 女 副教授 1975-11-25 0118 王立 男 高级工程师 1985-04-28 0193 赵玲 女 讲师 1992-09-26 0213 杨梅 女 副教授 1986-06-07 0030 覃刚 男 副教授 1980-02-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
相关知识
使用简单的查询语句就可以对视图进行查询操作:
SELECT <字段名1>, <字段名2>...FROM <视图名>;
---------- BEGIN ----------
select gname,cname
from C_S
---------- END ----------
第4关:删除视图
- 任务要求
- 评论
- 关卡排行榜
实验要求
删除班级上课情况视图C_S。
相关知识
SQL 撤销视图
您可以通过 DROP VIEW 命令来删除视图。 SQL DROP VIEW 语法:
DROP VIEW <视图名>;
---------- BEGIN ----------
drop view C_S
---------- END ----------
第5关:视图的添加操作
- 任务要求
- 评论
- 关卡排行榜
实验要求
向 T_Sub 的教师视图中添加一条记录,其中工号为 0296,姓名为 赵梦,性别为 女,职称为 副教授。
-
teacher(教师表):
tno(工号) tname(姓名) sex(性别) title(职称) birthday(出生日期) 0014 李欣 男 教授 1969-07-25 0078 张云 女 副教授 1975-11-25 0118 王立 男 高级工程师 1985-04-28 0193 赵玲 女 讲师 1992-09-26 0213 杨梅 女 副教授 1986-06-07 0030 覃刚 男 副教授 1980-02-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
相关知识
INSERT INTO 语句
INSERT INTO 语句用于向视图中插入新记录,与向表中插入数据相似。
INSERT INTO <视图名> (<字段名1>, <字段名2>...)VALUES (<值1>, <值2>, <值3>,...);
---------- BEGIN ----------
insert into T_Sub
values('0296','赵梦','女','副教授')
---------- END ----------
第6关:视图的修改操作
- 任务要求
- 评论
- 关卡排行榜
实验要求
将 T_Sub 的教师视图中 赵梦 的职称改为“教授”。
-
teacher(教师表):
tno(工号) tname(姓名) sex(性别) title(职称) birthday(出生日期) 0014 李欣 男 教授 1969-07-25 0078 张云 女 副教授 1975-11-25 0118 王立 男 高级工程师 1985-04-28 0193 赵玲 女 讲师 1992-09-26 0213 杨梅 女 副教授 1986-06-07 0030 覃刚 男 副教授 1980-02-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
相关知识
UPDATE 语句
可以使用 UPDATE 语句来修改、更新一个或多个视图的数据。 使用 UPDATE 语句修改视图与修改表类似,语法格式为:
UPDATE <视图名>SET <列名>=<表达式> [,<列名>=<表达式>]…[WHERE (<条件>)];
语法说明如下:
- <视图名>:用于指定要更新的视图名称。
SET子句:用于指定视图中要修改的列名及其列值。其中,每个指定的列值可以是表达式,也可以是该列对应的默认值。如果指定的是默认值,可用关键字DEFAULT表示列值。WHERE子句:可选项。用于限定视图中要修改的行。若不指定,则修改表中所有的行。
---------- BEGIN ----------
update T_Sub
set title='教授'
where tname='赵梦'
---------- END ----------
第7关:视图的删除操作
- 任务要求
- 评论
- 关卡排行榜
实验要求
删除 T_Sub 的教师视图中教师 覃刚 的记录。
-
teacher(教师表):
tno(工号) tname(姓名) sex(性别) title(职称) birthday(出生日期) 0014 李欣 男 教授 1969-07-25 0078 张云 女 副教授 1975-11-25 0118 王立 男 高级工程师 1985-04-28 0193 赵玲 女 讲师 1992-09-26 0213 杨梅 女 副教授 1986-06-07 0030 覃刚 男 副教授 1980-02-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
注:这道题由于参照完整性的原因是无法成功删除的,希望同学们能够理解到这个知识点。
相关知识
DELETE语句
可以使用 DELETE 语句可以删除视图中的一行或多行记录,其语法格式为:
DELETE FROM <视图名>[WHERE <条件>];
- <视图名>:用于指定删除数据的表。
WHERE子句:指定待删除的记录应当满足的条件,WHERE子句省略时,则删除视图中所有记录。
---------- BEGIN ----------
delete from T_Sub
where tname='覃刚'
---------- END ----------
第8关:创建索引
- 任务要求
- 评论
- 关卡排行榜
实验要求
为教师表在姓名列上建立B-Tree索引TI。
-
teacher(教师表):
tno(工号) tname(姓名) sex(性别) title(职称) birthday(出生日期) 0014 李欣 男 教授 1969-07-25 0078 张云 女 副教授 1975-11-25 0118 王立 男 高级工程师 1985-04-28 0193 赵玲 女 讲师 1992-09-26 0213 杨梅 女 副教授 1986-06-07 0030 覃刚 男 副教授 1980-02-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
相关知识
使用 CREATE INDEX 语句
可以使用专门用于创建索引的 CREATE INDEX 语句在一个已有的表上创建索引,但该语句不能创建主键。
语法格式:
CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX <索引名>ON <表名> (<列名> [DESC|ASC]] [,...]);
语法说明如下:
UNIQUE :表示唯一索引。 CLUSTERED :表示创建聚集性索引。 NONCLUSTERED :表示创建非聚集性索引。 <表名>:指定要创建索引的表名。 <列名>:指定要创建索引的列名。通常可以考虑将查询语句中在 JOIN 子句和 WHERE 子句里经常出现的列作为索引列。 ASC|DESC :可选项。 ASC 指定索引按照升序来排列, DESC 指定索引按照降序来排列,默认为 ASC 。
---------- BEGIN ----------
create unique index TI on teacher(tname)
---------- END ----------
第9关:查看索引
- 任务要求
- 评论
- 关卡排行榜
知识点
查看基本表索引信息的语句格式: SELECT * FROM user_indexes WHERE table_name= 表名 ;
实验要求
查看教师表的索引信息。
-
teacher(教师表):
tno(工号) tname(姓名) sex(性别) title(职称) birthday(出生日期) 0014 李欣 男 教授 1969-07-25 0078 张云 女 副教授 1975-11-25 0118 王立 男 高级工程师 1985-04-28 0193 赵玲 女 讲师 1992-09-26 0213 杨梅 女 副教授 1986-06-07 0030 覃刚 男 副教授 1980-02-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
相关知识
使用简单的查询语句就可以对视图进行查询操作:
SELECT *FROM user_indexesWHERE table_name = <表名>;
---------- BEGIN ----------
SELECT * FROM user_indexes WHERE table_name=upper('teacher') ;
---------- END ----------
第10关:修改索引
- 任务要求
- 评论
- 关卡排行榜
实验要求
将索引 TI 重命名为 TTI。
相关知识
使用 ALTER 修改索引名称
修改索引和修改表的语句相似:
ALTER INDEX [IF EXISTS] <旧索引名> RENAME TO <新索引名>;
IF EXISTS :判断所要修改的索引名是否存在。
---------- BEGIN ----------
alter index TI
rename to TTI
---------- END ----------
第11关:删除索引
- 任务要求
- 评论
- 关卡排行榜
实验要求
删除索引 TTI。
相关知识
删除索引
删除索引的语法格式如下:
DROP INDEX <索引名>;
---------- BEGIN ----------
drop index TTI
---------- END ----------
更多推荐



所有评论(0)