数据库面试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
就业面试题库
─数据库部分
1.谈谈你对Oracle的理解。
Oracle是一系列产品的总和,也可以说是一个平台,它包含Oracle数据库、Oracle 中间件、Oracle管理软件等,我简单的描述一下对于Oracle数据库的理解。它是一种基于网络访问的可跨平台的关系型数据库,具有较强的可移植性;通过连接存储池(connection polling)和多路复用(multiplexing)机制来实现动态可伸缩性;它通过并行服务器(Parallel Server Option )来提高系统的可用性;Oracle的自动备份和恢复功能,提供了对大规模和更加细化的分布式操作系统的支持等等。
2.主键的作用有哪些?
1)保证数据的唯一性,避免发生数据重复的情况。
2)因为主键可以唯一标识某一行记录,所以能确保执行数据更新、删除的时候不
3)会出现张冠李戴的错误。
4)主键常常与外键构成参照完整性约束,防止出现数据不一致。
3.索引对数据并发会有影响吗?
索引能大大提高对于数据查询的访问速度,但当有大量基于数据插入的并发操作时,索引反而会降低并发操作的执行速度;当然如果有行级锁的话,情况又会有变化。
4.查询数据库中的某一个到某一个段之间的SQL语句?(比如查询第20到30条的数
据)
Oracle:
select * from (select rownum r, a.* from table a where rownum <= 30) where r >= 20 SQL Server:
select * from( select top 21 * from (select top 30 * from test1 order by _id ) t order by _id desc) t order by _id
5.SQL Server中的内置函数有哪些?
字符串函数,如:LOWER(),UPPER() , REPLACE(), STUFF(),SUBSTRING()…
日期函数,如:GETDATE(), DATEADD(), DATEDIFF(), DATENAME(), DATEPART()..
数学函数,如:CEILING(), FLOOR(), ROUND(), SIGN()…
系统函数,如:CONVERT(), DATALENGTH(), CURRENT_USER()…
聚合函数,如:SUM(),MAX(),STDEV()……
b
6.数据库的设计原理。
1)原始单据与实体之间的关系
2)主键与外键
3)范式标准
4)完整性约束
7.存储过程的理解。
存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是SQL语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。
存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。
可以出于任何使用SQL语句的目的来使用存储过程,它具有以下优点:
1)可以在单个存储过程中执行一系列SQL 语句。
2)可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
3)存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快。
8.在Oracle大数据量下的分页解决方法。
type refCursorType is REF CURSOR; --游标类型定义,用于返回数据集
procedure sp_Page(p_PageSize int, --每页记录数
p_PageNo int, --当前页码,从 1 开始
p_SqlSelect varchar2, --查询语句,含排序部分
p_SqlCount varchar2, --获取记录总数的查询语句
p_OutRecordCount out int,--返回总记录数
p_OutCursor out refCursorType)
as
v_sql varchar2(3000);
v_count int;
v_heiRownum int;
v_lowRownum int;
begin
----取记录总数
execute immediate p_SqlCount into v_count;
p_OutRecordCount := v_count;
----执行分页查询
v_heiRownum := p_PageNo * p_PageSize;
v_lowRownum := v_heiRownum - p_PageSize + 1;
v_sql := 'SELECT *
FROM (
SELECT A.*, rownum rn
FROM ('|| p_SqlSelect ||') A
WHERE rownum <= '|| to_char(v_heiRownum) || '
) B
WHERE rn >= ' || to_char(v_lowRownum) ;
--注意对rownum别名的使用,第一次直接用rownum,第二次一定要用别名rn
OPEN p_OutCursor FOR v_sql;
end sp_Page;
9.存储过程和函数的区别
存储过程是用户定义的一系列SQL语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。
10.事务是什么?
事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务:原子性,事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。一致性,事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。隔离性,由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。持久性,事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。
11.游标的作用?如何知道游标已经到了最后?
游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表示出错或到了最后。