欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle数据库视图练习

程序员文章站 2022-06-02 12:59:54
...

–创建三张表格
–学生表(学员编号、学员姓名、学员年龄)
–课程表(课程编号、课程名称、所在阶段)
–成绩表(学员编号、课程编号、分数、考试时间)

--创建三张表格
--学生表(学员编号、学员姓名、学员年龄)
--课程表(课程编号、课程名称、所在阶段)
--成绩表(学员编号、课程编号、分数、考试时间)
--学员表
create table student(
stu_id number,	--学员编号
stu_name VARCHAR2(64),	--学员姓名
stu_age number	--学员年龄
)
insert into student values(1,'小一',18);
insert into student values(2,'小二',19);
insert into student values(3,'小三',20);

--课程表
create table course(
cou_id number,	--课程编号
cou_name VARCHAR2(64),	--课程名称
cou_stage varchar2(64)	--所在阶段
)
insert into course values(1,'Java','中级');
insert into course values(2,'Android','初级');
insert into course values(3,'Python','初级');

--成绩表
create table grade(
stu_id number,	--学员编号
cou_id number,	--课程编号
g_score number,	--分数
g_time varchar2(64)	--考试时间
)
insert into grade values(1,1,88,'2019-12-31');
insert into grade values(2,2,89,'2020-1-1');
insert into grade values(3,3,90,'2020-1-2');
insert into grade values(1,1,90,'2019-12-31');
insert into grade values(2,2,91,'2019-12-31');
insert into grade values(3,3,92,'2019-12-31');

--创建只读视图并查询每门课的课程名称和该课程的平均分
create or replace view teacher_view as select course.cou_name as 课程名称,avg(grade.g_score) as 平均分
from course , grade
where course.cou_id = grade.cou_id
GROUP BY course.cou_name WITH READ ONLY;

--创建视图对分数进行分组排序(降序)并产生序号
create or replace view tea_view as select student.stu_name as 学生姓名,course.cou_name as 课程名,dense_rank() over(order by grade.g_score desc)编号 , g_score as 成绩
from student , course , grade
where course.cou_id = grade.cou_id and grade.stu_id = student.stu_id;

--查询视图
select * from teacher_view;
select * from tea_view;