2024年4月12日发(作者:)

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 round(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

ION_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条记录?请用SQL语句进

行操作

36、客户端如何访问服务器端的Oracle?如果客户端无法访问服务器端的

oralce,可能会是什么原因?

客户端通过网络或者进程方式以合法的用户身份来取得和服务器端Oracle的

连接。如果客户端无法访问服务器端Oracle可能出现的原因是:用户无权访问;服

务器端数据库并没有打开(启动数据库的第三步没有完成);如果服务器是在共享模

式下的则有可能没有对应于该客户所使用的通信协议的调度进程Dnnn。

37、Oracle中执行语句错误时去哪里查找错误信息?

Select * from USER_ERRORS

38、select语句需要提交吗?insert和update语句呢?

39、在执行insert语句并提交后,这些提交的数据存储到什么地方??

被存储到数据文件中

40、Oracle中有哪些类型的文件?

数据文件,控制文件,日志文件和数据字典

41、介绍一下Oracle的体系结构?

逻辑体系结构:块,区,段,表空间

物理体系结构:表空间,三大文件

软件体系结构:SGA,后台进程

42、谈谈对oracle的row_ id是否理解?请简述?

ORACLE的row_id是一个伪列,其个是为18个字节可将这18个字节用6363

来划分,分别表示段编号,数据文件编号,数据块编号和记录编号。

Row_id表示的是一个记录的物理存储地址。

43、oracle中如何删除用户?

Oracle中使用DROP USER来删除用户,如果使用DROP USER CASCADE那么用

户的对象也同时被删除掉。为了达到删除用户的效果而又不影响对用户下的对象的

使用可以使用alter user username account lock将用户锁定。

44、客户端对服务器端的oralce操作的流程是什么?

专用模式下:用户通过应用程序进程试图去得到一个与ORACLE数据库服务器

的连接?客户端通过网络传递连接请求,ORACLE服务器则使用监听进程监听用户请

求,并且来

验证用户身份,通过验证则为用户分配一专用服务进程?用户提交SQL语句?专

用服务进程则首先在SGA区的共享池中检查是否有与该SQL语句相似的已经被解析

执行并且缓存的SQL语句,如果有则采用它的解析结果和执行计划执行SQL语句,如

果没有则对SQL 语句进行语法解析生成执行计划?通过解析则执行操作获取数据?

将执行结果返回给客户。

共享模式下:与专用模式不同在于当监听程序验证用户的合法性以后并不为它

分配一个专用的服务进程,而是将该请求与响应的调度进程相联系起来,并将起放入

到一个请求队列中,最终由响应的Dnnn来从调度队列中获取一个请求并为之分配一

个空闲的服务进程,接下来有服务进程对该请求进行服务操作和专用方式下相同,处

理完成之后由服务进程先将结果放入一个返回队列最后再由调度进程(Dnnn)将返回

队列中的结果返回给对应的用户。

45、exits和in在ORALCE数据库中那个执行效率更高?

Exits执行效率比in高。因为:

46、如何判断游标已经到最后一行?

Cursor_name%notfound

47、聚簇索引和普通索引在不同的SQL语句中哪个效率更高??(笔试题,原题

回忆不起来,主题就是聚簇索引和普通索引的区别)

概念类:

聚合函数? Session的定义和用法?Oracle的存储过程?什么是构造函数?

48、简述Oracle中SGA的组成部分。

答:系统全局区包括:共享池、重做日志缓存区、数据高速缓存区,大池,JAVA

池。

49、简述Oracle的启动和关闭各有多少步骤?

启动:启动实例、装载数据库数据、打开数据库。

关闭:关闭数据库、卸载数据库数据、关闭实例。

50、在Oracle表空间的分类和作用,如排序时数据将放在什么表空间?

作用是为了突破存储容量的限制,是一个逻辑概念。排序数据放在临时表空

间。

51、执行COMMIT命令时,数据库将会发生什么改变,ROLLBACK呢?

答:commit 提交时首先是与事务对应的重做日志信息将被写入到数据库物理

文件中的重做日志文件中,至于是否会真正将事务操作的内容反映到数据文件还好

看DBWR是否启动了。在完成数据库的插入,删除和修改操作时,只有当事务提交到

数据库才算完成,有提交前只有操作数据库的本人才能看到,别人只有在最后提交完

成才可以看到。ROLLBACK回滚当前尚未提交的事务,使数据库恢复到事务操作前的

状态。

52、用命令创建用户,并为用户授权。

Create user user_name

identified by password /

identified externally/

identified blobally as ‘CN=user’

default tablespace tablespace_name

temporary tablespace tablespace_name;

grant role/privilege to user_name;

53、写一个存储过程,使employee(name,age,emp_no,salary)表中的salary

值在0-1000之间的员工的工资上涨20%,(提示:要求用到游标)

Cteate or replace procedure emp_sal

V_name %type;

V_emp_no _no%type;

V_salary %type;

Cursor cursor_sal is

Select name,emp_no,salary from employee where salary between 0 and

1000;

Begin

Open cursor_sal;

Loop

Fetch cursor_sal into v_name,v_emp_no,v_salary;

Exit when cursor_sal%notfound;

Update employee set salary=salary*1.2 where name=v_name and

emp_no=v_emp_no; End loop;

Close cursor_sal;

Commit;

End;

54、Oracle数据库都有哪些类型的文件?

数据文件,控制文件,日志文件,参数文件

55、用命令创建表空间、用户,并为用户授权、收回权限。

Create tablespace tabllespacename

Datafile ‘f: size 20m

Default storage(

Initial 512k

Next 512k

minextents 2

pctincrease 50%

maxExitnts 2048)

minimum extent 512k

logging

online

permanent

extent management dictionary;

回收权限:revoke privilege from user;

create tablespace tablespace_name

datafile ‘’

default storage(

initial xxxkb

next yykb

minextents 2

pctincrease nnnn

maxextents mmm)

logging

online

extent management dictionary/local[autoallocate/uniform size xxxmb];

create user user_name

identified by passwore/

identified externally/

identified globally as ‘CN=user’

default tablespace tablespace_name

temporary tablespace tablespace_name

[account lock /unlock]

grant connect to user_name;

grant create table to suer_name;

grant update on table_name to user_name;

revoke create table from user_name;

revoke update on table_name from user_name;

56、在Oracle中如何更改用户名?

57、如何在Oracle中查询某个用户下所有已建的表?

答:select * from cat;

57、执行TRUNCATE命令后,存储空间是否还存在,是否可被其他的表占用?

执行TRUNCATE之后,为表分配的区空间将被回收HWM将回退,如果在使用

TRUNCATE 的时候没有指定REUSE STORAGE那么执行操作后仅仅留下由MINEXTENTS

所指定的区否则表的所有空间将被回收用于再分配。

59、何在Oracle中查看当前用户,通常有哪些方式?(提示:show user和

select * from user_users)show user;/select username from user_users;

60、出在Oracle中,创建表空间的语法结构,以及所含参数说明。

Create tablespace tablespacename

Datafile ‘’

Logging/nologging

Default storage(initial kb

Next kb

Minextents x

Maxextents y

Pctincrease z

)

online/not online

extent management dictionary/local[autoallocate/uniform size kb];

61、如何判断游标是否到了末尾?(提示:用%notfound)

cursor_name%notfound

62、在Oracle中,如何查看当前用户下的所有表空间?

Select tablespace_name from user_tablespaces;

63、在Oracle中,你所创建的表空间信息放在哪里?

存放在数据字典中,数据字典内容对应于系统表空间SYSTEM表空间。

64、Oracle中的控制文件什么时候读取?

Oracle服务器启动时,先启动实例然后再读取数据库的各个文件当然也包括

控制文件。也就是说在数据库服务器启动的第二步时读取。

65、Oracle的表格信息存储在哪个地方?

SYSTEM表空间的数据字典文件中。

66、如何根据字典创建一个表空间,并说明参数?

66、Oracle中当一个用户正在操作一个执行过程,管理员此时取消了他的权

限,会发生什么事情?

68、谈谈你对角色的理解,常用的角色有哪些?

角色就是一组权限的数据库实体,它不属于任何模式或用户但是可以被授予任

何用户。常用的角色有CONNECT,DBA,RESOURCE,SELECT_CATALOG_ROLE(查询所有表

视图权), DELETE_CATALOG_ROLE(删除权限)等。

角色的创建和授权:和创建用户为用户授权差不多。Create role role_name

identified …grant 权限to role_name。

69、简述Oracle的归档与不归档工作模式,分别说明。

Oracle归档模式是指在创建数据库时指定了ARCHIVELOG参数,这种模式下,

当重做日志文件写满的时候会将该重做日志文件的内容保存到指定的位置(由初始

化文件中的参数ARCHIVE_LOG_DEST_n来决定)。并不是数据库在归档模式下工作的

时候就可以自动完成归档操作,在归档模式下可以有两种归档方式:自动归档(在初

始化文件中的参数ARCHIVE_LOG_START被设置为TRUE)和手动归档。如果归档模式

下没有启动自动归档的话,而且又没有实行手动归档那么当LGWR进程将重做日志信

息写入已经写满的重做日志文件时数据库将会被挂起直到进行了归档。可见归档是

对重做日志文件信息的一种保护措施。

Oracle非归档模式下当重做日志文件写满以后若是有LGWR进行重做日志信

息的写入操作时,以前保存在重做日志文件中的重做日志信息就会被覆盖掉。

70、Oracle索引分为哪几类,说出唯一索引和位图索引的概念。

Oracle索引有B树索引,位图索引,函数索引,簇索引等。

唯一索引也是B树索引的一种,它要求被索引的字段值不可以重复。在创建的

时候使用B树算法创建。

位图索引并不是采用象唯一索引那样存储(索引字段值,记录ROWID)来创建索

引段的,而是为每一个唯一的字段值创建一个位图,位图中使用位元来对应一个记录

的ROWID。位元到ROWID是通过映射的到的。

71、Oracle的基本数据类型有哪些?

Char()存储定长字符,定义的时候可以不为他指定长度但是如若往里插入值则

会出错; varchar2()存储变长字符定义的时候必须指定长度,date存储时间日

期;Number()数字类型,包括整型,浮点型等;clob()大容量字符串;blob()大二进制

对象

72、SQL中,执行四舍五入的是哪个函数?

Round(value,保留的小数位数)与只对应的还有一个特别相似的函数

trunc(value,保留的小数位数)它的作用是根据要保留的小数位数来截取原数。

73、Oracle数据库表存放到磁盘什么地方?数据文件

ORACLE数据库的表存放在物理文件中的数据文件中。

74、当执行insert语句并提交后,这些提交的数据存储到什么地方??

存储到了数据库的数据文件中。

75、Exits和in在ORALCE数据库中那个执行效率更高?

EXITS执行效率要比使用IN要快。

76、ORACLE自己提供的函数,想知道具体位置,如何操作?

77、数据库的几种物理文件?

1)数据文件2)控制文件3)日志文件

