database面试题


Posted in 面试题 onMarch 28, 2013
1.什么是索引?SQL Server 2000里有什么类型的索引?任何有经验的数据库开发人员都应该能够很轻易地回答这个问题。一些经验不太多的开发人员能够回答这个问题,但是有些地方会说不清楚。
  简单地说,索引是一个数据结构,用来快速访问数据库表格或者视图里的数据。在SQL Server里,它们有两种形式:聚集索引和非聚集索引。聚集索引在索引的叶级保存数据。这意味着不论聚集索引里有表格的哪个(或哪些)字段,这些字段都会按顺序被保存在表格。由于存在这种排序,所以每个表格只会有一个聚集索引。非聚集索引在索引的叶级有一个行标识符。这个行标识符是一个指向磁盘上数据的指针。它允许每个表格有多个非聚集索引。
 2.NULL是什么意思?  NULL(空)这个值是数据库世界里一个非常难缠的东西,所以有不少应聘者会在这个问题上跌跟头您也不要觉得意外。
  NULL这个值表示UNKNOWN(未知):它不表示“”(空字符串)。假设您的SQL Server数据库里有ANSI_NULLS,当然在默认情况下会有,对NULL这个值的任何比较都会生产一个NULL值。您不能把任何值与一个 UNKNOWN值进行比较,并在逻辑上希望获得一个答案。您必须使用IS NULL操作符。
 3.什么是主键?什么是外键?
  主键是表格里的(一个或多个)字段,只用来定义表格里的行;主键里的值总是唯一的。外键是一个用来建立两个表格之间关系的约束。这种关系一般都涉及一个表格里的主键字段与另外一个表格(尽管可能是同一个表格)里的一系列相连的字段。那么这些相连的字段就是外键。
 4.什么是触发器?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语句在数据库里使用之后才执行。这些类型的触发器对于监视发生在数据库表格里的数据变化十分好用。
5.您如何确一个带有名为Fld1字段的TableB表格里只具有Fld1字段里的那些值,而这些值同时在名为TableA的表格的Fld1字段里?
  这个与关系相关的问题有两个可能的答案。第一个答案(而且是您希望听到的答案)是使用外键限制。外键限制用来维护引用的完整性。它被用来确保表格里的字段只保存有已经在不同的(或者相同的)表格里的另一个字段里定义了的值。这个字段就是候选键(通常是另外一个表格的主键)。
  另外一种答案是触发器。触发器可以被用来保证以另外一种方式实现与限制相同的作用,但是它非常难设置与维护,而且性能一般都很糟糕。由于这个原因,微软建议开发人员使用外键限制而不是触发器来维护引用的完整性。
  6.对一个投入使用的在线事务处理表格有过多索引需要有什么样的性能考虑?
  您正在寻找进行与数据操控有关的应聘人员。对一个表格的索引越多,数据库引擎用来更新、插入或者删除数据所需要的时间就越多,因为在数据操控发生的时候索引也必须要维护。
  7.您可以用什么来确保表格里的字段只接受特定范围里的值?
  这个问题可以用多种方式来回答,但是只有一个答案是“好”答案。您希望听到的回答是Check限制,它在数据库表格里被定义,用来限制输入该列的值。
触发器也可以被用来限制数据库表格里的字段能够接受的值,但是这种办法要求触发器在表格里被定义,这可能会在某些情况下影响到性能。因此,微软建议使用Check限制而不是其他的方式来限制域的完整性。
返回参数和OUTPUT参数之间的区别是什么?
  如果应聘者能够正确地回答这个问题,那么他的机会就非常大了,因为这表明他们具有使用存储过程的经验。返回参数总是由存储过程返回,它用来表示存储过程是成功还是失败。返回参数总是INT数据类型。OUTPUT参数明确要求由开发人员来指定,它可以返回其他类型的数据,例如字符型和数值型的值。(可以用作输出参数的数据类型是有一些限制的。)您可以在一个存储过程里使用多个OUTPUT参数,而您只能够使用一个返回参数。
  8.什么是相关子查询?如何使用这些查询?
  经验更加丰富的开发人员将能够准确地描述这种类型的查询。
  相关子查询是一种包含子查询的特殊类型的查询。查询里包含的子查询会真正请求外部查询的值,从而形成一个类似于循环的状况。
