Oracle练习题(七)
(1) 创建表student(sno,sname,sage,ssex,address) 其中sno为主键,并使用序列自动生成sno。
create table student(
 sno number(10),
 sname varchar2(10) not null ,
 sage number(3) not null,
 ssex varchar2(3) not null,
 address varchar2(20) not null,
 constraint pk_sno primary key(sno)
 );
create sequence seq_stu start with 1 increment by 1 maxvalue 9999 minvalue 1 nocache cycle;
create or replace trigger tri_stu before insert on student for each row
 begin
 select seq_stu.nextval into :new.sno from dual;
 end;
(2) 创建表course(cno,cname,credit)其中cno为主键
create table course(
 cno number(10) primary key,
 cname varchar2(10) not null,
 credit varchar2(10) not null
 );
(3) 创建表sc(sno,cno,grade) 其中sno + cno为主键分别参照student和course表
create table sc(
 sno number(10) not null,
 cno number(10) not null,
 grade varchar2(20) not null,
 constraint fk_sno foreign key(sno) references student(sno),
 constraint fk_cno foreign key(cno) references course(cno)
 );
(4) 在student表上以sage为索引字段创建索引,并对比查询语句 select * from student where sage=20在创建索引前后执行计划
--生成执行计划
explain plan for select * from student where sage=20;
--查看执行计划
select * from table(dbms_xplan.display);
--创建索引
create index ind_stu on student(sage);
--查看执行计划
没有添加索引之前
 添加索引之后

(5) 创建一个100-2000、步长为5的循环序列。
create sequence seq_one start with 100 increment by 5 maxvalue 2000 minvalue 100 nocycle nocache;
(6) 为student表年龄超过20的人创建一个视图。
create view vi_stu as select * from student where sage>20 with check option;
(7) 创建一个物化视图,保存不同性别平均年龄,并对比创建前后查询不同性别平均年龄的执行计划。
create materialized view mv_stu as select avg(sage) avg_age from student group by ssex ;
创建物化视图前
 
创建物化视图后
 
 
                    
                     
                    
                 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号