面试常问的数据库问题及答案

如题所述

目前在职场中很难找到非常合格的数据库开发人员。有人说:“SQL开发是一门语言,它很容易学,但是很难掌握。”
在面试应聘的SQL Server数据库开发人员时,我运用了一套标准的基准技术问题。下面这些问题是我觉得能够真正有助于淘汰不合格应聘者的问题。它们按照从易到难的顺序排列。当你问到关于主键和外键的问题时,后面的问题都十分有难度,因为答案可能会更难解释和说明,尤其是在面试的情形下。
你能向我简要叙述一下SQL Server 2000中使用的一些数据库对象吗?
你希望听到的答案包括这样一些对象:表格、视图、用户定义的函数,以及存储过程;如果他们还能够提到像触发器这样的对象就更好了。如果应聘者不能回答这个基本的问题,那么这不是一个好兆头。
NULL是什么意思?
NULL(空)这个值是数据库世界里一个非常难缠的东西,所以有不少应聘者会在这个问题上跌跟头您也不要觉得意外。
NULL这个值表示UNKNOWN(未知):它不表示“”(空字符串)。假设您的SQL Server数据库里有ANSI_NULLS,当然在默认情况下会有,对NULL这个值的任何比较都会生产一个NULL值。您不能把任何值与一个 UNKNOWN值进行比较,并在逻辑上希望获得一个答案。您必须使用IS NULL操作符。
 
什么是索引?SQL Server 2000里有什么类型的索引?
任何有经验的数据库开发人员都应该能够很轻易地回答这个问题。一些经验不太多的开发人员能够回答这个问题,但是有些地方会说不清楚。
简单地说,索引是一个数据结构,用来快速访问数据库表格或者视图里的数据。在SQL Server里,它们有两种形式:聚集索引和非聚集索引。聚集索引在索引的叶级保存数据。这意味着不论聚集索引里有表格的哪个(或哪些)字段,这些字段都会按顺序被保存在表格。由于存在这种排序,所以每个表格只会有一个聚集索引。非聚集索引在索引的叶级有一个行标识符。这个行标识符是一个指向磁盘上数据的指针。它允许每个表格有多个非聚集索引。
什么是主键?什么是外键?
主键是表格里的(一个或多个)字段,只用来定义表格里的行;主键里的值总是唯一的。外键是一个用来建立两个表格之间关系的约束。这种关系一般都涉及一个表格里的主键字段与另外一个表格(尽管可能是同一个表格)里的一系列相连的字段。那么这些相连的字段就是外键。
什么是触发器?SQL Server 2000有什么不同类型的触发器?
让未来的数据库开发人员知道可用的触发器类型以及如何实现它们是非常有益的

触发器是一种专用类型的存储过程,它被捆绑到SQL Server 2000的表格或者视图上。在SQL Server 2000里,有INSTEAD-OF和AFTER两种触发器。INSTEAD-OF触发器是替代数据操控语言(Data Manipulation Language,DML)语句对表格执行语句的存储过程。例如,如果我有一个用于TableA的INSTEAD-OF-UPDATE触发器,同时对这个表格执行一个更新语句,那么INSTEAD-OF-UPDATE触发器里的代码会执行,而不是我执行的更新语句则不会执行操作。
AFTER触发器要在DML语句在数据库里使用之后才执行。这些类型的触发器对于监视发生在数据库表格里的数据变化十分好用。
您如何确一个带有名为Fld1字段的TableB表格里只具有Fld1字段里的那些值,而这些值同时在名为TableA的表格的Fld1字段里?
这个与关系相关的问题有两个可能的答案。第一个答案(而且是您希望听到的答案)是使用外键限制。外键限制用来维护引用的完整性。它被用来确保表格里的字段只保存有已经在不同的(或者相同的)表格里的另一个字段里定义了的值。这个字段就是候选键(通常是另外一个表格的主键)。
另外一种答案是触发器。触发器可以被用来保证以另外一种方式实现与限制相同的作用,但是它非常难设置与维护,而且性能一般都很糟糕。由于这个原因,微软建议开发人员使用外键限制而不是触发器来维护引用的完整性。
对一个投入使用的在线事务处理表格有过多索引需要有什么样的性能考虑?
你正在寻找进行与数据操控有关的应聘人员。对一个表格的索引越多,数据库引擎用来更新、插入或者删除数据所需要的时间就越多,因为在数据操控发生的时候索引也必须要维护。
你可以用什么来确保表格里的字段只接受特定范围里的值?
这个问题可以用多种方式来回答,但是只有一个答案是“好”答案。您希望听到的回答是Check限制,它在数据库表格里被定义,用来限制输入该列的值。
触发器也可以被用来限制数据库表格里的字段能够接受的值,但是这种办法要求触发器在表格里被定义,这可能会在某些情况下影响到性能。因此,微软建议使用Check限制而不是其他的方式来限制域的完整性。
<b?返回参数和output参数之间的区别是什么?>如果应聘者能够正确地回答这个问题,那么他的机会就非常大了,因为这表明他们具有使用存储过程的经验。
返回参数总是由存储过程返回,它用来表示存储过程是成功还是失败。返回参数总是INT数据类型。
OUTPUT参数明确要求由开发人员来指定,它可以返回其他类型的数据,例如字符型和数值型的值。(可以用作输出参数的数据类型是有一些限制的。)您可以在一个存储过程里使用多个OUTPUT参数,而您只能够使用一个返回参数。
什么是相关子查询?如何使用这些查询?
经验更加丰富的开发人员将能够准确地描述这种类型的查询。
相关子查询是一种包含子查询的特殊类型的查询。查询里包含的子查询会真正请求外部查询的值,从而形成一个类似于循环的状况。</b?返回参数和output参数之间的区别是什么?>
温馨提示:内容为网友见解,仅供参考
无其他回答

