编写PL/SQL需要知道的常识

一 :sql select的执行顺序

顺序为:from, where, group by, having, order by, limit

二:存储过程的好处

1、存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。

2、允许模块化程序设计,类似方法的复用

3、存储过程主要是在服务器上运行,减少对客户机的压力。

三:那些字段适合建立索引

1、表的主键、外键必须有索引;
2、数据量超过300的表应该有索引;
3、经常与其他表进行连接的表,在连接字段上应该建立索引;
4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
5、索引应该建在选择性高的字段上;
6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:
A、正确选择复合索引中的主列字段,一般是选择性较好的字段;
B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;
C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;
D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;
E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;
8、频繁进行数据操作的表,不要建立太多的索引;
9、删除无用的索引,避免对执行计划造成负面影响;

四:SQL的约束

约束主要有一下几种:

NOT NULL : 用于控制字段的内容一定不能为空(NULL)。

UNIQUE : 控制字段内容不能重复,一个表允许有多个 Unique 约束。

PRIMARY KEY: 也是用于控制字段内容不能重复,但它在一个表只允许出现一个。

FOREIGN KEY: FOREIGN KEY 约束用于预防破坏表之间连接的动作,FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。 CHECK: 用于控制字段的值范围。 DEFAULT: 用于设置新记录的默认值。

DEFAULT: 用于设置新记录的默认值。

五: 引起索引失效

1、在索引列上使用函数。如SUBSTR,DECODE,INSTR等,对索引列进行运算.需要建立函数索引就可以解决了。

2、新建的表还没来得及生成统计信息,分析一下就好了

3、基于cost的成本分析,访问的表过小,使用全表扫描的消耗小于使用索引。

4、使用<>、not in 、not exist,对于这三种情况大多数情况下认为结果集很大,一般大于5%-15%就不走索引而走FTS。

5、单独的>、<。

6、like "%_" 百分号在前。

7、单独引用复合索引里非第一位置的索引列。

8、字符型字段为数字时在where条件里不添加引号。

9、当变量采用的是times变量,而表的字段采用的是date变量时.或相反情况。

10、索引失效,可以考虑重建索引,rebuild online。

11、B-tree索引 is null不会走,is not null会走,位图索引 is null,is not null  都会走、联合索引 is not null 只要在建立的索引列(不分先后)都会走。

时间: 2024-08-27 03:35:33

编写PL/SQL需要知道的常识的相关文章

《专业级Oracle Database 12c安装、配置与维护》之在SQL*Plus中编写PL/SQL

当编写PL/SQL程序时,可以用多种方式来运行.可以直接在SQL*Plus(或某些其他SQL环境,如SQL Developer)中运行,也可以将之存储在数据库中,然后从SQL环境或程序运行.当在数据库中存储程序时,该程序被称为存储程序(stored program)或存储对象(stored object).这在本章稍后讲解.现在,让我们来讨论如何使用SQL*Plus编写程序.虽然是从SQL*Plus的环境内部说明这个例子,但这些程序也可以使用其他的SQL接口,如SQLDeveloper.TOAD

编写PL/SQL程序使用数据泵导出导入数据

1.什么是数据泵?就是oracle的一个PL/SQL程序包 dbms_datapump2.数据泵技术是Oracle Database 10g 中的新技术,它比原来导入/导出(imp,exp)技术快15-45倍.速度的提高源于使用了并行技术来读写导出转储文件. expdp使用 使用EXPDP工具时,其转储文件只能被存放在DIRECTORY对象对应的OS目录中,而不能直接指定转储文件所在的OS目录.因此使用EXPDP工具时,,必须首先建立DIRECTORY对象,并且需要为数据库用户授予使用DIREC

[Oracle系列整理04] oracle pl/sql 基础

