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;
下一篇: 常用数据库查询优化小结