视图:是一个封装了各种复杂查询的语句,就称为视图
创建视图: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,但是对经常insert,delte尤其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循环,简单不易出错。