50 个最热门 Oracle 面试问题及答案 (2025)

面向新手和有经验者的 Oracle SQL 面试问题

无论您是新手还是经验丰富的专业人士,准备 Oracle 面试都可能让人感到不知所措。本 Oracle 面试问题和答案指南为您提供成功所需的基本知识和基本概念。从基本的 Oracle 面试问题到更高级的主题,我们旨在为您的旅程提供支持。深入研究以磨练您的技能并增强您对即将到来的面试的信心。您将找到针对入门级和经验丰富的候选人的宝贵见解。

 

Oracle 应届毕业生面试问题

Oracle 面试问题与答案

 1)varchar 和 varchar2 数据类型之间的区别?

Varchar 最多可以存储 2000 个字节,而 varchar2 最多可以存储 4000 个字节。Varchar 将占用 NULL 值的空间,而 Varchar2 不会占用任何空间。两者在空间方面有所不同。

免费 PDF 下载:Oracle 面试问题与答案


2)Oracle 是用哪种语言开发的?

Oracle是使用C语言开发的。

 3)什么是 RAW 数据类型?

RAW 数据类型用于以二进制数据格式存储值。表中原始数据的最大大小为 32767 字节。

4)NVL函数有什么用途?

NVL 函数用于将 NULL 值替换为另一个或给定值。示例为 – NVL(Value, replace value)

5) 是否有任何命令用于月份计算?如果有,它们是什么?

在 Oracle 中,months_between 函数用于查找给定日期之间的月份数。示例为 – Months_between(Date 1, Date 2)


6)什么是嵌套表?

嵌套表是 Oracle 中的一种数据类型,用于支持包含多值属性的列。它还可以容纳整个子表。

7)什么是 COALESCE 函数?

COALESCE 函数用于返回列表中设置为非空的值。如果列表中的所有值都为空,则 coalesce 函数将返回 NULL。
Coalesce(value1, value2,value3,…)

8)什么是 BLOB 数据类型?

BLOB 数据类型是可变长度的二进制字符串,用于存储 2 GB 内存。BLOB 的长度应以字节为单位指定。
甲骨文面试问题
甲骨文面试问题

9) 我们如何在 Oracle 中表示注释?

Oracle 中的注释可以用两种方式表示 -
  1. 行首前两个破折号 (-) – 单个语句
  2. /*—— */ 用于表示语句块的注释

10)什么是 DML?

数据操作语言 (DML) 用于访问和操作现有对象中的数据。DML 语句包括插入、选择、更新和删除,并且不会隐式提交当前事务。

针对有经验的 Oracle SQL 面试问题

11)TRANSLATE 和 REPLACE 有什么区别?

翻译用于逐个字符替换,而替换用于用单词替换单个字符。

12)如何显示表中不重复的行?

可以使用选择语句中的关键字 DISTINCT 删除重复的行。

13)Merge 语句有什么用途?

Merge 语句用于从一个或多个数据源中选择行,以进行更新并插入到表或视图中。它用于组合多个操作。

14)Oracle 中的 NULL 值是什么?

NULL 值表示缺失或未知的数据。它用作占位符或将其表示为默认条目,以表明不存在实际数据。

15) 什么是 USING 子句?请举例说明?

USING 子句用于在两个表连接时指定要测试相等性的列。[sql]Select * from employee join 薪水 使用员工 ID[/sql] 员工表与带有员工 ID 的工资表连接。

16)什么是密钥保存表?

如果表中的每个键都可以作为连接结果的键,则该表被设置为键保留表。它保证从基表中返回每一行仅一个副本。

17)WITH CHECK OPTION 是什么?

WITH CHECK 选项子句指定要在 DML 语句中执行的检查级别。它用于防止对视图的更改产生子查询中未包含的结果。

18) Oracle 中的聚合函数有何用途?

聚合函数是将多行或多条记录的值连接在一起以获得单个值输出的函数。常见的聚合函数有:
  • 一般
  • 计数
  • 总和

19)GROUP BY 子句是什么意思?

GROUP BY 子句可用于选择语句中,它将收集多个记录的数据并按一列或多列对结果进行分组。

20) 什么是子查询,子查询有哪些不同类型?

子查询也称为嵌套查询或内部查询,用于从多个表中获取数据。子查询添加到主查询的 where 子句中。有两种不同类型的子查询:
  • 相关子查询
相关子查询不能作为独立查询,但可以引用外部查询的列表中列出的表中的列。
  • 非相关子查询
这可以像独立查询一样进行评估。子查询的结果将提交给主查询或父查询。

