oracle数据库面试总结

(一)存储过程

一.什么是存储过程?有哪些优点

存储过程是一些预编译的SQL语句是有名字的sql语句块。

优点:

1)执行效率比较高

2)可以减少网络通信,提高通信速率

3)安全性高,执行存储过程需要有一定权限的用户

4)一次创建,多次使用;

缺点:

1.移植性差;

二.用什么来调用?

1)可以用一个命令对象来调用存储过程

2)可以供外部程序调用

三.存储过程与函数的区别?

1.存储过程声明用procedure函数声明用function

2.存储过程声明时不需返回类型函数声明时要返回类型,而且至少要包括一个有效的return语句

3.存储过程可作为一个独立的PL/SQL语句来执行函数不能独立执行,必须作为表达式的一部分调用

4.存储过程SQL语句(DML 或SELECT)中不可调用函数SQL语句(DML 或SELECT)中可以调用

(二)索引

.索引是什么?有什么作用以及优缺点?

索引是加快检索表中数据的方法相当于书籍中的目录,索引允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。

优点:

1. 索引加快数据库的检索速度;

2. 唯一索引可以确保每一行数据的唯一性;

3. 通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能;

缺点:

1.索引减慢了数据录入的速度,同时也增加了数据库的尺寸大小。

2.索引降低了插入、删除、修改等维护任务的速度;

3..索引需要占物理和数据空间;

二.使用索引查询一定能提高查询的性能吗?为什么

通常,通过索引查询数据比全表扫描要快但也不是绝对的

原因:

1. 索引需要空间来存储,也需要定期维护

2. 每当有记录在表中增减或索引列被修改时,索引本身也会被修改. 这意味着每条记录的insert,delete,update将为此多付出4,5 次的磁盘input/output.

3. 因为索引需要额外的存储空间和处理,那些不必要的索引反而会使查询反应时间变慢.使用索引查询不一定能提高查询性能

三.索引范围查询(index range scan)适用于两种情况:

(1)基于一个范围的检索,一般查询返回结果集小于表中记录数的30%

(2)基于非唯一性索引的检索

.什么样的字段适合建索引?

1.唯一;2.不为空;3.经常被查询的字段;

五.索引类型有哪些?

逻辑上:

1.single column 单行索引 2.concatenated 多行索引

3.unique 唯一索引        4.nonunique 非唯一索引

5.function-based 函数索引6.domain 域索引 物理上:

7.partitioned 分区索引     8.nonpartitioned 非分区索引

B-tree :

Normal 正常型B树; 2.rever Key 反转型B树 ;

3.Bitmap 位图索引;

)什么是事务?

事务是:事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,要么全部执行,要么全部不执行,要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性

(四)数据库的乐观锁和悲观锁是什么? orcle 是行级锁

数据库管理系统(DBMS)中并发控制的任务是确保在多个事务同时存取同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。

悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作

乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。

(五)drop、delete与truncate删除

一.drop、delete与truncate的区别

1.delete和truncate只删除表的数据不删除表的结构

2.速度: drop> truncate >delete

3.delete语句是dml,这个操作会进行事务提交之后才生效;

4.如果有相应触发器被触发时,truncate,drop删除不触发触发器因为它们的ddl;

5.truncate table :删除内容、释放空间但不删除定义。

delete table: 删除内容不删除定义,不释放空间。

drop table :删除内容和定义,释放空间。

6.delete 语句每次删除一行,并在事务日志中为所删除的每行记录一项TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放

.drop、delete与truncate分别在什么场景之下使用?

1.删除表时,用drop;

2.删除部分数据行时候,用delete from 表名where条件;

3.保留表而删除所有数据的时候用truncate;

(六)

一.超键、候选键、主键、外键分别是什么?

1.超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。

2.候选键:最小超键,即没有冗余元素的超键。

3.主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。

4.外键:在一个表中存在的另一个表的主键称此表的外键。

二.主键和外键的区别?

1.主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;

2.外键和另一张表的主键关联,不能创建对应表中不存在的外键。

视图

一.什么是视图?

视图通常是有一个表或者多个表的行或列的子集;

二.视图的优缺点

优点:

1)对数据库的访问,视图可以有选择性的选取数据库里的一部分。

3)用户通过简单的查询可以从复杂查询中得到结果。

3)维护数据的独立性,试图可从多个表检索数据。

4)对于相同的数据可产生不同的视图。

缺点:

查询视图时,必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,那么就无法更改数据;

三.视图的使用场景有哪些?

1.把多个表查询结果联合起来;

2.查询的数据来源于不同的表。

四.表和视图的关系

1.视图就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。

2.表就是关系数据库中实际存储数据用的。

)三个范式。

1.第一范式:列不可再分;

2.第二范式:行可以唯一区分,主键约束 ;

3.第三范式:表的非主属性不能依赖与其他表的非主属性;

4.外键约束 且三大范式是一级一级依赖的,第二范式建立在第一范式上,第三范式建立第一第二范式上;

(九)触发器

一.触发器的作用?

触发器是一种特殊的存储过程,主要是通过事件来触发而被执行的

1.可以强化约束,来维护数据的完整性和一致性;

2.可以跟踪数据库内的操作从而不允许未经许可的更新和变化;

3.可以联级运;

(十)在数据库中查询语句速度很慢,如何优化?

1.建索引 ;

2.减少表之间的关联 ;

3.优化sql,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引,把数据量大的表排在前面;

4.简化查询字段,对返回结果的进行控制,尽量返回少量数据 ;

5.尽量用PreparedStatement来查询,不要用Statement

(十一)union和union all有什么不同?  并集

union: 显示两个表的全部内容,删除重复行,相同的行在结果中只显示一次。

union all:显示两个表的全部内容,不删除重复,结果为多集,相同的数据会出现多次。

注:从效率上说,union all 要比union快很多;

(十二)char、Varchar2和varchar有什么区别?

1)char(长度):存储固定长度的字符串。

2)varchar2(长度):存储可变长度的字符串,按实际长度存储;

3)varchar是varchar2的同义词,工业标准的varchar类型可以存储空字符串,但是oracle不能使用,尽管它保留以后可以使用的权利。

(十三)Oracle和Mysql的区别?

1)库函数不同。

2)Oracle是用表空间来管理的,Mysql不是。

3)显示当前所有的表、用户、改变连接用户、显示当前连接用户、执行外部脚本的语句的不同。

4)分页查询时候时候,mysql用limit oracle用rownum。

(十四)Oracle语句有多少类型

Oracle语句分三类:DDL、DML、DCL。

1.DDL数据定义语言: create,drop,alter,truncate;

2.DML数据操控语言:insert,delete, update;

3.DCL数据库控制语言,grant, revoke;

(十五)order by与group by的区别

1.order by 排序;

2.group by 分组;

(十六)commit在哪里会运用?

oracle的commit是DML语句提交数据,commit即为从内存更新到物理文件。

(十七)什么是PL/SQL?

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

(十八)序列的作用

1.Oracle使用序列来生成唯一编号,用来处理一个表中自增字段。

2.Oracle序列是原子对象,并且是一致的。就是说,一旦您访问一个序列号,Oracle将在处理下一个请求之前自动递增下一个编号,从而确保不会出现重复值;

(十九)oracle基本数据类型

1)字符串类型 char、varchar2;

2)数字类型 number;

3)浮点类型 binary_float、binary_double、float

4)日期类型 date、 timestamp  (日期和时间)

5)LOB类型 blob(存放二进制)、clob、nclob、bfile


猜你喜欢

转载自blog.csdn.net/qq_39870734/article/details/79529108