数据库面试题

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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表示出错或到了最后。

相关文档
最新文档