邹瑞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的优点还有:
- 支持SQL SQL是访问数据库的标准语言,通过SQL命令,用户可以操纵数据库中的数据。PL/SQL支持所有 的SQL数据操纵命令、游标控制命令、事务控制命令、SQL函数、运算符和伪列。同时PL/SQL和 SQL语言紧密集成,PL/SQL支持所有的SQL数据类型和NULL值。
- 支持面向对象编程 PL/SQL支持面向对象的编程,在PL/SQL中可以创建类型,可以对类型进行继承,可以再子程序中 重载方法等。
- 更好的性能 SQL是非过程语言,只能一条一条执行,而PL/SQL把一个PL/SQL块统一进行编译后执行,同时还 可以把编译好的PL/SQL块存储起来,以备重用,减少了应用程序和服务器之间的通信时间, PL/SQL是快速而高效的。
- 可移植性 使用PL/SQL编写的应用程序,可以移植到任何操作系统平台上的Oracle服务器,同时还可以编写 可移植程序库,在不同环境中重用。
- 安全性 可以通过存储过程对客户机和服务器之间的应用程序逻辑进行分隔,这样可以限制对Oracle数据 库的访问,数据库还可以授权和撤销其他用户访问的能力。
PL/SQL循环控制
LOOP循环
LOOP
--循环体
END LOOP;
- 循环体在LOOP和END LOOP之间,在每个LOOP循环体中,首先执行循环体中的语句序列,执行 完后再重新开始执行。
- 在LOOP循环中可以使用EXIT或者[EXIT WHEN 条件]的形式终止循环。否则该循环就是死循环。
FOR循环
FOR循环需要预先确定循环的次数,可通过给循环变量指定下限和上限来确定循环运行的次数,然后循 环变量在每次循环中递增(或者递减)。FOR循环的语法是:
FOR 循环变量 IN [REVERSE] 循环下限..循环上限 LOOP --循环体 END LOOP;
循环变量:该变量的值每次循环根据上下限的REVERSE关键字进行加1或者减1。 REVERSE:指明循环从上限向下限依次循环。
近期评论