Oracle程序员面试分类模拟9.docx

上传人:b****4 文档编号:6307639 上传时间:2023-05-09 格式:DOCX 页数:12 大小:934.73KB
下载 相关 举报
Oracle程序员面试分类模拟9.docx_第1页
第1页 / 共12页
Oracle程序员面试分类模拟9.docx_第2页
第2页 / 共12页
Oracle程序员面试分类模拟9.docx_第3页
第3页 / 共12页
Oracle程序员面试分类模拟9.docx_第4页
第4页 / 共12页
Oracle程序员面试分类模拟9.docx_第5页
第5页 / 共12页
Oracle程序员面试分类模拟9.docx_第6页
第6页 / 共12页
Oracle程序员面试分类模拟9.docx_第7页
第7页 / 共12页
Oracle程序员面试分类模拟9.docx_第8页
第8页 / 共12页
Oracle程序员面试分类模拟9.docx_第9页
第9页 / 共12页
Oracle程序员面试分类模拟9.docx_第10页
第10页 / 共12页
Oracle程序员面试分类模拟9.docx_第11页
第11页 / 共12页
Oracle程序员面试分类模拟9.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Oracle程序员面试分类模拟9.docx

《Oracle程序员面试分类模拟9.docx》由会员分享,可在线阅读,更多相关《Oracle程序员面试分类模拟9.docx(12页珍藏版)》请在冰点文库上搜索。

Oracle程序员面试分类模拟9.docx

Oracle程序员面试分类模拟9

Oracle程序员面试分类模拟9

简答题

1.如何判断—个存储过程是否正在运行?

答案:

有两种方式可以判断一个存储过程是否正在运行,其查询SQL语句分别如下,若有结果返回,则说明存储过程正在运行。

方法1:

方法2:

2.如何将文本文件或Excel中的数据导入数据库?

答案:

有多种方式可以将文本文件的数据导入到数据库中,例如,利用PLSQLDeveloper软件进行复制粘贴,利用外部表,利用SQL*Loader等方式。

至于Excel中的数据可以另存为csv文件(csv文件其实是逗号分隔的文本文件),然后导入到数据库中。

下面简单介绍一下SQL*Loader的使用方式。

SQL*Loader是一个Oracle工具,能够将数据从外部数据文件装载到数据库中。

SQL*Loader必须包含一个控制文件,该控制文件是SQL*Loader的中枢核心,控制文件能够控制外部数据文件中的数据如何映射到Oracle的表和列。

通常与SPOOL导出文本数据方法配合使用。

SQL*Loader能够接收多种不同格式的数据文件。

文件可以存储在磁盘或磁带上,或记录本身可以被嵌套到控制文件中。

记录格式可以是定长的或变长的,定长记录是指这样的记录:

每条记录具有相同的固定长度,并且每条记录中的数据域也具有相同的固定长度、数据类型和位置。

SQL*Loader的数据导入比较专业,有各种参数及选项可供选择,经常是作为数据仓库中大型数据的导入方法选择。

SQL*Loader的优点:

1)可将导入命令写入BAT文件直接批量处理。

2)导入处理比较专业,提供各种参数选择。

3)无需操作Oracle所在服务器。

SQL*Loader也有缺点,例如,Excel文件需要另存为txt或csv格式才能导入到数据库中。

总的来说这种方法是最值得采用的,可以自动建立操作系统的批处理文件执行SQL*Loader命令,将数据导入原始接收表,并在数据库中设置触发器进行精细操作。

SQL*Loader有两种使用方法:

1)只使用一个控制文件,在这个控制文件中包含数据。

2)使用一个控制文件和一个数据文件。

SQL*Loader工具使用的命令为sqlldr,其常用参数的含义见表1。

下面给出SQL*Loader控制文件的一个示例:

其中,CHARACTERSET指定文件的编码格式,infile指定导入的文件。

接下来就是执行导入命令了,如下:

当要加载的数据文件比较大的时候该如何提高SQL*Loader的性能呢?

可以从以下几个方面考虑:

1)ROWS的默认值为64,可以根据需要指定更合适的ROWS参数来指定每次提交记录数。

2)米用DIRECT=TRUE导入可以跳过数据库的相关逻辑,直接将数据导入到数据文件中,可以提高导入数据的性能。

3)通过指定UNRECOVERABLE选项,可以写少量的日志,从而提高数据加载的性能。

不过,推荐在加载完成后立即对数据库或至少对表空间备份。

当加载大量数据时,最好抑制日志的产生:

将表修改为NOLOGGING,可以只产生少量的Redo日志,从而提高导入效率。

在CONTROL文件中的loaddata前边加一行:

UNRECOVERABLE,此选项必须要与DIRECT共同使用。

对于超大数据文件的导入就要用并发操作了,即同时运行多个导入任务:

表2给出在使用SQL*Loader的过程中,一些常用的需求实现方法。

表3给出了在使用SQL*Loader的过程中,常遇到的错误及其解决方法。

关于SQL*Loader还有很多参数本书不再详述,具体可以参考官方文档。

有关如何导出数据到Excel中,本书也不再详述。

3.什么是Quote(q)语法?

答案:

在SQL查询中,会经常需要原样输出字符串,如果字符串中含有大量的单引号、双引号或者特殊字符,那么需要用单引号转义拼接字符串,这样会非常的麻烦。

所以,Oracle提供了一个Q-quote的表达式来原样输出字符串。

需要注意以下几点:

1)Q-quote定界符可以是除了TAB、空格、回车外的任何单字节或多字节字符,包括数字、字母、特殊字符。

但'&'不能作为分隔符,因为'&'意思是传入参数。

2)Q'后跟起始分隔符,起始分隔符后的字符串原样输出,起始分隔符必须有配对的结束分隔符。

'['、'('、'{'作为分隔符,必须以']'、')'、'}'结束。

4.怎么捕获用户登录信息,如SID,IP地址等?

答案:

可以利用登录触发器来实现。

5.怎么捕获整个数据库的DDL语句或者是说捕获对象结构变化与修改?

答案:

可以采用DDL触发器进行捕获。

6.怎么捕获表上的DML语句?

答案:

可以采用DML触发器进行捕获。

7.如何实现分组取前3条记录?

答案:

可以利用分析函数,如获取每个部门薪水前三名的员工或每个班成绩前三名的学生,如下:

8.如何把相邻记录合并到一条记录?

答案:

可以利用分析函数LAG与LEAD,它们可以提取后一条或前一天记录到本记录,如下:

9.怎么设置存储过程的调用者权限?

答案:

普通存储过程都是定义者权限,如果想设置调用者权限,那么需要声明“AUTHIDCURRENT_USER”,参考如下语句:

10.Oracle中有哪些常用的字符函数?

答案:

常用的有如下几个函数:

1)lower(char):

将字符串全部转化为小写的格式。

2)upper(char):

将字符串全部转化为大写的格式。

3)initcap('SQLcourse'):

每个单词的首字母大写,其余变为小写,结果:

SqlCourse。

4)concat('Hello','World'):

字符串连接,结果:

HelloWorld。

5)length(char):

返回字符串的长度。

6)substr(char,m,n):

取字符串的子串,m表示起点,n代表取n个字符的意思。

7)replace(char1,search_string,replace_string):

替换函数。

8)instr(char1,char2,[,n[,m]]):

取子串在字符串的位置,特别取某一个特殊字符在原字符串中的位置。

9)trim('HelloWorld'):

前后去掉空格,结果为:

“Helloworld”。

10)ltrim('HelloWorld'):

左边去掉空格,结果为:

“HelloWorld”。

11)rtrim('HelloWorld'):

右边去掉空格,结果为:

“HelloWorld”。

12)lpad(salary,10,'*'):

左补齐,结果:

*****24000。

13)rpad(salary,10,'*'):

右补齐,结果:

24000*****。

14)chr():

将ASCII码转换为字符。

15)ascii():

将字符转换为ASCII码。

11.如何查看存储过程的编译错误?

答案:

在存储过程编译完成后使用SHOWERROR命令即可查看。

12.如果查询的列中含有特殊字符,如通配符“%”与“_”,那么该如何查询这些特殊字符?

答案:

利用ESCAPE来查询,如下:

13.如何插入单引号到数据库表中?

答案:

可以用ASCII码处理,其他特殊字符如&也一样,如下:

或者用两个单引号表示一个:

14.十进制与十六进制如何转换?

答案:

十进制转换为十六进制用TO_CHAR:

十六进制转换为十进制用TO_NUMBER:

15.如何随机抽取表SCOTT.EMP的前5条记录?

答案:

使用SYS_GUID或DBMS_RANDOM.VALUE函数,如下:

16.如何抽取重复记录?

答案:

使用ROWID来查询,如下例找出ID重复的记录:

或者,下例找出COL_A和COL_B列重复的记录:

如果想删除重复记录,可以把第一个语句的SELECT替换为DELETE。

17.怎么快速获得用户下每个表或表分区的记录数?

答案:

可以分析该用户,然后查询USER_TABLES字典,或者采用脚本实现。

18.SYS_CONTEXT和USERENV的用法是什么?

它们可以返回哪些常用的值?

答案:

SYS_CONTEXT函数是Oracle提供的一个获取环境上下文信息的预定义函数。

该函数用来返回一个指定NAMESPACE下的PARAMETER值。

该函数可以在SQL和PL/SQL语言中使用,常用的扳回信如下:

USERENV函数用来返回当前的会话信息,常用的有如下信息:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2