78、控制文件都含有哪些信息?

控制文件存放有实例信息(实例名称创建时间等),数据文件和日志文件信息,

还有系统运行时记录的系统变更码(SCN),检查点信息和归档的当前状态信息等。数

据库在加载数据库的时候首先要读取控制文件获得和数据库有关的物理结构信息之

后才能够正确加载数据文件和日志文件并打开数据库。

79、Decode函数的用法?

DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,…,else),

表示如果value等于if1时,DECODE函数的结果返回then1,…,如果不等于任何一

个if值,则返回else。初看一下,DECODE 只能做等于测试,但刚才也看到了,我们

通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功

能。

2. 如何用decode进行大于小于的比较?

利用sign()函数和DECODE和在一起用

select decode(sign(变量1-变量2),-1,变量1,变量2) from dual;

decode(条件,值1,翻译值1,值2,翻译值2,…值n,翻译值n,缺省值)

该函数的含义如下:

IF 条件=值1 THEN

RETURN(翻译值1)

ELSIF 条件=值2 THEN

RETURN(翻译值2)

……

ELSIF 条件=值n THEN

RETURN(翻译值n)

ELSE

RETURN(缺省值)

END IF

使用方法:

1、比较大小

select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; –取较

小值

sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1

例如:

变量1=10,变量2=20

