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增强。
  • 触发器类型
    语句级触发器(表级触发器):在指定的操作语句执行之前或之后执行一次,不管它影响了多少行
    行级触发器:出发语句作用的每一条语句都会被触发。
相关推荐
这个DBA有点耶17 小时前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G17 小时前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备17 小时前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远18 小时前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
2601_9622186119 小时前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
张洛闻Eren20 小时前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安20 小时前
MySQL-触发器
数据库·mysql
白远山20 小时前
上海24小时自助健身房解决方案实战指南与经验分享
java·数据库·架构·需求分析
Omics Pro20 小时前
斯坦福Nature+Science|广义虚拟细胞基础大模型
数据库·人工智能·算法·机器学习·自然语言处理
2603_9651481120 小时前
AI+API选品:下一代智能商务助手雏形已现
java·大数据·数据库·人工智能·数据挖掘