1、事务是什么?
所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。
2、oracle中truncate和delete命令有何区别?
(1)delete将在回滚段中产生回滚信息,truncate不产生,因此无论表中的记录多少,truncate执行都很快。
(2)truncate 是 DDL(数据库定义语言,如Create ,Drop,Grant,Revoke),执行隐含的commit,truncate不能回滚。任何没有提交的 DML(数据操纵语言DML,如Update,Insert,Delete) 改变也将会和truncate一起提交。
(3)truncate 重置表及其索引高水位标志high-water mark。全表扫描和索引快速全扫描读高水位标志下的所有数据块,因此在delete后全扫描性能没有提高,但truncate后将会变快。
(4)truncate 不触发 delete 触发器。
(5)没有对象权限允许一个用户 truncate 另一个用户的表。这样做需要 DROP ANY TABLE 系统权限。
(6)当一个表被 truncate,表及其索引的存储将被重置回初始大小。而 delete 不收缩表及其索引的大小。
(7)当父表有一个可用的引用完整性约束时不能被 truncate。必须先disable引用父表的外键约束,再truncate。
3、Oracle中char和varchar2数据类型有什么区别?有数据”test”分别存放到char(10)和varchar2(10)类型的字段中,其存储长度及类型有何区别?
A:char是定长字符类型,varchar2是变长字符类型。“test”在char(10)中被补齐空格,存储长度是10字节,在varchar2(10)中存储长度是4字节。

外关联的性能好于not exists,not exists 好于 not in。
因为数据库在遇到这两种语句的时候是要把数据进行一条一条的比对,如果in或者not in两侧的数据量在上万条的时候,进行比对的次数就是上亿次,很可能一个简单的sql语句就要执行半个小时以上。
6、Oracle中,需要在查询语句中把空值(NULL)输出为0,如何处理?
select nvl(c1,0) from t1;// nvl函数从两个表达式返回一个非 null 值。
10、什么是聚集索引,什么是非聚集索引,什么又是主键?
聚簇索引的顺序就是数据的物理存储顺序,叶节点就是数据节点。

非聚簇索引的顺序与数据物理排列顺序无关,叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。

能够唯一表示数据表中的每个记录的字段或者字段的组合就称为主键,通过它可强制表的实体完整性。

Tags in this post...

面试题 相关文章推荐
PHP高级工程师面试问题推荐
Jan 18 面试题
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
Feb 06 面试题
寻找迷宫的一条出路,o通路;X:障碍
Jul 10 面试题
编码实现字符串转整型的函数
Jun 02 面试题
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
Oct 03 面试题
数据库笔试题
May 09 面试题
介绍一下linux文件系统分配策略
Nov 17 面试题
linux面试题参考答案(10)
Nov 04 面试题
How to spawning asynchronous work in J2EE
Aug 29 面试题
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
Mar 23 面试题
不同浏览器创建XMLHttpRequest方法有什么不同
Nov 17 面试题
Unix/Linux开发面试题
Aug 16 面试题
存储过程的优点有哪些
Sep 27 #面试题
介绍一下游标
Jan 10 #面试题
DBA的职责都有哪些
May 16 #面试题
数据库专业英语
Nov 30 #面试题
几个SQL的面试题
Mar 08 #面试题
What is view? why do we have view?
Jun 22 #面试题
说一下mysql, oracle等常见数据库的分页实现方案
Sep 29 #面试题
You might like
使用PHP数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
php使用curl访问https示例分享
2014/01/17 PHP
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
Angular ng-class详解及实例代码
2016/09/19 Javascript
原生js仿jquery一些常用方法(必看篇)
2016/09/20 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
2016/10/10 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
2016/11/20 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
深入理解node.js之path模块
2017/05/03 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
2018/01/25 jQuery
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
微信小程序调用wx.getImageInfo遇到的坑解决
2020/05/31 Javascript
Python中optparse模块使用浅析
2015/01/01 Python
Python编写生成验证码的脚本的教程
2015/05/04 Python
django使用xlwt导出excel文件实例代码
2018/02/06 Python
利用python如何处理nc数据详解
2018/05/23 Python
使用python爬取B站千万级数据
2018/06/08 Python
Python最小二乘法矩阵
2019/01/02 Python
Python使用正则表达式分割字符串的实现方法
2019/07/16 Python
python Tensor和Array对比分析
2020/01/08 Python
Python @property原理解析和用法实例
2020/02/11 Python
解决python调用自己文件函数/执行函数找不到包问题
2020/06/01 Python
删除pycharm鼠标右键快捷键打开项目的操作
2021/01/16 Python
购买原创艺术品:Zatista
2019/11/09 全球购物
AURALog面试题软件测试方面
2013/10/22 面试题
软件配置管理有什么好处
2015/04/15 面试题
大三预备党员入党思想汇报
2014/01/08 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
活动费用申请报告
2015/05/15 职场文书
教师网络培训心得体会
2016/01/09 职场文书
思想品德课教学反思
2016/02/24 职场文书
Python爬虫:从m3u8文件里提取小视频的正确操作
2021/05/14 Python