oracle视图操作综合练习

--oracle视图操作综合练习
--1.创建学员表student并加入数据
create table student(
s_id number(8),
s_name varchar2(20),
s_score varchar2(20),
class_id varchar2(20)
);
insert into student(s_id,s_name,s_score,class_id)
values(1001,'allen',89.0,101);
insert into student(s_id,s_name,s_score,class_id)
values(1002,'marry',80.0,101);
insert into student(s_id,s_name,s_score,class_id)
values(1003,'jerry',81.0,101);
insert into student(s_id,s_name,s_score,class_id)
values(1004,'tom',74.0,90);
insert into student(s_id,s_name,s_score,class_id)
values(1005,'jim',67.0,90);
insert into student(s_id,s_name,s_score)
values(1234,'rose',90.0);
commit;

delete from student
where s_id=1234

select * from student
--练习1:基于学员表创建v_student_101视图,包含101专业的所有数据
create view v_student_101 as
select s_id ,S_NAME,S_SCORE
from student
where class_id=101

--练习2.查询v_student_101中的所有数据
select * from v_student_101

--练习3.对v_student_101表进行插入操作数据为1234,'rose',90.0
drop view v_student_101_add--删除视图
--创建插入的查询,实现练习3
create view v_student_101_add as
select s_id ,S_NAME,S_SCORE
from student
where class_id=101 or s_id=1234

select * from v_student_101_add
--练习4,基于学员表创建v_student表,查询学生的平均成绩
create view v_student as
select class_id ,avg(s_score)as avg_score
from student
group by class_id

select * from v_student

--练习5.在视图v_student表中执行:
--update v_student set avg_score=80 where class_id=101
--执行上述的语句,将产生的结果?
update v_student set avg_score=80 where class_id=101
--非法的操作,证明不能对视图进行写操作

--练习6.定义v_stu,在视图v_student现有列的基础上加入人数一列并查询
create view v_stu as
select class_id ,avg(s_score)as avg_score,count(class_id)as renshu
from student
group by class_id

select * from v_stu

--练习7.从v_stu视图中查询数据的SQL语句为:
--select * from view v_student;
--上述查询视图的SQL语句是否正确?为什么?
select * from view v_student;
--不正确,不能加view


--练习8.删除视图v_student与v_stu
drop view v_student--删除v_student视图
drop view v_stu--删除v_stu视图

猜你喜欢

转载自www.cnblogs.com/wusen/p/9486560.html