与你一同进步成长

在IT行业中,数据库可以说是软件运行的核心要素,数据库的应用也多种多样,有收费的oracle亦有免费的mysql,由于mysql数据库的免费特性,在企业中的普及度也是最高的,今天就来总结数据库相关的面试题,留给以后跳槽复习用。

答:存储过程是一组予编译的SQL语句,它的优点有:

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

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

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

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

Oracle中的函数与存储过程的区别:

A:函数必须有返回值,而过程没有.

B:函数可以单独执行.而过程必须通过execute执行.

C:函数可以嵌入到SQL语句中执行.而过程不行.

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

Oracle中的函数与存储过程的特点:

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

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

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

答:事务是指一个工作单元,它包含了一组数据操作命令,并且所有的命令作为一个整体一起向系统提交或撤消请求操作,即这组命令要么都执行,要么都不执行。

原子性:事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

一致性:事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。

隔离性:由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。

持久性:事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。

答:索引象书的目录类似,索引使数据库程序无需扫描整个表,就可以在其中找到所需要的数据,索引包含了一个表中包含值的列表,其中包含了各个值的行所存储的位置,索引可以是单个或一组列,索引提供的表中数据的逻辑位置,合理划分索引能够大大提高数据库性能。

答:触发器是一种特殊类型的存储过程,触发器主要通过事件触发而被执行的,触发器的优点:

①.强化约束,触发器能够提供比CHECK约束。

②.跟踪变化,触发器可以跟踪数据库内的操作,从而不允许未经允许许可的更新和变化。

③.联级运算,比如某个表上的触发器中包含对另一个表的数据操作,而该操作又导致该表上的触发器被触发。

事前触发器运行于触发事件发生之前,通常可以获取事件之前和新的字段值

事后触发器运行于触发事件发生之后。

语句级触发器可以在语句执行前或后执行,

行级触发在触发器所影响的每一行触发一次

答:视图是一种虚拟表,虚拟表具有和物理表相同的功能,可以对虚拟表进行增该查操作,视图通常是一个或多个表的行或列的子集,视图的结果更容易理解(修改视图对基表不影响),获取数据更容易(相比多表查询更方便),限制数据检索(比如需要隐藏某些行或列),维护更方便。

游标对查询出来的结果集作为一个单元来有效的处理,游标可以定位在结果集的特定行、从结果集的当前位置检索一行或多行、可以对结果集中当前位置进行修改。

使用索引

建立分区,分区索引

使用存储过程

①. 对操作符的优化 尽量不采用不利用索引的操作符    如:in ,not in , is nul, is not null,<>等    ②. 对条件字段的一些优化       采用函数处理的字段不能利用索引,      进行了显式或隐式的运算的字段不能进行索引     条件内包括了多个本表的字段运算时不能进行索引

③. 在业务密集的SQL当中WHERE后面的条件顺序影响

④. 应用ORACLE的HINT(提示)处理    ⑤. 查询表顺序的影响

不能。如果返回的行数目较大,使用全表扫描的性能较好。

今天就总结大概10条,剩下的都放在明天的推送中,小伙伴们记得好好复习哟~