PL/SQL块中只能直接嵌入SELECT,DML(INSERT,UPDATE,DELETE)以及事务控制语句 (COMMIT,ROLLBACK,SAVEPOINT),而不能直接嵌入DDL语句(CREATE,ALTER,DROP)和DCL语句 (GRANT,REVOKE) 1.检索单行数据    1.1使用标量变量接受数据  v_ename emp.ename%type;  v_sal   emp.sal%type;  select ename,sal into v_ename,v_sal fro

Oracle PL/SQL随堂笔记总结

1.pl/sql编程 1.理解oracle的pl/sql的概念    2.掌握pl/sql编程技术(过程.函数.触发器)    pl/sql是标准sql语句的扩展    简介        1.过程.函数.触发器都是由pl/sql编写        2.过程.函数.触发器是在oracle中        3.pl/sql是非常强大的过程语言        4.过程.函数等可以在java程序被调用    学习必要性:        1.提高应用程序的性能        2.模块化的设计思想    

oracle12 pl/sql

pl/sql块介绍 介绍   块(block)是pl/sql的基本程序单元,编写pl/sql程序实际上就是编写pl/sql块,要完成相对简单的应用功能,可能只需要编写一个pl/sql块,但是如果想要实现复杂的功能,可能需要在一个pl/sql块中嵌套其它的pl/sql块. 块结构示意图 pl/sql块由三个部分构成:定义部分,执行部分,例外处理部分. 如下所示: declare /*定义部分——定义常量.变量.游标.例外.复杂数据类型*/ begin /*执行部分——要执行的pl/sql语句和sq

oracle pl/sql 基础

一.pl/sql developer开发工具pl/sql developer是用于开发pl/sql块的集成开发环境(ide),它是一个独立的产品,而不是oracle的一个附带品. 二.pl/sql介绍开发人员使用pl/sql编写应用模块时,不仅需要掌握sql语句的编写方法,还要掌握pl/sql语句及语法规则.pl/sql编程可以使用变量和逻辑控制语句,从而可以编写非常有用的功能模块.比如:分页存储过程模块.订单处理存储过程模块.转账存储过程模块.而且如果使用pl/sql编程,我们可以轻松地完成非

Oracle PL/SQL编程之变量

注: 以下测试案例所用的表均来自与scott方案,使用前,请确保该用户解锁. 1.简介 和大多数编程语言一样,在编写PL/SQL程序时,可以定义常量和变量,在pl/sql程序中包括有: a.标量类型(Scalar) b.复合类型(Composite) c.参照类型(Refrence) d.lob(large object)类型 下面来一一介绍 2.标量(Scalar)类型  ---常用类型 在编写pl/sql语句时,如果需要用到变量,那么就需要在定义部分定义变量.pl/sql中定义变量个常量的语

PL/SQL数据库开发那点事

PL/SQL数据库开发那点事-->编程,存储程序 在SQL*plus 中编写PL/SQL程序,并在SQL*plus 中执行它, PL/SQL块的代码就存放在SQL*plus的缓冲区中.如果在SQL*plus 中执行了其他的SQL语句或PL/SQL块,缓冲区中就会存放新的代码,原来的PL/SQL块就会被从缓冲区中清除出去.这种没有名称只是临时存放在缓冲区中的PL/SQL块叫做匿名块.匿名块就是没有名字的PL/SQL块,它仅存放在缓冲区中,只能在当前SQL*plus环境中执行.如果希望PL/SQL块

Oracle数据库—— PL/SQL基础编程

一.涉及内容 1. 掌握PL/SQL程序块的结构,理解并熟悉各种变量的应用. 二.具体操作 (一)使用system用户登录SQL*PLUS,使用SQL语句创建用户:u_你的姓名首字母(例如:u_zs),密码为: t_你的学号后三位(例如:t_165).并授予新用户连接数据库的权限,然后以新用户连接数据库. 1. 创建用户u_sxl 2. 授予新用户u_sxl连接数据库的权限 3. 以新用户u_sxl连接数据库 (二)使用scott用户连接数据库,使用SQL语句创建表dep_你的学号后三位(例如: