Database工程师面试笔试题目

上传人:冷*** 文档编号:18972368 上传时间:2021-01-05 格式:DOCX 页数:3 大小:42.49KB
返回 下载 相关 举报
Database工程师面试笔试题目_第1页
第1页 / 共3页
Database工程师面试笔试题目_第2页
第2页 / 共3页
Database工程师面试笔试题目_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述
Database工程师面试笔试题目Database工程师面试笔试题目难吗?求职面试时,面试官一般都会问你一些问题,也可能是通过问卷的形式提问,怎么回答才是最好的呢?这里给大家分享一些Database工程师面试笔试题目,希望对大家有所帮助。Database工程师题库1、查询所有教师和同学的name、sex和birthday.2、查询所有“女”教师和“女”同学的name、sex和birthday.3、查询成绩比该课程平均成绩低的同学的成绩表。4、查询所有任课教师的Tname和Depart.5 查询所有未讲课的教师的Tname和Depart.6、查询至少有2名男生的班号。7、查询Student表中不姓“王”的同学记录。8、查询Student表中每个学生的姓名和年龄。9、查询Student表中最大和最小的Sbirthday日期值。10、以班号和年龄从大到小的顺序查询Student表中的全部记录。11、查询“男”教师及其所上的课程。12、查询最高分同学的Sno、Cno和Degree列。13、查询和“李军”同性别的所有同学的Sname.14、查询和“李军”同性别并同班的同学Sname.15、查询所有选修“计算机导论”课程的“男”同学的成绩表什么是聚集索引和非聚集索引(1)非聚集索引非聚集索引与课本中的索引类似。数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置。索引中的项目按索引键值的顺序存储,而表中的信息按另一种顺序存储(这可以由聚集索引规定)。如果在表中未创建聚集索引,则无法保证这些行具有任何特定的顺序。典型的桌面数据库使用的是非聚集索引。在这类索引中,索引键值是有序的,而每个索引节点所指向的数据行是无序的。一个SQLServer表最多可以拥有255个非聚集索引。非聚集索引与聚集索引一样有 B-树结构,但是有两个重大差别:1、数据行不按非聚集索引键的顺序排序和存储。2、非聚集索引的叶层不包含数据页。相反,叶节点包含索引行。每个索引行包含非聚集键值以及一个或多个行定位器,这些行定位器指向有该键值的数据行(如果索引不唯一,则可能是多行)。非聚集索引可以在有聚集索引的表、堆集或索引视图上定义。在SQL Server中,非聚集索引中的行定位器有两种形式:1、如果表是堆集(没有聚集索引),行定位器就是指向行的指针。该指针用文件标识符 (ID)、页码和页上的行数生成。整个指针称为行 ID。2、如果表是堆集(没有聚集索引),行定位器就是指向行的指针。该指针用文件标识符 (ID)、页码和页上的行数生成。整个指针称为行 ID。由于非聚集索引将聚集索引键作为其行指针存储,因此使聚集索引键尽可能小很重要。如果表还有非聚集索引,请不要选择大的列作为聚集索引的键。在创建非聚集索引之前,应先了解您的数据是如何被访问的。可考虑将非聚集索引用于:包含大量非重复值的列,如姓氏和名字的组合(如果聚集索引用于其它列)。如果只有很少的非重复值,如只有 1 和0,则大多数查询将3、不使用索引,因为此时表扫描通常更有效。1、不返回大型结果集的查询。2、返回精确匹配的查询的搜索条件(WHERE 子句)中经常使用的列。3、经常需要联接和分组的决策支持系统应用程序。应在联接和分组操作中使用的列上创建多个非聚集索引,在任何外键列上创建一个聚集索引。4、在特定的查询中覆盖一个表中的所有列。这将完全消除对表或聚集索引的访问。(2)聚集索引聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。聚集索引在系统数据库表sysindexes 内有一行,其 indid =1。数据链内的页和其内的行按聚集索引键值排序。所有插入都在所插入行中的键值与排序顺序相匹配时执行。SQLServer将索引组织为B-树。索引内的每一页包含一个页首,页首后面跟着索引行。每个索引行都包含一个键值以及一个指向较低级页或数据行的指针。索引的每个页称为索引节点。B-树的顶端节点称为根节点。索引的底层节点称为叶节点。每级索引中的页链接在双向链接列表中。在聚集索引内数据页组成叶节点。根和叶之间的任何索引级统称为中间级。对于聚集索引,sysindexes.root 指向它的顶端。SQL Server 沿着聚集索引浏览以找到聚集索引键对应的行。为找到键的范围,SQLServer 浏览索引以找到这个范围的起始键值,然后用向前或向后指针扫描数据页。为找到数据页链的首页,SQL Server从索引的根节点开始沿最左边的指针进行扫描.聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。例如,如果应用程序执行的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提高此类查询的性能。同样,如果对从表中检索的数据进行排序时经常要用到某一列,则可以将该表在该列上聚集(物理排序),避免每次查询该列时都进行排序,从而节省成本。对于聚集索引,人们往往有一些错误的认识。其中,最常见的错误有:1、聚集索引会降低insert操作的速度,因为必须要向后移动一半的数据来为新插入的行腾出空间。这种认识是错误的,因为可以利用填充因子控制填充的百分比,从而在索引页上为新插入的数据保留空间。如果索引页填满了,SQLServer将会进行页拆分,在这种情况下只有第一个页才会受到影响。2、在使用标识列的主键上创建聚集索引是一种好的设计方法,它可以使对表的操作达到最快速度。这种认识是错误的,它浪费了创建其它更有效的聚集索引的机会。并且,使用这种方法会把每个新插入的记录行都存储到表尾部的同一个的数据页中,这将导致数据库的热点和锁争用。笔者曾经见过采用这种方法设计的数据库,对于每一个新订单,客户服务人员都不得不等待数分钟来加以确认。3、聚集索引是具有魔力的。如果哪个查询的速度不够快,那么就在该列上创建聚集索引,对于表的操作速度一定会得到提高。这种认识也是错误的,聚集索引只是比非聚集索引稍稍快了那么一点点。因为在每个表上只能创建一个聚集索引,所以它也是一种宝贵的性能资源,只有在那些经常作为条件查询一组记录行的列上才应该建立聚集索引。Oracle中delete,truncate和drop的区别Delete命令用来删除表的全部或者一部分数据行,执行delete之后,用户需要提交(commmit)或者回滚(rollback)transaction 来执行删除或者撤销删除, delete命令会触发这个表上所有的delete触发器。Truncate删除表中的所有数据, 这个操作不能回滚,也不会触发这个表上的触发器,TRUNCATE比delete更快,占用的空间更小。Drop命令从数据库中删除表, 所有的数据行,索引和权限也会被删除,所有的DML触发器也不会被触发,这个命令也不能回滚。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!