则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小

值的目的。

2、表、视图结构转化

现有一个商品销售表sale,表结构为:

month char(6)–月份

sell number(10,2)–月销售金额

现有数据为:

2000011000

2000021100

2000031200

2000041300

2000051400

2000061500

2000071600

2001011100

2002021200

2003011300

想要转化为以下结构的数据:

year char(4)–年份

month1number(10,2)–1月销售金额

month2number(10,2)–2月销售金额

month3number(10,2)–3月销售金额

month4number(10,2)–4月销售金额

month5number(10,2)–5月销售金额

month6number(10,2)–6月销售金额

month7number(10,2)–7月销售金额

month8number(10,2)–8月销售金额

month9number(10,2)–9月销售金额

month10number(10,2)–10月销售金额

month11number(10,2)–11月销售金额

month12number(10,2)–12月销售金额

结构转化的SQL语句为:

create or replace view

v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8

,month9,mon th10,month11,month12)

as

select

substrb(month,1,4),

sum(decode(substrb(month,5,2),’01′,sell,0)),

sum(decode(substrb(month,5,2),’02′,sell,0)),

sum(decode(substrb(month,5,2),’03′,sell,0)),

sum(decode(substrb(month,5,2),’04′,sell,0)),

sum(decode(substrb(month,5,2),’05′,sell,0)),

sum(decode(substrb(month,5,2),’06′,sell,0)),

sum(decode(substrb(month,5,2),’07′,sell,0)),

sum(decode(substrb(month,5,2),’08′,sell,0)),

sum(decode(substrb(month,5,2),’09′,sell,0)),

sum(decode(substrb(month,5,2),’10′,sell,0)),

sum(decode(substrb(month,5,2),’11′,sell,0)),

sum(decode(substrb(month,5,2),’12′,sell,0))

from sale

group by substrb(month,1,4);

79、CASE语句的用法?

Oracle用法很简单:

SELECT last_name, job_id, salary

CASE job_id

WHEN ‘IT_PROG’THEN 1.10*salary

WHEN ‘ST_CLERK’THEN 1.15*salary

WHEN ‘SA_REP’THEN 1.20*salary

ELSE salary END “REVISED_SALARY”

FROM employees

80、truncate和delete的区别?

1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命

令DELETE 将被撤销,而TRUNCATE则不会被撤销。

2、TRUNCATE是一个DDL语言而DELETE是DML语句,向其他所有的DDL语言

一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。

3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完

全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。

4、TRUNCATE不能触发触发器,DELETE会触发触发器。

5、不能授予任何人清空他人的表的权限。

6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。

7、不能清空父表。

81、表空间如何扩展?并用语句写出?

两种扩展方式:

a) 增加数据文件

alter tablespace tablespace_name add datafile ‘’xxMB

b) 扩展数据文件大小

alter database datafile ‘’resize newMB

82、表空间区管理方式?哪种方式现在是推荐使用的?

a) 字典管理方式

extent management dictionary;默认方式

b) 本地管理方式

extent management local[autoallocate/uniform xxmb];

83、用什么函数获得日期?和日期中的月,日,年

to_char(sysdate,’year’):tow thsound six

to_char(sysdate,’yyyy’) :2006

to_char(sysdate,’month’):8月to_char(sysdate,’mm’):08

to_char(sysdate,’day’):星期4 to_char(sysdate,’dd’):22

84、分区表的应用?

a) 一个分区表有一个或多个分区,每个分区通过使用范围分区、散列分区、

或组合分区分区的行

b) 分区表中的每一个分区为一个段,可各自位于不同的表空间中

c) 对于同时能够使用几个进程进行查询或操作的大型表分区非常有用

85、谈谈索引的用法及原理?

索引是若干数据行的关键字的列表,查询数据时,通过索引中的关键字可以快

速定位到要访问的记录所在的数据块,从而大大减少读取数据块的I/O次数,因此可

以显著提高性能。

86、存储过程的应用,如何既有输入又有输出?

Create procedure pro_name

(xxxx in/out type;

yyyy in/out/inout type;

) is/as

zzzz type;

begin

SQLpro;

exception

exceptionxxxxx;

commit;

end;

87、常发生的异常有哪些?

常用预定义例外

CURSOR_ALREADY_OPEN —ORA-06511 SQLCODE = -6511 游标已经打开

DUP_VAL_ON_INDEX —ORA-00001 SQLCODE = -1 违反唯一性约束

INVALID_CURSOR —ORA-01001 SQLCODE = -1001 非法游标操作

INVALID_NUMBER —ORA-01722 SQLCODE = -1722 字符向数字转换失败

LOGIN_DENIED —ORA-01017 SQLCODE = -1017

NO_DATA_FOUND —ORA-01403 SQLCODE = +100 没有找到数据

NOT_LOGGED_ON —ORA-01012 SQLCODE = -1012 没有连接到数据库

PROGRAM_ERROR —ORA-06501 SQLCODE = -6501 内部错误

STORAGE_ERROR —ORA-06500 SQLCODE = -6500

TIMEOUT_ON_RESOURCE —ORA-00051 SQLCODE = -51

TOO_MANY_ROWS —ORA-01422 SQLCODE = -1422 返回多行

TRANSACTION_BACKED_OUT —ORA-00061 SQLCODE = -61

VALUE_ERROR —ORA-06502 SQLCODE = -6502 数值转换错误

ACCESS_INTO_NULL试图为NULL对象的属性赋值

ZERO_DIVIDE —ORA-01476 SQLCODE = -1476 被零除

OTHERS —其它任何错误的处理

88、如何使用异常?

在Oracle中有三种类型的异常。预定义的异常非预定义的异常用户定义的异

常第二种非预定义的异常是与特定的Oracle错误关联。并且用PRAGM

EXCEPTION_INIT(EXCEPTION_NAME,ERROR_NUMBER)关联一起的。但是到底有什么用

啊?例如:declare dup_primary_key exception; pragma

exception_init(dup_primary_key,-1); begin insert into itemfile

values(‘i201′,’washer’,'spares’,100,50,250,12,30); exception when

dup_primary_key then dbms__line(‘重复项编号-主键冲突’); end

第一种的使用方法:exception

when 异常名称then

异常处理代码;

第三种的用法:if 条件then

raise_application_error(-20000“““`-20999,提示信息);

end if;

89、优化的策略一般包括:

内存优化

操作系统优化

数据存储的优化

网络优化等方法

具体到不同的数据库涉及到要调整不同的数据库配置文件、不同的操作系统

参数、网络参数等等, 不同的数据库不同.

1.下列不属于Oracle的逻辑结构的是(C)

1.区

2.段

3.数据文件

4.表空间

2. 下面哪个用户不是Oracle缺省安装后就存在的用户(A)

A . SYSDBA

B. SYSTEM

C. SCOTT

D. SYS

3 下面哪个操作会导致用户连接到Oracle数据库,但不能创建表(A)

1.授予了CONNECT的角色,但没有授予RESOURCE的角色

2.没有授予用户系统管理员的角色

3.数据库实例没有启动

4.数据库监听没有启动

1.( )函数通常用来计算累计排名,移动平均数和报表聚合。

A . 汇总

B. 分析

C 分组、

D 单行

1.带有(B)字句的SELECT语句可以在表的一行或多行放置排他锁。

A . FOR INSERT

B. FOR UPDATE

C. FOR DELETE

D. FOR REFRESH

1.在Oracle中,你以SYSDBA登录,CUSTOMER表位于Mary用户方案中,下

面哪条语句为数据库中的所有用户创建CUSTOMER表的同义词(B)。

PUBLIC SYNONYM cust ON er;

PUBLIC SYNONYM cust FOR er;

SYNONYM cust ON er FOR PUBLIC;

4.不能创建CUSTOMER的公用同义词。

5.

7. 在Oracle中,当FETCH语句从游标获得数据时,下面叙述正确的是(C)。

1.游标打开

2.游标关闭

3.当前记录的数据加载到变量中

4.创建变量保存当前记录的数据

8. 在Oracle中,下面关于函数描述正确的是(AD)。

E函数返回Oracle服务器的日期和时间

数字函数按四舍五入原则返回指定十进制数最靠近的整数

_MONTHS日期函数返回指定两个月份天数的和

函数从字符串指定的位置返回指定长度的子串

9. 阅读下面的PL/SQL程序块:

BEGIN

INSERT INTO employee(salary,last_name,first_name)

VALUES(35000,’Wang’,'Fred’);

SAVEPOINT save_a;

INSERT INTO employee(salary,last_name,first_name)

VALUES(40000,’Woo’,'David’);

SAVEPOINT save_b;

DELETE FROM employee WHERE dept_no=10;

SAVEPOINT save_c;

INSERT INTO employee(salary,last_name,first_name)

VALUES(25000,’Lee’,'Bert’);

ROLLBACK TO SAVEPOINT save_c;

INSERT INTO employee(salary,last_name,first_name)

VALUES(32000,’Chung’,'Mike’);

ROLLBACK TO SAVEPOINT save_b;

COMMIT;

END;

运行上面的程序,哪两个更改永久保存到数据库(CD)。

FROM employee WHERE dept_no=10;

INTO employee(salary,last_name,first_name)

1. i.

VALUES(32000,’Chung’,'Mike’);

INTO employee(salary,last_name,first_name)

1. i.

VALUES(35000,’Wang’,'Fre

d’);

INTO employee(salary,last_name,first_name)

1.

i. VALUES(40000,

’Woo’,'David’);

10. 在Oracle中,表VENDOR包含以下列:

VENDOR_ID NUMBER Primary Key

NAME VARCHAR2(30)

LOCATION_ID NUMBER

ORDER_DT DATE

ORDER_AMOUNT NUMBER(8,2)

下面对表VENDOR运用分组函数的子句合法的是(C)。

MAX(order_dt)

SUM(order_dt)

SUM(order_amount)

MAX(order_dt) = order_d

11. 在Oracle中,表EMP包含以下列:

……

NAME VARCHAR2(20)

ADDR VARCHAR2(60)

……

要以NAME’s address is ADDR格式返回数据,以下SQL语句正确的是(B)。+

的两边做To_number()

NAME + ’’’s address is ‘ + ADDR FROM EMP;

NAME || ’’’s address is ‘ || ADDR FROM EMP;

NAME + ’’s address is‘ + ADDR FROM EMP;

NAME || ’’s address is ‘ || ADDR FROM EMP;

12. 在Oracle中,以下不属于集合操作符的是(B)。

ECT

13. 在Oracle中,表分区方式(C)建议分区数是2的幂(2、4、8等),以获得

最平均的数据发布。

1.范围分区

2.列表分区

3.散列分区