admin 管理员组

文章数量: 1184232


2024年3月19日发(作者:go语言电子书)

oracle数据库面试题目汇总

1.对字符串操作的函数

答:ASCII() --函数返回字符表达式最左端字符的ASCII 码值

CHR() --函数用于将ASCII 码转换为字符

--如果没有输入0 ~ 255 之间的ASCII 码值CHR 函数会返回一个

NULL

--应该是必须给chr()赋数字值

concat(str,str)连接两个字符串

LOWER() --函数把字符串全部转换为小写

UPPER() --函数把字符串全部转换为大写

LTRIM() --函数把字符串头部的空格去掉

RTRIM() --函数把字符串尾部的空格去掉

TRIM() --同时去掉所有两端的空格

实际上LTRIM(),RTRIM(),TRIM()是将指定的字符从字符串中裁减

其中LTRIM(),RTRIM()的格式为xxxx(被截字符串,要截掉的字符

串),但是

TRIM()的格式为TRIM(要截掉的一个字符from 被截的字符串)

SUBSTR() --函数返回部分字符串

INSTR(String,substring) --函数返回字符串中某个指定的子串出

现的开始

位置,如果不存在则返回0

REPLACE(原来的字符串,要被替换掉的字符串,要替换成的字符

串)

SOUNDEX() --函数返回一个四位字符码

--SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函

数对数字

和汉字均只返回NULL 值

2、事务概念

答案:事务是这样一种机制,它确保多个SQL语句被当作单个工

作单元来处理。事务具有以下的作用:

* 一致性:同时进行的查询和更新彼此不会发生冲突,其他用户不

会看到发生了变化但尚未提交的数据。

* 可恢复性:一旦系统故障,数据库会自动地完全恢复未完成的

事务。

3、oracle中查询系统时间

答:select sysdate from dual

4、触发器的作用,什么时候用触发器,创建触发器的步骤,触发

器里是否可以有

commit, 为什么

答案:触发器是可以由事件来启动运行的,存在于数据库服务器

中的一

个过程。

他的作用:可以实现一般的约束无法完成的复杂约束,从而实现

更为复

杂的完整性要求。

使用触发器并不存在严格的限定,只要用户想在无人工参与的情

况下完

成一般的定义约束不可以完成的约束,来保证数据库完整性,那

么就可

以使用触发器。

由于触发器主要是用来保证数据库的完整性的,所以要创建一个

触发器,首先要明确该触发器应该属于那一种(DML,INSTEAD OF,

SYSTEM)因

为他们各有个的用途;其次就是要确定触发器被触发以后所设计

到的数

据。

出发器中不可以使用COMMIT。

5.数字函数

abs()绝对值 exp(value)e的value次幂ceil()大于等于该值的最小

整数floor()小于等于该值的最大整数trunc(value,precision)保留

precision个小数截取value r ound(value,precision)保留precision

个小数对value进行四舍五入sign()根据值为正负零返回1,-1,0

mod()取模操作power(value,exponent)value的exponent次幂sqrt()

求平方根

1.初级

4、关系数据库系统与文件数据库系统的区别在那里关系数据库系

统一般适用

那些方面

答案:

关系数据库系统文件系统的区别在于:

首先,关系性数据库的整体数据是结构化的,采用关系数据模型

来描述,这是它与文件系统的根本区别。(数据模型包括:数据结构,

数据操作以

及完整性约束条件)

其次,关系数据库系统的共享性高,冗余低可以面向整个系统,

而文件系

统则具有应用范围的局限性,不易扩展。

第三,关系数据库系统采用两级映射机制保证了数据的高独立性,

从而使

得程序的编写和数据都存在很高的独立性。这方面是文件系统无

法达到

的,它只能针对于某一个具体的应用。(两级映射:保证逻辑独

立性的外

模式/模式映射和保证物理独立性的内模式/模式映射。外模式:

用户模式,是数据库用户的局部数据的逻辑结构特征的描述。模式:

数据库全体数据

的逻辑结构特征的描述。内模式:也就是数据最终的物理存储结

构的描

述。)

第四,就是关系性数据库系统由统一的DBMS进行管理,从而为

数据提供

了如安全性保护,并发控制,完整性检查和数据库恢复服务。

5、触发器的概念,存储过程的概念.

答案:

触发器:是存储在数据库中的过程,当表被修改(增、删、改)

时它隐

式地被激发。

存储过程:是数据库语言SQL的集合,同样也存储在数据库中,

但是他是由其他应用程序来启动运行或者也可以直接运行。

6、基本SQL语句有哪些.

答案:

select、insert、update、delete、create、drop、truncate

1.中级

8、什么是事务一致性选择熟悉的数据库实现一个事务处理,如信

用卡提款.

答案:

事务的一致性:是事务原子性的体现,事务所对应的数据库操作

要么成功要么失败没有第三种情况。事务不管是提交成功与否都不能

影响数据库数据的一致性状态。

事务:用户定义的一个数据库操作序列,这些操作要么全部成功

完成要么全部不做,是一个不可分割的整体。定义事务的SQL语句有:

BEGIN TRANSACTION,COMMIT,ROLLBACK。

