oracle

Posted on 2018-06-08 21:47  yan束子  阅读(127)  评论(0)    收藏  举报

1、PL/SQL是什么

PL/SQL是Oracle数据库对SQL语句的扩展,把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言。

一,游标是什么?

                 游标是一段私有的SQL工作区,也就是一段内存区域,用于暂时存放受SQL语句影响到的数据。通俗理解就是将受影响的数据暂时放到了一个内存区域的虚表中,而这个虚表就是游标。游标的一个常见用途就是保存查询结果,以便以后使用。游标的结果集是由SELECT语句产生,如果处理过程需要重复使用一个记录集,那么创建一次游标而重复使用若干次,比重复查询数据库要快的多。

二,作用是什么?

                  1,大家都知道数据库中的事物可以回滚,而游标在其中起着非常重要的作用,由于对数据库的操作我们会暂时放在游标中,只要不提交,我们就可以根据游标中内容进行回滚,在一定意义有利于数据库的安全。

                 2,当你要处理的结果集比较庞大,而你要对某一行或几行进行操作的时候,要考虑使用游标!特别是对结果集中第几行进行行操作的时候,一般可以考虑使用游标!但也不是唯一的方法,可以利用别的方法来替代!

  三,类型:

                1,隐式游标:增删改等操作Oracle都会自动创建游标,暂时保存操作结果,也就是能够回滚的操作都会引发游标的创建。

                2,显示游标:由开发人员通过程序显式控制,用于从表中取出多行数据,并将多行数据一行一行的单独进行处理.

 五,游标简单认识了,我们来看看游标的具体使用:

           1,先看一下简单的使用游标四步骤:

步骤

关键词

说明

1

在DECLARE中cursor

声明游标,创建一个命名的查询语句

2

Open

打开游标

3

Fetch

取出游标中的一条记录装入变量

4

Close

释放游标

2. 什么是存储过程,使用存储过程的好处。

存储过程(Stored Procedure  )是一组为了完成特定功能的 SQL  语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

 优点:

   (1)允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。

   (2)允许更快执行,如果某操作需要执行大量  SQL  语句或重复执行,存储过程比  SQL  语句执行的要快。

   (3)减少网络流量,例如一个需要数百行的  SQL  代码的操作有一条执行语句完成,不需要在网络中发

送数百行代码。

   (4)  更好的安全机制,对于没有权限执行存储过程的用户,也可授权他们执行存储过程。

3. Oracle 怎么进行分页查询?

Oracle是通过rownum来进行分页,这是效率最高的方法

Select * from (select rownum r,a from tabName where rownum  <=20)

Where r > 10;

4. 存储过程和函数的特点和区别?

特点:

(1)一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。

(2)对于存储过程来说可以返回参数,而函数只能返回值或者表对象。

(3)存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于 FROM 关键字的后面。

区别:

(1)函数必须有返回值,而过程没有.

(2)函数可以单独执行.而过程必须通过 execute 执行.

(3)函数可以嵌入到 SQL 语句中执行.而过程不行.

 其实我们可以将比较复杂的查询写成函数.然后到存储过程中去调用这些函数. 

5. 触发器的作用有哪些?应用场景?

     数据库触发器是一个与表相关联的、存储的PL/SQL程序。每当一个特定的数据操作语句(insert 、update、delete)在指定的表上发出时,oracle自动地执行触发器中定义的语句序列

1. 触发器可以通过数据库中的相关表实现级联更改;通过级联引用完整性约束可以更有效地执行这些更改。

2. 触发器可以强制定义比用CHECK约束的更为复杂地约束。与CHECK约束不同,触发器可以引用其它表中的列。例如:触发器可以使用另一个表中的select比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。

3. 触发器还可以强制执行业务规则

4.触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。

能够点燃触发器的事件有:
1 DML语句(INSERT,UPDATE,DELETE);
2 DDL语句;
3 系统事件(System Event),如数据库的关闭/启动;
4 用户事件。

存储过程与SQL语句如何抉择?

基于实际应用的经验,给予如下建议:

1、在一些高效率或者规范性要求比较高的项目,建议采用存储过程
2、对于一般项目建议采用参数化命令方式,是存储过程与SQL语句一种折中的方式
3、对于一些算法要求比较高,涉及多条数据逻辑,建议采用存储过程

总结:有时候数据不能一次性处理完,而要一条一条的进行处理,这个时候就可以用游标了。

索引是为了提高查询的效率的,分为聚集索引和非聚集索引。一个表中只能有一个聚集索引,多个非聚集索引。

视图可以看成是一个虚拟的表,有时候可以用来控制数据查询的权限。可以针对不同的用户授权访问某些视图,这样就可以控制某个表或者某些表中的部分字段对该授权的用户可见。另外对于单表上建的视图可以进行更新,但是在多个表上建的视图一般是不能更新的。

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3