《2022年银行数据库面试题.docx》由会员分享,可在线阅读,更多相关《2022年银行数据库面试题.docx(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选学习资料 - - - - - - - - - Oracle 常见面试题1、对数据库SQL2005、ORACLE熟识吗?RDBMS数据库,一般应用在一些中型数据库的SQL2005是微软公司的数据库产品;是一个应用,不能跨平台;ORACLE 是 ORACLE 公司的数据产品,支持海量数据储备,支持分布式布暑,支持多用户,跨平台,数据安全完整性掌握性能优越,是一个 ORDBMS ,一般用在大型公司;2 、能不能设计数据库?如何实现数据库导入与导出的更新使用 POWERDISINE工具的使用,一般满意第三范式就可以了;EXP 与 IMP 数据库的规律导入与导出3 、如何只显示重复数据,或不显示重复
2、数据 显示重复: select * from tablename group by id having count*1 不显示重复:select * from tablename group by id having count*=1 4 、什么是数据库的映射 就是将数据库的表与字段对应到模型层类名与属性的过程 . 5 、写分页有哪些方法,你一般用什么方法?用 SQL 语句写一个分页?如何用储备过程写分页?在 SQLSERVER 中使用 TOP 分页,在 ORACLE 中用 ROWNUM,或分析函数ROW_NUMBER 使用 TOP :select top 20,n.* from tablen
3、ame n minus select top 10,m.* from tablename m 使用分析函数:select * from select n.*,row_number overorder by columnname num from tablename n where num=10 and num =20; 使用过程时,只要将分页的范畴用两个参数就可以实现;在ORACLE中,要将过程封装在包里,仍要用动态游标变量才能实现数据集的返回;6 、ORACLE 中左连接与右连接 左连接: LEFT JOIN 右连接: RIGHT JOIN select from tablename1 n
4、left join tablename2 m on = 用 WHERE 实现:select from tablename1 n, tablename2 m where n.columnname+= 7、什么是反射、序列化、反序列化?事务有几种级别?名师归纳总结 反射是在程序运行时动态拜访DDL 的一种方式;序列化是将对象对二进制、XML等方式直第 1 页,共 11 页- - - - - - -精选学习资料 - - - - - - - - - 接向文件的储备;反序列化是将储备到文件的对象取出的过程;事务的级别的三种:页面级、 应用程序级、数据库级;8 、数据测试如何测试?在 PLSQL 里对过程
5、或函数可能通过专用的测试工具,通过对9 、用事务的时候,假如在业务规律层中,调用数据库拜访层中的方法,拜访层中有许多类,类又有许多方法,每个方法都要实现,那么如何处理?通用数据拜访层的实现10 、什么时候会用到触发器A 安全治理、 B 日志治理、 C 复杂业务规律实现11、如何在数据库中显示树掌握?用父 ID 与子 ID 来实现12、如何实现数据库的优化?A、调整数据结构的设计;这一部分在开发信息系统之前完成,程序员需要考虑是否使用ORACLE 数据库的分区功能,对于常常拜访的数据库表是否需要建立索引等;B、调整应用程序结构设计;这一部分也是在开发信息系统之前完成,程序员在这一步需要考虑应用程
6、序使用什么样的体系结构,是使用传统的 Client/Server 两层体系结构,仍是使用Browser/Web/Database 的三层体系结构; 不同的应用程序体系结构要求的数据库资源是不同的;C、调整数据库 SQL 语句;应用程序的执行最终将归结为数据库中的 SQL 语句执行, 因此 SQL语句的执行效率最终打算了 ORACLE 数据库的性能;ORACLE 公司举荐使用 ORACLE 语句优化器 Oracle Optimizer和行锁治理器row-level manager来调整优化 SQL 语句;D、调整服务器内存安排;内存安排是在信息系统运行过程中优化配置的,数据库治理员可以依据数据库
7、运行状况调整数据库系统全局区SGA 区的数据缓冲区、日志缓冲区和共享池的大小;仍可以调整程序全局区PGA 区的大小;需要留意的是,SGA 区不是越大越好,SGA区过大会占用操作系统使用的内存而引起虚拟内存的页面交换,这样反而会降低系统;E、调整硬盘 I/O ,这一步是在信息系统开发之前完成的;数据库治理员可以将组成同一个表空间的数据文件放在不同的硬盘上,做到硬盘之间 I/O 负载均衡;F、调整操作系统参数,例如: 运行在 UNIX 操作系统上的 ORACLE 数据库, 可以调整 UNIX数据缓冲池的大小,每个进程所能使用的内存大小等参数;13. 如何使用 Oracle 的游标?名师归纳总结 1
8、. oracle中的游标分为显示游标和隐式游标第 2 页,共 11 页- - - - - - -精选学习资料 - - - - - - - - - 2. 显示游标是用cursor.is命令定义的游标, 它可以对查询语句select返回的多条记录进行处理;隐式游标是在执行插入 insert、删除 delete、修改 update 和返回单条记录的查询 select 语句时由 PL/SQL自动定义的;3. 显式游标的操作:打开游标、操作游标、关闭游标;PL/SQL 隐式地打开 SQL游标,并在它内部处理 SQL语句,然后关闭它14. Oracle 的导入导出有几种方式,有何区分?1. 使用 orac
9、le 工具 exp/imp 2. 使用 plsql 相关工具方法 1. 导入 / 导出的是二进制的数据,sql 语句的文本文件15. Oracle是怎样分页的?hibernate也是使用Oracle 中使用 rownum来进行分页 , 这个是效率最好的分页方法,rownum来进行 oralce分页的select * from select rownum r,a from tabName where rownum 10 16. Oracle 中使用了索引的列,对该列进行where 条件查询、 分组、排序、使用集合函数,哪些用到了索引?均会使用索引,值得留意的是复合索引如在列A 和列 B上建立的索
10、引可能会有不怜悯况v17. Oracle 中 where 条件查询和排序的性能比较?Order by 使用索引的条件极为严格,只有满意如下情形才可以使用索引,1. order by 中的列必需包含相同的索引并且索引次序和排序次序一样2. 不能有 null 值的列所以排序的性能往往并不高,所以建议尽量防止 order by 18. 说明冷备份和热备份的不同点以及各自的优点?冷备份发生在数据库已经正常关闭的情形下,将关键性文件拷贝到另外位置的一种说法热备份是在数据库运行的情形下,采纳归档方式备份数据的方法名师归纳总结 - - - - - - -第 3 页,共 11 页精选学习资料 - - - -
11、- - - - - 冷备的优缺点:1 是特别快速的备份方法只需拷贝文件2 简洁归档简洁拷贝即可3 简洁复原到某个时间点上只需将文件再拷贝回去4 能与归档方法相结合,作数据库“ 最新状态” 的复原;5 低度保护,高度安全;冷备份不足:1 单独使用时,只能供应到“ 某一时间点上” 的复原;2 在实施备份的全过程中,数据库必需要作备份而不能作其它工作;也就是说, 在冷备份 过程中,数据库必需是关闭状态;3 假设磁盘空间有限,只能拷贝到磁带等其它外部储备设备上,速度会很慢;4 不能按表或按用户复原;热备的优缺点 1 可在表空间或数据文件级备份,备份时间短;2 备份时数据库仍可使用;3 可到达秒级复原复
12、原到某一时间点上;4 可对几乎全部数据库实体作复原;5 复原是快速的,在大多数情形下在数据库仍工作时复原;热备份的不足是: 1 不能出错,否就后果严峻; 2 假设热备份不胜利,所得结果不行用于时间点的复原; 3 因难于保护,所以要特殊认真当心,不答应“ 以失败而告终” ;19. 说明什么是死锁,如何解决Oracle 中的死锁?假如是表级锁就简言之就是存在加了锁而没有解锁,可能是使用锁没有提交或者回滚事务,不能操作表,客户端处于等在状态,假如是行级锁就不能操作锁定行 解决方法:1. 查找出被锁的表 select from v$locked_object a,dba_objects b where
13、 = ; select b.username,b.sid,b.serial#,logon_time 名师归纳总结 - - - - - - -第 4 页,共 11 页精选学习资料 - - - - - - - - - from v$locked_object a,v$session b where = order by ; 2. 杀进程中的会话alter system kill session sid,serial#; 20. 简述 oracle 中 dml 、 ddl 、dcl 的使用Dml 数据操纵语言,如 select 、 update 、delete ,insert Ddl 数据定义语言,
14、如 create table 、 drop table 等等Dcl 数据掌握语言,如 commit 、 rollback、grant 、 invoke 等21. 说说 oracle 中的常常使用到得函数Length 长度、 lower 小写、 upper 大写, to_date 转化日期, to_char 转化字符Ltrim 去左边空格、 rtrim 去右边空格, substr 取字串, add_month 增加或者减掉月份、to_number 转变为数字22. 怎样创建一个一个索引, 索引使用的原就, 有什么优点和缺点创建标准索引:CREATE INDEX 索引名 ON 表名 列名 创建唯独
15、索引 : TABLESPACE 表空间名 ; CREATE unique INDEX 索引名 ON 表名 列名 TABLESPACE 表空间名 ; 创建组合索引 : CREATE INDEX 索引名 ON 表名 列名 1, 列名 2 创建反向键索引 : TABLESPACE 表空间名 ; CREATE INDEX 索引名 ON 表名 列名 reverse TABLESPACE 表空间名 ; 索引使用原就:索引字段建议建立 NOT NULL约束 常常与其他表进行连接的表,在连接字段上应当建立索引;常常显现在 Where 子句中的字段且过滤性很强的,特殊是大表的字段,应当建立索引;可挑选性高的关键
16、字,应当建立索引;可挑选性低的关键字,但数据的值分布差异很大时,挑选性数据比较少时仍旧可以利用索引提高效率 复合索引的建立需要进行认真分析;尽量考虑用单字段索引代替:名师归纳总结 - - - - - - -第 5 页,共 11 页精选学习资料 - - - - - - - - - A、正确挑选复合索引中的第一个字段,一般是挑选性较好的且在 上;where 子句中常用的字段B、复合索引的几个字段常常同时以AND方式显现在Where 子句中可以建立复合索引;否就单字段索引;C、假如复合索引中包含的字段常常单独显现在Where子句中,就分解为多个单字段索引;D、假如复合索引所包含的字段超过3 个,那么
17、认真考虑其必要性,考虑削减复合的字段;E、假如既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;频繁 DML的表,不要建立太多的索引;不要将那些频繁修改的列作为索引列;索引的优缺点:有点:1. 创建唯独性索引,保证数据库表中每一行数据的唯独性2. 大大加快数据的检索速度,这也是创建索引的最主要的缘由 3. 加速表和表之间的连接,特殊是在实现数据的参考完整性方面特殊有意义;4. 在使用分组和排序子句进行数据检索时,缺点:1. 索引创建在表上,不能创建在视图上同样可以显著削减查询中分组和排序的时间;2. 创建索引和保护索引要消耗时间,这种时间随着数据量的增加而增加3. 索引需要占物
18、理空间, 除了数据表占数据空间之外,假如要建立聚簇索引,那么需要的空间就会更大每一个索引仍要占肯定的物理空间,4. 当对表中的数据进行增加、删除和修改的时候,索引也要动态的保护,降低了数据的维护速度23. 在 java 种怎样调用 oracle 储备过程 ; 在 java 中使用 CallableStatement 调用储备过程创建需要的测试表 :create table Testtid varchar210,tname varchar210; 第一种情形:无返回值 . create or replace procedure test_aparam1 in varchar2,param2 in
19、 varchar2 as begin insert into test valueparam1,param2; end; Java 调用代码 : 名师归纳总结 - - - - - - -第 6 页,共 11 页精选学习资料 - - - - - - - - - package ; import .*; import java.io.*; import .*; public class TestProcA public TestProcA public static void mainString args ResultSet rs = null; Connection conn = null;
20、CallableStatement proc = null; try oracle.jdbc.driver.OracleDriver; conn = DriverManager.getConnectionjdbc:oracle:thin:127.0.0.1:1521:test, test, test; proc = call test_a.,. ; 1, 1001; 2, TestA; ; catchException e ; finally try ifnull.=rs ; ifnull.=proc ; ifnull.=conn 名师归纳总结 - - - - - - -第 7 页,共 11
21、页精选学习资料 - - - - - - - - - ; catchException ex 其次种情形:有返回值的储备过程 返回值非列表 . 储备过程为 : create or replace procedure test_bparam1 in varchar2,param2 out varchar2 as begin select tname into param2 from test where tid=param1; end; Java 调用代码:package ; import .*; import java.io.*; import .*; public class TestProc
22、B public TestProcB public static void mainString args Connection conn = null; CallableStatement proc = null; try 名师归纳总结 - - - - - - -第 8 页,共 11 页精选学习资料 - - - - - - - - - ; conn = DriverManager.getConnectionjdbc:oracle:thin:127.0.0.1:1521:test, test, test; proc = call test_b.,. ; 1, 1001; 2, ; ; Outp
23、ut is:+2; catchException e ; finally try ifnull.=proc ; ifnull.=conn ; catchException ex 第三种情形:返回列表 . 由于 oracle 储备过程没有返回值,它的全部返回值都是通过 out 参数来替代的,列表同样也不例外,但由于是集合, 所以不能用一般的参数,create or replace package tpackage as type t_cursor is ref cursor; 必需要用 pagkage 了. 要分两部分来写:名师归纳总结 - - - - - - -第 9 页,共 11 页精选学习
24、资料 - - - - - - - - - procedure test_cc_ref out t_cursor; end ; create or replace package body tpackage as procedure test_cc_ref out t_cursor is begin open c_ref for select * from test; end test_c; end tpackage; Java 调用代码:package ; import .*; import java.io.*; import .*; public class TestProcB public
25、 TestProcB public static void mainString args Connection conn = null; CallableStatement proc = null; ResultSet rs = null; try ; conn = DriverManager.getConnectionjdbc:oracle:thin:127.0.0.1:1521:test, test, test; proc = . = call b. ; 名师归纳总结 - - - - - - -第 10 页,共 11 页精选学习资料 - - - - - - - - - 1, ; ; while 1 + t + 2; catchException e ; finally try ifnull.=rs ; ifnull.=proc ; ifnull.=conn ; catchException ex 名师归纳总结 - - - - - - -第 11 页,共 11 页
限制150内