事务的原子性:就是事务所包含的数据库操作要么都做,要么都不

做.

事务的隔离性:事务对数据的操作不能够受到其他事务的影响。

事务的持续性:也就是说事务对数据的影响是永久的。

对'信用卡提款'这一事务而言就是要保证'提取到现金'和'卡帐号余

额'的修改要同时成功或失败.

BEGIN TRANSACTION

读取A的帐户余额BALANCE;

BALANCE=BALANCE-AMOUNT转帐金额;

IF(BALANCE<0)THEN

ROLLBACK;

ELSE

BEGIN

将A的新余额写回;

读取B的帐户余额BALANCEB;

BALANCEB=BALANCEB+AMOUNT转帐金额;

将B的新余额写回;

COMMIT;

END IF;

END;

9、实际编写和调试存储过程或触发器.

答案:

10、实现索引的方式索引的原理索引的代价索引的类型

答案:实现索引的方式有两种:针对一张表的某些字段创建具体

的索引,如对oracle: create index 索引名称on 表名(字段名);在创建

表时为字段建立主键约束或者唯一约束,系统将自动为其建立索引。

索引的原理:根据建立索引的字段建立索引表,存放字段值以及

对应记录的物理地址,从而在搜索的时候根据字段值搜索索引表的到

物理地址直接访问记录。

引入索引虽然提高了查询速度,但本身占用一定的系统存储容量和

系统处理时间,需要根据实际情况进行具体的分析.

索引的类型有:B树索引,位图索引,函数索引等。

11、view 的概念何时应用

答案:view 是对表级数据的多角度的透视,适用于对查询安全性、

灵活性有一定要求的环境

12、sql语句例外处理举例说明

答案:当sql 语句在执行过程中出现意外时,如查询时,未查询到结

果;更改时无记录等情况的应采取的措施.

以oracle为例:测试其对exception的理解.如

select 字段into 变量from table ;

若查询出多条记录,应增加exception 例外处理.

Oracle处理异常有三种:

1.预定义的例外处理,EXCEPTION WHEN exception_name

THEN

2.EXCEPTION_INIT产生例外

首先要declare 声明一个例外名;然后将例外名和错误代码绑定

pragma exception_init(错误名,错误代码);最后在EXCEPTION

处when

错误名then

3.用户自定义例外,不用EXCEPTION,当判断条件成熟时用

raise_application_error(-20000~~~-20999,提示信息)。

13、判断下列论述是否正确。(1) 一个事务中的某条SQL命令提

交时,其它SQL

命令可以不提交。(2) 在一个关系表中,主键可唯一标识一行记录。

(3) 一个关系表中的外键必定是另一表中的主键。(4) 回滚可以在事务

失败时,回到操作事务前的数据状态。

答案:(1)错误(2)正确(3)正确(4)正确

14、以下哪些手段可保证数据库中数据的完整性和一致性:(1)自

定义数据类型(2)触发器(3)主键和外键(4)事务

答案:(1)(2)(3)(4) (为什么有1)

15、使用存储过程访问数据库比直接用SQL语句访问有哪些优点

答案:存储过程是预编译过的,执行时勿须编译,执行速度更快;

存储过程封装了一批SQL语句,便于维护数据的完整性与一致性;可

以实现代码的复用。

1.高级

16、对于精通的数据库系统描述其体系结构,主要包括存储机制、

回滚机制、运

行机制等.

答案:对oracle 系统而言,描述sga的结构; 后台pmon,ckpt、

lgwr,smon等进程的功能;表空间的分配策略; 回滚段的结构

oracle的sga(系统全局区)包括的主要区有:数据库缓存区,

重做日志缓存区,共享池(数据字典缓存和库缓存),大池等。数据

库缓存区用来存放最近使用过的数据块主要和后台进程中的数据库写

进程(DBWR)以及数据文件发生关系;重做日志缓存区用于存放操作数

据库数据所产生的重做日志信息,与之合作的有重

做日志写进程(LGWR)和重做日志文件;共享池主要缓存

SQL/PLSQL,资源锁,控制信息等,其中的库缓存主要缓存被解析执

行过的SQL/PLSQL库缓存可分为共享SQL和私有SQL两个区,共享

SQL用于存放SQL语句的语法分析结果和执行计划,私有SQL则用来

存放与具体SQL语句执行有关的绑定变量,会话参数等。ORACLE实

例的另外一个重要部分就是其后台进程,主要的后台进程有:数据库

写进程(DBWR),重做日志写进程(LGWR),系统监视器

(SMON),进程监视器(PMON),检查点进程(CKPT)。

DBWR主要是对数据库缓存区中的脏冷数据进行写入数据文件操作;

LGWR主要是将对数据库数据操作所产生的重做日志信息写入到重做

日志文件中;SMON完成由于非正常关闭数据库的情况下重起数据库

时对数据库的恢复;PMON用来恢复失败的用户进程和服务进程,并

释放其所占的系统资源;CKPT可以表示数据库在此出处于完整状态。

逻辑存储结构:数据块BLOCK,区EXTENT,段SEGMENT,表

空间TABLESPACE

物理存储空间:表空间,数据文件,控制文件,日志文件,数据

字典

软件体系结构就是上边对SGA和后台进程的描述。

17、对于精通的数据库系统描述其数据一致性的保证机制,包括

lock,事务一致性

等.

答案:在并发环境下,采用多种机制保持其数据的一致性,如oracle

系统提供的事务级的一致性、行级锁、表级锁等等.

18、对精通的数据库系统描述其联机备份机制、恢复机制,考核其

对日志的理解.

答案:描述相关数据库的实时联机备份策略,如数据库系统在运行

中通过何种方式保证其数据的实时备份, 出现问题时,应采取何种办法从

联机备份进行恢复.

对对oracle而言,其archive online 备份方式应如何设置、修改什

么参数、如何安排备份空间等等.

19、精通的数据库系统描述性能优化方法,包括优化的策略、参数、

验证方法等. 答案:

20、Truncate; 与delete;的区别(这道题可以衍生出很多的问题比

如:想快速的清除一个很大的表中的数据应该用设么操作答案是:应

该用truncate。还有,在对两个相同纪录数的分别表使用了truncate,

和delete commit;后对这两个表进行count(*)统计记录数操作,那个

表速度会快些答案是:使用了truncate的会快些。)

21、写一个‘游标’并使用它。(这道题应该注意的是:在使用

游标后一定要记得关闭游标)。

Declare

Cursor cursor_name is

Select * from tablename;

Begin

Open cursor_name;

Loop

Fetch cursor_name into bianliang;

Exit when cursor_name%notfound;

Sql……..

End loop;

Close cursor_name;

End;

22、在创建表的时候会设置

pctfree 10

pctused 40

而创建表的索引的时候却没有

pctused 40

这是为什么

(这道题的主要思想是索引不能在pctused 40上得到什么好处)

23、使用过的最大的表有多少行纪录(这道题不是看应试者的技

术过不过关,而是考察应试者是否有大型数据库的管理操作经验)

不要对表的索引列进行函数操作,因为这样系统就不能使用索引,

使查询变得很慢,但是在ora8i以后就已经开始支持函数的索引,弥补

了这个不足。

24、ORACLE数据库启动与关闭的步骤

启动:启动实例----加载数据库数据-----打开数据库

关闭:关闭数据库----卸载数据库数据----关闭实例

25、Delete与truncate的区别

delete一般用于删除少量记录的操作,而且它是要使用回滚段并

且要进行显示的提交事务。而truncate则使用于大量删除数据,而且

隐式提交事务,其速度要比使用delete快的多。

26、DDL和DML分别代表什么

DDL表示数据定义语言,在ORACLE中主要包括CREATE,

ALTER,DROP

DML表示数据操作语言,主要的DML有SELECT,INSERT,

UPDATE,DELETE

28、Javascript中动态效果时调用的函数。

29、数据库中有若干条相同的记录,删除到只剩下一条记录。如

何做,请用SQL 语句通过ROW_ID来写出执行过程。

Delete table_name where ziduan=’’and rowed<(select

max(rowed) from table_name where ziduan=’’);

30、oracle数据库表存放到磁盘什么地方(什么物理空间上——

大概意思)Oracle数据库表存放在数据文件上。

31、Oracle使用什么语句给用户分配权限

GRANT TO 语句

32、你在项目现场,用户要求你向正在运行的表中添加一个字段,

你该怎么做第一种方法:关闭数据库,然后使用受限模式打开,由

sys/sysdba来进行

第二种方法:不关闭数据库,将数据库置于静默状态在

SYS/SYSDBA模式下用ALTER SYSTEM QUISCE RESTRICTED,这种

状态下只有SYS/SYSDBA才可以对数据库进行操作,修改完毕之后再

退出静默状态ALTER SYSTEM UNQUISCE

在这里复习到了数据库的两种特殊状态:静默状态(QUISCE)和挂

起状态

静默状态就是只有特殊权限的SYS/SYSDBA才可以对数据库进行

操作,使用ALTER SYSTEM QUISCE RESTRICTED以后系统将等候活

动着的会话主动结束,同时阻止建立新的会话,系统挂起所有的SQL

语句,等恢复以后再重新激活会话执行挂起的SQL。

挂起状态就是系统将数据库所有对物理文件(数据文件,控制文

件,日志文件)的I/O操作都暂停,但是并不禁止非DBA用户对数据

库进行操作。这种状态主要用于进行数据库备份。

33、Oracle中回滚的概念回滚段有什么作用。

回滚就是在事务提交之前将数据库数据恢复到事务修改之前数据

库数据状态。回滚段就是为回滚提供依据,记录的是事务操作数据库

之前的数据或者对应于以前操作的操作,这个内容要根据以前的操作

而定。比如说以前事务操作如果是UPDATE那么回滚段则存储

UPDATE以前的数据,如果事务是DELETE操作那么存储的则是与之

相对应的INSERT操作语句,相反如果事务操作是INSERT那么记录相

应的则是DELETE操作了。

34、Oracle的8I和9I有什么区别

35、一张表有10万条记录,如何删除其中的任意20条记录请用


本文标签: 数据库 数据 操作 事务 函数