邹瑞20201204

总结

视图[应用]

视图就是封装了一条复杂查询的语句,视图提供了一个查询的窗口,所有的数据来自于原表。 视图是从一个或多个表导出的虚拟的表,其内容由查询定义。具有普通表的结构,但是不实现数据存 储。

创建视图需要有 dba 角色或者 create view 权限才可以

--注:查询角色权限SQL select * from role_sys_privs where role='CONNECT';

创建视图的语法:CREATE VIEW 视图名称 AS 子查询

CREATE OR REPLACE VIEW 视图名称 AS 子查询

如果视图已经存在我们可以使用此语法来创建视图,这样已有的视图会被覆盖。

我们在修改视图中的数据时,原表中的数据也发生了改变。所以我们一般不推荐去修改视图中的数据。 这时我们可以设置视图为只读。

CREATE OR REPLACE VIEW 视图名称 AS 子查询 WITH READ ONLY

索引[应用]

索引是用于加速数据读取的数据对象。合理的使用索引可以大大降低 i/o 次数,从而提高数据访问性能。 索引就是在表的列上构建一个二叉树达到提高查询速度的目的,但是会影响增删改的效率。

索引有一下几种: 单列索引:单列索引是基于单个列所建立的索引

复合索引:复合索引是基于两个列或多个列的索引。

-- 创建单列索引 CREATE index 索引名 on 表名(列名)

-- 创建多列索引 Create index emp_idx1 on emp(job,ename);

单列索引触发规则是 where 条件必须是索引列的原始值。

复合索引中第一列是优先检索列,如果要触发复合索引必须包含优先检索列的原始值。 (最左前缀原则)

查看sql有没触发索引

-- 创建执行计划 explain plan for select * from emp where empno = 7788;

-- 查看执行计划结果 select * from table(dbms_xplan.display);

索引的使用原则:

在大表上建立索引才有意义

在 where 子句后面或者是连接条件上的字段建立索引

表中数据修改频率高时不建议建立索引 列值比较单一的列(重复数据较多的列)不建议建立索引,如性别等

像单行函数、模糊查询、IS NULL、IS NOT NULL、以及运算都会影响索引的触发。

PL/SQL

PL/SQL块发送给服务器后,先被编译然后执行,对于有名称的PL/SQL块(比如下一章讲解的子程 序)可以单独编译,永久的存储在数据库中,随时准备执行。PL/SQL的优点还有:

  1. 支持SQL SQL是访问数据库的标准语言,通过SQL命令,用户可以操纵数据库中的数据。PL/SQL支持所有 的SQL数据操纵命令、游标控制命令、事务控制命令、SQL函数、运算符和伪列。同时PL/SQL和 SQL语言紧密集成,PL/SQL支持所有的SQL数据类型和NULL值。
  2. 支持面向对象编程 PL/SQL支持面向对象的编程,在PL/SQL中可以创建类型,可以对类型进行继承,可以再子程序中 重载方法等。
  3. 更好的性能 SQL是非过程语言,只能一条一条执行,而PL/SQL把一个PL/SQL块统一进行编译后执行,同时还 可以把编译好的PL/SQL块存储起来,以备重用,减少了应用程序和服务器之间的通信时间, PL/SQL是快速而高效的。
  4. 可移植性 使用PL/SQL编写的应用程序,可以移植到任何操作系统平台上的Oracle服务器,同时还可以编写 可移植程序库,在不同环境中重用。
  5. 安全性 可以通过存储过程对客户机和服务器之间的应用程序逻辑进行分隔,这样可以限制对Oracle数据 库的访问,数据库还可以授权和撤销其他用户访问的能力。

PL/SQL循环控制

LOOP循环

LOOP

--循环体

END LOOP;

  1. 循环体在LOOP和END LOOP之间,在每个LOOP循环体中,首先执行循环体中的语句序列,执行 完后再重新开始执行。
  2. 在LOOP循环中可以使用EXIT或者[EXIT WHEN 条件]的形式终止循环。否则该循环就是死循环。

FOR循环

FOR循环需要预先确定循环的次数,可通过给循环变量指定下限和上限来确定循环运行的次数,然后循 环变量在每次循环中递增(或者递减)。FOR循环的语法是:

FOR 循环变量 IN [REVERSE] 循环下限..循环上限 LOOP --循环体 END LOOP;

循环变量:该变量的值每次循环根据上下限的REVERSE关键字进行加1或者减1。 REVERSE:指明循环从上限向下限依次循环。

标签

评论

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1