数据库面试题

时间:2022-04-04 01:27:37 面试技巧 我要投稿

数据库面试题

  参加数据库面试中,面试题目对面试者来说很重要,那么你知道哪些面试题目呢?以下是阳光网小编帮你们整理的数据库面试题,一起来学习啦。

数据库面试题

  数据库面试题篇一

  1、怎么在存储过程中使用临时表?

  在Oracle中,临时表分为SESSION、TRANSACTION两种,SESSION级的临时表数据在整个SESSION都存在,直到结束此次SESSION;而 TRANSACTION级的临时表数据在TRANACTION结束后消失,即COMMIT/ROLLBACK或结束SESSION都会清除 TRANACTION临时表数据。

  1、ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)

  2、ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表。

  3、临时表(无论会话级还是事务级)中的数据都是会话隔离的,不同session之间不会共享数据。

  4、在存储中使用事务级临时表时,注意commit前删除掉本事务的数据,否则可能会出现数据不断增加的情况(原因尚未搞明白)。

  5、 两种临时表的语法:

  create global temporary table 临时表名 on commit preserve|delete rows; 用preserve时就是SESSION级的临时表,用delete就是TRANSACTION级的临时表。

  6、特性和性能(与普通表和视图的比较)

  临时表只在当前连接内有效;

  临时表不建立索引,所以如果数据量比较大或进行多次查询时,不推荐使用;

  数据处理比较复杂的时候时表快,反之视图快点;

  在仅仅查询数据的时候建议用游标: open cursor for 'sql clause';

  2、口述一下存储过程的写法

  基本结构+存储名+输出变量+ is +begin 开始+操作语句 +end 结束

  CREATE OR REPLACE PROCEDURE fun_xsreMobile

  (paR_intInterID_c number,

  paR_lngMobile_c number,

  Date_c number)

  is

  begin

  select * from (

  Select ID, CpID, MobState, Settled, SendDate, ReceCount, IsLocked, GateID, ExtData,ReceTs

  From tb_prd_ofr where InterID =paR_intInterID_c and Mobile =paR_lngMobile_c and SendDate >=Date_c

  order by ID desc)

  where rownum=1;

  end;

  3、你了解oracle表分区吗?它有什么优缺点

  分区表:

  当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在张兴东279 版权所有物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。

  表分区的具体作用

  Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高。此外,分区还可以极大简化常见的管理任务,分区是构建千兆字节数据系统或超高可用性系统的关键工具。

  分区功能能够将表、索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区。每个分区有自己的名称,还可以选择自己的存储特性。从数据库管理员的角度来看,一个分区后的对象具有多个段,这些段既可进行集体管理,也可单独管理,这就使数据库管理员在管理分区后的对象时有相当大的灵活性。但是,从应用程序的角度来看,分区后的表与非分区表完全相同,使用 SQL DML 命令访问分区后的表时,无需任何修改。

  什么时候使用分区表:

  1、表的'大小超过2GB。

  2、表中包含历史数据,新的数据被增加都新的分区中。

  必须要建表之前就创建

  表分区有以下优点:

  1、改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。

  2、增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;

  3、维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;

  4、均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能。

  缺点:

  分区表相关:已经存在的表没有方法可以直接转化为分区表。不过 Oracle 提供了在线重定义表的功能。

  数据库面试题篇二

  1. 存储过程:存储过程就是编译好了的一些sql语句。

  01.存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。

  02. 可保证数据的安全性和完整性。通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。

  03.可以降低网络的通信量。存储过程主要是在服务器上运行,减少对客户机的压力。

  04:存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因 5:存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。

  2. 内联接,外联接区别?

  内连接是保证两个表中所有的行都要满足连接条件,而外连接则不然。

  在外连接中,某些不满足条件的列也会显示出来,也就是说,只限制其中一个表的行,而不限制另一个表的行。分左连接、右连接、全连接三种

  3. 触发器的作用?

  触发器是一中特殊的.存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。

  4. 什么是内存泄漏?

  一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字new等创建对象时,就从堆中为它分配一块内存,使用完后程序调用free或者delete释放该内存,否则就说该内存就不能被使用,我们就说该内存被泄漏了。

  5. 锁:在所以的DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。

  有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。

  6. 游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。

  7. 说出一些数据库优化方面的经验?

  用PreparedStatement 一般来说比Statement 性能高:一个sql 发给服务器去执行,涉及步骤:

  语法检查、语义分析, 编译,缓存.

  有外键约束会影响插入和删除性能,如果程序能够保证数据的完整性,那在设计数据库时就去掉外键。(比喻:就好比免检产品,就是为了提高效率,充分相信产品的制造商)

  看mysql 帮助文档子查询章节的最后部分,例如,根据扫描的原理,下面的子查询语句要比第二条关联查询的效率高:

  1. select e.name,e.salary where e.managerid=(select id from employee where name='zxx');

  2. select e.name,e.salary,m.name,m.salary from employees e,employees m where e.managerid = m.id and m.name='zxx';

  表中允许适当冗余,譬如,主题帖的回复数量和最后回复时间等

  将姓名和密码单独从用户表中独立出来。这可以是非常好的一对一的案例哟!

  还有索引对查询性能的改进也是值得关注的。

  数据库面试题篇三

  1. 说出数据连接池的工作机制是什么?

  J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。实现方式,返回的Connection 是原始Connection 的代理,代理Connection 的close 方法不是真正关连接,而是把它代理的Connection 对象还回到连接池中。

  2. xml 有哪些解析技术?区别是什么?

  有DOM,SAX,STAX 等. DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM 的树结构所造成的,这种结构占用的'内存较多,而且DOM 必须在解析文件之前把整个文档装入内存,适合对XML 的随机访问.SAX:不现于DOM,SAX 是事件驱动型的XML 解析方式。它顺序读取XML 文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML 文件,适合对XML 的顺序访问. STAX:Streaming API for XML (StAX)

  3. 你在项目中用到了xml 技术的哪些方面?如何实现的?

  用到了数据存贮,信息配置两方面。在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML 文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进行处理。在做软件配置时,利用XML 可以很方便的进行,软件的各种配置参数都存贮在XML 文件中

  4、数据库三范式是什么?

  第一范式(1NF):

  字段具有原子性,不可再分。所有关系型数据库系统都满足第一范式)数据库表中的字段都是单一属性的,不可再分。例如,姓名字段,其中的姓和名必须作为一个整体,无法区分哪部分是姓,哪部分是名,如果要区分出姓和名,必须设计成两个独立的字段。 第二范式(2NF):

  第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。要求数据库表中的每个实例或行必须可以被惟一地区分。通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字或主键。第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简而言之,第二范式就是非主属性非部分依赖于主关键字。

  第三范式(3NF):

  满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

  所以第三范式具有如下特征:

  1,每一列只有一个值

  2,每一行都能区分。

  3,每一个表都不包含其他表已经包含的非主关键字信息。

  例如,帖子表中只能出现发帖人的 id,而不能出现发帖人的 id,还同时出现发帖人姓名,否则,只要出现同一发帖人 id 的所有记录,它们中的姓名部分都必须严格保持一致,这就是数据冗余。

  5、说出一些数据库优化方面的经验?

  1、关键字段建立索引。

  2、使用存储过程,它使SQL变得更加灵活和高效。

  3、备份数据库和清除垃圾数据。

  4、SQL语句语法的优化。

  5、清理删除日志。

【数据库面试题】相关文章:

数据库常见面试题04-09

数据库常见面试题04-09

软件测试数据库面试题04-08

面试题及解析之情景模拟类面试题05-09

.net经典面试题04-08

微软面试题精选05-07

乐事面试题精选05-09

精选面试题目05-09

关于经典面试题05-09

面试题的妙答11-17