MySQL面试常问题目精选mysql简单面试题
MySQL中的SQL语句是指在MySQL数据库中运行的一些数据定义或操作指令,用于定义或操作MySQL数据库中的表及表中数据。而普通查询语句指用于在MySQL数据库表中检索数据的查询语句,如SELECT等关键字。二、SQL语句方面的问题 3. 请解释MySQL中如何使用子查询?MySQL中的子查询是指引用在单个SQL语句中的另一个...

oracle数据库面试问题
解答:1.DESCRIBE命令 2.DBMS_METADATA.GET_DDL 包 6. 怎样查看数据库引擎的'报错 解答:alert log.7. 比较truncate和delete 命令 解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要 rollback segment .而Delete是DML操作, 需要rollback segment 且花费较长时间.8...

Oracle数据库的面试题目及答案
3.Oracle中char和varchar2数据类型有什么区别?有数据”test”分别存放到10)和varchar2(10)类型的字段中,其存储长度及类型有何区别?答案:区别: 1).CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“test",对于CHAR (10),;

24个必须掌握的数据库面试问题
3、非自增主键可能导致频繁的数据移动和碎片生成,使用自增列可以保持索引结构紧凑。4、InnoDB默认使用自增主键进行索引优化,提升查询效率。二、数据索引提高效率的原因 数据索引通过预先构建的结构减少全表扫描,显著提升查询速度,特别是等值查询。三、B+树索引与哈希索引的区别 B+树是有序多叉树,具有...

16个必须掌握的数据库面试题(附答案)
16个关键的数据库面试问题及解答为什么选择自增列作为主键?1. InnoDB默认的主键策略:主键作为聚集索引。无显式主键时,选择唯一且无NULL值的索引;若无,会使用隐含的ROWID,自增保证插入顺序。2. 数据结构决定,自增主键利于插入和页面管理。数据索引为何提高效率?数据索引有序,查询时可直接定位,效率...

数据库面试常问问题有哪些?
C:一致性,事务的执行结果必须使数据库从一个一致性状态转为另一个一致性状态。一致性状态:1.系统状态满足数据库的完整性约束,2.系统的状态反映数据库所描述的现实世界的真实状态。I:隔离性:并发执行的事务不会相互影响,其对数据库的影响和他们串行执行时一样。D:持久性:事务一旦提交,对数据...

Oracle面试题(基础篇)
个人理解,数据库性能最关键的因素在于IO,因为操作内存是快速的,但是读写磁盘是速度很慢的,优化数据库最关键的问题在于减少磁盘的IO,就个人理解应该分为物理的和逻辑的优化, 物理的是指oracle产品本身的一些优化,逻辑优化是指应用程序级别的优化 物理优化的一些原则: 1). Oracle的运行环境(网络,硬件等) 2). 使用...

史上最全Redis面试题,让面试官问无可问(附答案)
1、什么是 Redis?简述它的优缺点?Redis 是 Remote Dictionary.Server 的简写,是一种纯内存的 Key-Value 类型数据库,性能极高,每秒可处理超过 10 万次读写操作。其主要优点包括:极高的性能、支持多种数据结构、数据持久化、内存数据集大小限制、数据淘汰策略等。缺点是数据库容量受物理内存限制,不...

25面试题教你如何优化MySQL数据库mysql优化面试题
如何优化MySQL数据库,使它更有效率、更高效地工作,是每个开发人员都想知道的答案。下面介绍的25道面试题将帮助您掌握MySQL数据库的最佳优化。1.什么是MySQL优化?MySQL优化是指通过构建高性能MySQL数据库服务器来改善MySQL数据库的性能和性能。2.如何优化MySQL查询?为了优化MySQL查询,可以通过以下几种方式...

数据库的面试会问什么问题
这个问题可以用多种方式来回答,但是只有一个答案是“好”答案。您希望听到的回答是Check限制,它在数据库表格里被定义,用来限制输入该列的值。触发器也可以被用来限制数据库表格里的字段能够接受的值,但是这种办法要求触发器在表格里被定义,这可能会在某些情况下影响到性能。因此,微软建议使用Check限制...

相似回答