oracle面试题

Oracle

Oracle数据库

对索引的理解
  • 索引相当于字典的目录,作用在于提升查询效率,降低磁盘读写,提升数据库性能。
  • 索引是一种独立于表的数据库对象,可以存储在于不同的磁盘中间或者表空间。
  • 索引一旦创建,由oracle数据库自己来维护,并且由oracle管理系统来指定何时使用索引,我们不需要在查询语句中自己指定索引。
  • 索引的删除或者损毁不会对数据库表带来影响,只会影响查询效率
  • 创建索引的时候,如果没有指定表空间,会存储到默认的表空间
  • 在删除表的时候,基于表的索引会被删除
索引的工作原理

创建索引的时候,oracle会先在表空间中给索引开辟一个空间,并按索引字段对应的值进行分组,并把分好组的地址rowId存入索引空间中,当再次查询的时候,数据库会自动判断查询的条件中是否建有索引,如果有,则根据索引去查询符合条件的数据。

索引的创建

索引的创建有两种

  • 自动创建--即在创建主见primarykey或者唯一性约束unique的时候,数据库会自动在相应的列上,创建唯一性索引。一般业务过程中通过逐渐查询比较频繁,提升查询效率。
  • 手动创建--即在不唯一的裂伤创建非唯一的索引,加速查询效率。create index index_xxxx on mytable(创建索引的列) ta b lespace 表空间(表空间可以不指定) 工具创建。
索引的弊端

一般在数据比较大的表中并且经常查询的字段上才建立索引,数据量小或者不经常查询的字段建立索引的话,不仅占用内存空间,而且会降低查询效率,索引不是越多越好。
以下情形不要创建索引

  • 表很小
  • 表不经常作为连接条件的
  • 表经常更新的。
    系统日志历史表必须增加索引,效率超高。
执行计划

查询索引是否生效以及预估索引性能效果等

explain plan window 窗口

对查询语句按F5

数据字典

主要存储的是数据库系统信息,由数据库系统自己去维护管理,一般我们只进行查询,不作修改。

PLSQL

是oracle对sql语言的过程化扩张,是存储过程的基础。

组成:声明部分、可执行部分、异常处理部分、普通变量、引用变量(%type)、记录行变量(%rowtype)

使用引用类型,当列中的数据类型发生改变,不需要修改变列的类型。而使用普通方式,当列的类型改变时,需要修改变列的类型。使用%type是非常好的编程风格,因为它使得PL/SQL更加灵活,更加适应于对数据库定义的更新。

游标cursor

可以理解为数据库表返回的结果集,它带有向前移动的指针,并且每次只向前移动一行数据。

作用:可以临时存储返回的多行数据,通过变量游标,可以得到每一行的数据。

存储过程 program window--procedure

定义:是一组预编译的sql语句,也就是给plsql语句包装起来,完成一次创建任意调用的功能,相当于java中的方法。
作用:1.在开发中,有时候为了某种特定的业务功能,需要对数据库进行多次的连接关闭,这种连接关闭是很耗费资源的。并且会对数据进行多次的IO读写,性能比较低,如果把业务功能放在plsql中,只需要连接关闭一次数据库就可以实现我们的业务功能,大大提高了效率。

2.更好的安全机制,对于没有权限执行存储过程的用户,也可以授权他们执行存储过程。

3.对应大量的sql语句和重复执行的sql语句,存储过程执行要快。
参数:不带参数的、待输入参数的,待输入输出参数的。

存储过程和存储函数的区别

1.存储过程可以有返回值也可以没有返回值,存储函数必须有返回值。

2.存储过程和存储函数都可以通过输出参数out实现多个返回值。
如何选择:

原则上只有一个返回值的用存储函数,否则用存储过程,但是我们一般都使用存储过程

  • 1.存储过程可以返回值也可以没有返回值,存储的灵活性。
  • 2.存储过程既然有返回值了,可以替代存储函数
  • 3.oracle新版本中已经不推荐适用存储函数了。
触发器
  • 是一小段plsql程序
  • 用来触发dml(insert、update、delete)操作的
  • 在进行dml操作时会自动触发执行的一段程序
    换句话说:触发器就是在执行某个操作(增删改)的时候出发一个动作(一段程序)。有点像struts2的拦截器,可以对cud增强。
  • 触发器类型
    语句级触发器(表级触发器):在指定的操作语句执行之前或之后执行一次,不管它影响了多少行
    行级触发器:出发语句作用的每一条语句都会被触发。
相关推荐
TDengine (老段)7 小时前
TDengine IDMP 十大实用功能(7)
数据库·物联网·时序数据库·tdengine·涛思数据·工业数据·idmp
Decay__7 小时前
15_MySQL 数据同步与迁移方案 —— 复制 / DataX / Canal / 异构同步(对标 Oracle GoldenGate)
运维·数据库·sql·mysql·架构
zjx23887 小时前
oracle11g转Gbase8s库SQL常见问题修改
数据库·sql
真上帝的左手7 小时前
30. 技术专题-‌应用框架组件-缓存-Redis
数据库·redis·分布式·缓存·中间件
雪芽蓝域zzs7 小时前
第 2 章:整合 MySQL + MyBatis,搭建数据库基础、实体类、Mapper、测试查询
数据库·mysql·mybatis
江湖中的阿龙8 小时前
Oracle 紧急安全警报:Java 9.1 分漏洞 CVE-2026-91403,撤销对 eMudhra 风险证书的信任
java·安全·oracle
实泽有之,无泽虚之8 小时前
SQL Server数据库备份与还原详解
数据库·sqlserver
DevOpenClub8 小时前
高考一分一段 API:分数查位次、科类枚举与历史对照
linux·数据库·高考
Java后端的Ai之路8 小时前
Java并发编程07-等待通知机制优化循环等待
java·数据库·python
AllData公司负责人8 小时前
AllData 可定义数据中台完成信创适配|银河麒麟 + 海光X86 CPU / 华为鲲鹏ARM CPU+ OceanBase / 人大金仓国产化环境部署落地
大数据·arm开发·数据库·人工智能·oceanbase·kingbase