oracle_7 视图 索引 游标

 

视图:是一个封装了各种复杂查询的语句,就称为视图

创建视图:CREATE VIEW 视图名字(字段) AS子查询,如

Create view v$_emp as Select empno,ename,sal From emp Where deptno = 20;  

 

视图实际上可以看作一个子查询或者一张表

如果要创建一个同名视图,则必须先将之前的视图删掉,再进行创建;有时候如果先删除再创建会比较麻烦,所以最好的方式是如果视图存在则先自动删除,之后自动创建,如:

Create or replace view v$_emp as Select empno,ename,sal From emp Where deptno = 20;  

 

数据的更新和表数据的更新语法相同,如:

Updata v$_emp set deptno =30 where empno = 7369;

此时,提示更新完成。默认情况下创建的视图,如果更新了,则会自动将此数据删除,之后会更新原版本的数据。

需要注意的是视图最好不要轻易的修改,所以可以将视图定义为只读的,即在创建语句的最后加上:with read only

或者创建保护视图,如:

Create or replace view v$_emp as Select empno,ename,sal From emp Where deptno = 20; With check option constraint v$_emp_bak; --查看视图: Select * from v$_emp;  

 

oracle索引

创建索引:create index idx_stu_email on stu (email);

创建索引一般有两个目的:维护被索引列的唯一性和提供快速访问表中的数据的策略

使用索引的原则:

1)         查询结果是所有数据行的5%以下时,使用索引查询效果最好;

2)         Where条件中经常用到表的多列时,使用复合索引效果会好于几个单列索引。因为当sql语句所查询的列,全部都出现在复合索引 中,此时由于oracle止血药查询索引块即课获得所有数据,当然比使用多个单列索引要快得多;

3)         索引利于select,但是对经常insertdelte尤其update的表,会降低效率。

 

 

游标是一种PL/SQL 控制结构;可以对SQL 语句的处理进行显示控制,便于对表的行数据逐条进行处理。 

游标并不是一个数据库对象,只是存留在内存中 

 操作步骤: 

 •  声明游标 

 •  打开游标 

 •  取出结果,此时的结果取出的是一行数据 

 •  关闭游标 

例如:

--简单循环 Declare Cursor c is Select * from emp; v_emp c%roetype; begin open c; loop fetch c into v_emp; exit when (c%notfound); dbms_output.put_line(v_emp.ename); end loop; close c; end; --while循环: Declare Cursor c is Select * from emp; v_emp c%roetype; begin open c; loop fetch c into v_emp; while (c%notfound) loop; dbms_output.put_line(v_emp.ename); fetch c into v_emp; end loop; close c; end;   --for循环 Declare Cursor c is Select * from emp; v_emp c%roetype; begin for v_emp in c loop dbms_output.put_line(v_emp.ename); end loop; end;  

使用游标时推荐使用for循环,简单不易出错。

 

 

 

 

 

你可能感兴趣的:(oracle_7 视图 索引 游标)