高级机械工程面试问题

21)什么是交叉连接?

交叉连接被定义为连接中存在的表中记录的笛卡尔积。交叉连接将产生将第一个表中的每一行与第二个表中的每一行相结合的结果。

22)Oracle 中的时间数据类型有哪些?

Oracle 提供以下时间数据类型:
  • 日期数据类型 – 日期的不同格式
  • 时间戳数据类型 – 时间戳的不同格式
  • 间隔数据类型 – 日期和时间之间的间隔

23)如何在 Oracle 中创建权限?

特权只不过是执行 SQL 查询或访问另一个用户对象。权限可以授予系统权限或用户权限。
[sql]GRANT user1 TO user2 WITH MANAGER OPTION;[/sql]

24)什么是 VArray?

VArray 是一种 Oracle 数据类型,用于包含多值属性的列,并且可以保存有界的值数组。

25)如何获取表的字段详细信息?

描述用于获取指定表的字段详情。

26)重命名和别名有什么区别?

重命名是为表或列赋予的永久名称,而别名是为表或列赋予的临时名称。重命名只不过是名称的替换,而别名是表或列的替代名称。

27)什么是视图?

视图是基于一个或多个表或视图的逻辑表。视图所基于的表称为基表,它不包含数据。

28)什么是游标变量?

游标变量与不同的语句相关联,这些语句在运行时可以保存不同的值。游标变量是一种引用类型。

29)什么是游标属性?

Oracle 中的每个游标都有一组属性,使应用程序能够测试游标的状态。这些属性可用于检查游标是打开还是关闭、是否找到以及查找行数。

30)什么是 SET 运算符?

SET 运算符用于两个或多个查询,这些运算符包括 Union、Union All、Intersect 和 Minus。

针对 5 年工作经验的 Oracle 面试问题

31) 如何删除表中的重复行?

可以使用ROWID删除表中的重复行。

32)Cursor 的属性有哪些?

Cursor 的属性包括
  • %成立
如果游标已打开但尚未执行提取,则返回 NULL;如果游标提取成功执行,则返回 TRUE。如果没有返回任何行,则返回 False。
  • %未找到
如果游标已打开但尚未执行提取,则返回 NULL;如果已执行提取,则返回 False;如果没有返回行,则返回 True
  • %开了
如果游标已打开,则返回 true;如果游标已关闭,则返回 false
  • %行数
返回获取的行数。必须遍历整个游标才能给出准确的实际计数。

33) 我们可以在数据库中存储图片吗?如果可以,如何操作?

是的,我们可以通过 Long Raw Data 类型将图片存储在数据库中。此数据类型用于存储长度为 2 GB 的二进制数据。但表只能有一个 Long Raw 数据类型。

34)什么是完整性约束?

完整性约束是定义表列的业务规则的声明。完整性约束用于确保数据库中数据的准确性和一致性。有以下类型:域完整性、引用完整性和域完整性。

35)什么是 ALERT?

警报是一个出现在屏幕中心并覆盖当前显示部分内容的窗口。

36)什么是哈希簇?

哈希簇是一种用于存储表以便更快检索的技术。对表应用哈希值以从表中检索行。

37) Oracle 中使用了哪些不同的约束?

以下是使用的约束:
  • NULL – 表示特定列可以包含 NULL 值
  • NOT NULL – 表示特定列不能包含 NULL 值
  • 检查——验证给定列中的值是否满足特定条件
  • DEFAULT – 表示该值被赋值为默认值

38)SUBSTR 和 INSTR 有什么区别?

SUBSTR 返回字符串的特定部分,而 INSTR 提供在字符串中找到模式的字符位置。SUBSTR 返回字符串,而 INSTR 返回数字。

39) 可以传递给过程的参数模式是什么?

IN、OUT 和 INOUT 是可以传递给过程的参数模式。

40) 有哪些不同的 Oracle 数据库对象?

Oracle 中有不同的数据对象 –
  • 表格——以垂直和水平方式组织的元素集
  • 视图 – 从一个或多个表派生的虚拟表
  • 索引 – 处理记录的性能调整方法
  • 同义词 – 表的别名
  • 序列——多个用户生成唯一数字
  • 表空间 – Oracle 中的逻辑存储单元

针对 10 年工作经验的 Oracle 面试问题

41)LOV 和 List Item 有什么区别?

LOV 是属性,而列表项被视为单个项。项列表设置为项列表的集合。列表项只能有一列,而 LOV 可以有一列或多列。

42)什么是特权和补助?

特权是执行 SQL 语句的权利 - 即连接和连接的权利。授予对象权限,以便可以相应地访问对象。授予权限可以由对象的所有者或创建者提供。

43) $ORACLE_BASE 和 $ORACLE_HOME 有什么区别?

Oracle 基础目录是 Oracle 的主目录或根目录,而 ORACLE_HOME 位于所有 Oracle 产品所在的基础文件夹下。

44)从表中获取数据的最快查询方法是什么?

可以使用 ROWID 从表中提取行。使用 ROW ID 是从表中提取数据的最快查询方法。

45) 单个表上可应用的触发器的最大数量是多少?

12 是可应用于单个表的触发器的最大数量。

46) 如何显示记录的行号?

显示行号和记录号 –
Select rownum, <fieldnames> from table;
此查询将显示给定表中的行号和字段值。

47) 如何查看添加到表中的最后一条记录?

最后一条记录可以添加到表中,可以通过以下方式完成 -
Select * from (select * from employees order by rownum desc) where rownum<2;

48)DUAL 表的数据类型是什么?

这个 表是 Oracle 数据库中的单列表。该表有一个名为 DUMMY 的 VARCHAR2(1) 列,其值为“X”。

49)笛卡尔连接和交叉连接有什么区别?

连接之间没有区别。笛卡尔连接和交叉连接相同。交叉连接给出两个表的笛卡尔积 - 第一个表中的行与另一个表中的行相乘,这称为笛卡尔积。没有 where 子句的交叉连接给出笛卡尔积。

50) 如何显示工资高于部门平均工资的员工记录?

这可以通过以下查询来完成 -
Select * from employee where salary>(select avg(salary) from dept, employee where dept.deptno = employee.deptno);
 

结语

无论您是新手还是经验丰富的候选人,掌握 Oracle 面试问题和答案对于成功都至关重要。通过练习这些问题,您可以建立信心并提高技能。欢迎在评论中分享任何独特或具有挑战性的问题。充分准备,祝您面试顺利!这些面试问题也会对您的口试有所帮助

分享

21条评论

  1. 头像 拉梅什库马尔 说:

    – 有3个大文件,1GB(file_a.txt),10GB(file_b.txt)和1TB(file_c.txt);
    – 这3个文件的格式:文件中每行一个随机字符串;
    – 仅可使用100MB内存,磁盘使用不受限制;
    - 假设:
    当且仅当字符串 A 出现在这 3 个文件中,我们需要统计这个 A 出现的总次数。例如,A 在 file_a.txt 中出现了 2 次,在 file_b.txt 中出现了 10 次,在 file_c.txt 中出现了 100 次,那么我们统计出 A 出现的总次数为 2 + 10 + 100 = 112 次。

    问题:请编写一个程序,按降序输出出现次数TOP 10和LAST 10的字符串。有人可以回答吗?

    1. 糟糕的问题。无法理解。

      1. 第一部分 – 情景
        SchemaName:IssuesTracking
        问题描述:
        您需要设计和实施问题跟踪软件的数据库。软件问题跟踪是任何企业软件开发生命周期不可或缺的一部分。
        问题跟踪工具包负责创建、存储、跟踪和管理问题(例如软件
        错误或新功能请求)。每个问题都由一张票表示,该票必须捕获
        以下信息
        • 实际问题
        • 受此问题影响的组件或项目
        • 首先发现问题的开发人员/客户
        • 负责解决该问题的开发人员/经理
        • 问题现状
        • 其他相关问题(票证)

        详细要求:
        我们在此概述了企业变更管理工具包的最低要求。您是
        鼓励您根据自己的需要修改、添加和(如果明确合理)删除要求
        必要的。票证 – 可能的属性:所有者、标题、描述、状态(例如,开放、评估、工作、
        测试、延期、拒绝、关闭等)、优先级(例如低、中、高、紧急)、计划
        完成日期、一个或多个相关项目、一个或多个相关工单、类别(任务、
        功能、问题、缺陷、里程碑)、里程碑状态、提交者、提交日期、升级
        人员、博客条目(票据讨论论坛)、相关资源和相关工件(例如,帮助解决问题的图表和文档)、工作日志(在
        每天(可能每天和每个用户都不同)

        3

        项目 – 可能的属性:标题、描述、计划完成日期、实际完成日期、项目经理、创建者、创建日期、工作日志(每天工作的小时数,
        每天和每个用户都可能不同)
        用户 - 可能的属性:姓名、职称(例如开发人员、经理、系统管理员)、安全性(用户名
        和密码)
        工件 – 可能的属性:标题、描述、类别、版本、大小、数据
        评论 - 可能的属性:票证、提交者、提交者日期、文本 - 您作为学生的角色
        本练习的目的是提供作为数据库设计人员的实践经验和
        管理员。准备一个脚本并记录下来。您实际上可以使用 SQL Developer 等工具
        以实现数据库设计。在适当的情况下使用示例。

        4

        第二部分——问题

        所有问题都是必答的。按顺序回答所有问题。确保你标明每个
        提出问题并回答。在必要时使用语法和示例。你要根据情景得出答案。问题末尾的数字
        表示满分。问题:
        1. 创建用户架构(IssueTracking)并授予所有对象权限。[5]
        2. 在 Oracle 中创建可能的数据库表,该表应代表给定的场景。[10]
        3.定义并解释表之间的关系[10]
        4. 定义适当的表结构(例如,日期列可以是日期字段,金额数据字段
        应为数字数据字段)[10]
        5. 解释 DB 的对象安全性和系统安全性。创建 DBReader 和 DBWriter
        用户,DBWriter 用户应具有对 DDL 和 DML 命令执行的访问权限,DBReader 用户只能访问所有表的读权限 [4+4+2+6+4]
        6. 什么是锁定机制? 为什么需要它? 演示共享锁和
        任意一张表的排他锁情况[2+4+6+6]
        7. 什么是死锁?如何管理数据库系统中的死锁?创建一个
        “Ticket” 表中出现死锁情况。[5+10]
        8. ABC Inc. 业务因系统故障丢失了上周的数据,业务所有者
        不想失去任何业务。通常,DBA 会每天备份
        一天结束。你是 ABC Inc. 的 DBA;你如何管理该周的数据以及
        最好的前进方式是什么?[10]

        你能帮助我吗 ?

  2. 这应该不太难。
    我会循环遍历最小的文件,因为如果其中没有字符串,那么我们就不会关心它是否存在于其他文件中。
    对于我的数据结构,我会保留一个列表,其中最小文件中的每一行都有一行,我会在这一行中写下我的计数。如果某一行在文件中多次出现,您可以将后续出现计数为零,或将它们标记为 X,这样您就知道不要重复计数。
    然后我读取这个文件来加载一个包含前 10 个出现次数的数组,我会把第一个索引放在这个数组中,然后计数。
    然后我将使用索引转到文件并读取实际行并将其与计数一起显示。
    然后对最后 10 个执行类似的过程,这应该更容易。

    1. 头像 桑尼·桑菲尔·桑加梅什瓦尔 说:

      你能写脚本而不是口头英语吗

  3. 头像 库莎·库玛拉 说:

    非常感谢您给予我机会回顾 Oracle DB 的知识

  4. 头像 古里尚卡尔·贝赫拉 说:

    50的答案有一处错误。
    鉴于此
    从员工中选择*,其中工资>(从部门、员工中选择平均值(工资),其中部门编号=员工编号;
    错误是没有给出最后的括号。

    1. 头像 克里希纳 说:

      嗨,谢谢你的来信。已审核并更新。

  5. 这是一个完整的知识包指导培训

  6. Select 不是 DML 命令,而是 DRL 命令。请参阅上面的问题 10。

    1. 头像 阿什瓦尼 说:

      是的,Damodar,你是 ri8

  7. 嗨,

    问题 47. 获取表的最后一条记录
    从(从员工中选择 * 按员工 ID 降序排列)中选择 *,其中 rownum<=1;

    我们可以使用下面的查询来代替上面的查询。

    从员工中选择*,其中rownum<=1,按employee_id降序排列;

    谢谢,
    安克

    1. 头像 维杰 - 说:

      我们不能使用,order by 子句是在结果集处理后由 SQL 引擎处理的,因此您的查询将获取表中的第一个记录

  8. 45. 单个表最多可以应用多少个触发器?
    正确答案:

    一个表上可以有 N 个触发器,但单个表上触发器的最大类型可以是 3*2*2=12,即划分如下
    插入/更新/删除= 3
    之前/之后= 2
    行级别/语句级别=2

  9. 头像 斯里达 说:

    如果选择查询从一个表中返回 6 万条记录中的 10 万条记录,那么优化器将使用索引扫描或全表扫描。何时索引会失败以及从表中提取记录的索引最大百分比是多少?

    谢谢

  10. 头像 医学博士迪达鲁·伊斯兰 说:

    感谢面试问题的帮助。

发表评论

您的电邮地址不会被公开。 必填项 *