软件工程师笔试题1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

sql相关的查询面试题收集及答案一//查询某表中的第30到40行的数据select*from表名where字段in(selecttop40字段from表名)and字段notin(selecttop30字段from表名)或者selecttop10*from表名where字段notin(selecttop30字段from表名)二//查询一个表中存在重复的字段“字段1”selectDISTINCT字段1from表名havingcount(字段1)1groupby字段1(并显示可能重复的次数)selectDISTINCT字段1,count(字段1)As次数from表名havingcount(字段1)1groupby字段1某门户网站数据库职位笔试题1、事务是什么?2、oracle中truncate和delete命令有何区别?3、Oracle中char和varchar2数据类型有什么区别?有数据”test”分别存放到char(10)和varchar2(10)类型的字段中,其存储长度及类型有何区别?4、参见如下表结构出版社:出版社代码char(2),出版社名称varchar2(32)图书:图书编号char(8),图书名称varchar2(128),出版社代码char(2),作者代号char(4),图书简介varchar2(128)作者:作者代号char(4),作者名称varchar2(10),性别char(1),年龄number(3),文学方向varchar2(64)获奖名单:获奖日期date,获奖人员char(4)编写SQL语句,找出“作者”库中没有出现在“获奖名单”库中所有作者信息的SQL语句(提示:使用notin、notexists以及外关联三种方法,并说明哪种方法最优。5、Oracle数据库表存在伪列rowid,请利用rowid编写一个SQL语句,从以下记录中找到唯一记录,并将其flag列更新为YNonamesexflag1张三1N1张三1N1张三1N6、Oracle中,需要在查询语句中把空值(NULL)输出为0,如何处理?7、见第四题“获奖名单”表,写出SQL语句,查询出在上一个月获奖的人员。8、见第四题“图书”表,在表上对图书名称、出版社代码、作者代号创建了组合索引,请问在执行如下语句时会不会利用到索引。Select*from图书where图书名称=’xxxx’Select*from图书where图书名称=’xxxx’and出版社代码=’bb’Select*from图书where图书名称=’xxxx’and作者代号=’ddd’Select*from图书where出版社代码=’yyy’9、编写一个简单的Oracle存储过程,输出参数必须有一个是结果集。专家对本试卷的分析:第一,这张笔试卷从题目的考点上来看,属于基础知识类的;第二,从难度上分析属于中等;第三,从题目的设置上来看,该公司的主要用意是考察笔试者的工作经验和项目经验,尽管是基础知识,但是只要没做过开发工作,想回答上来并不容易;第四,通篇只有第4题最后一问涉及到了“优化”的问题,因此判断该公司这张试题主要是面对开发职位的。请问在ASP中能否使用一条SQL语句同时操作两个表有两表Tab1,Tab2;1和2中有两相同字段“代码”,‘名称’,现欲用Tab1中的“代码”和Tab2中‘代码’相关联查询得到‘名称’来填充Tab1中的“名称”字段,在查询分析器中该如何写此语句?updatetab1set名称=tab2.名称fromtab1,tab2wheretab1.代码=tab2.代码有两表Tab1,Tab2;1和2中有两相同字段“代码”,‘名称’,现欲用Tab1中的“代码”和Tab2中‘代码’相关联查询得到‘名称’来填充Tab1中的“名称”字段,在查询分析器中该如何写此语句?updatetable1set名称=b.名称fromtable1ainnerjointable2bona.代码=b.代码1.磁盘柜上有14块73G的磁盘,数据库为200G大小包括日志文件,如何设置磁盘(要说明这14磁盘是怎么用的)?2.有两服务器群集,分别为node1和node2现在要打win200系统补丁,打完后,要重新启动,如何打补丁,不能影响用户使用(要用群集的术语详细说明)。3.有一个A数据库,分别复制到B和CB要求每次数据更新也同时更新,C每天更新一次就行,如何制定复制策略!4.有一个order表,有90个字段,20个索引,15个复合索引,其中有3个索引字段超过10个,如何进行优化5.有一个数据库200G大小,每天增加50M允许用户随时访问,制定备份策略(详细说明)。6.管理50台数据库,日常工作是检查数据库作业是否完成,你该如何完成这项检查工作?7.自定义函数和存储过程的区别是什么,什么情况下只能用自定义函数,什么情况下只能用存储过程8.SQL2005的新特性是什么?与oracle有什么区别?9.DBA的品质应该有哪些,你有哪些,有什么欠缺的?10。如果想配置SQLMail应该在服务器安装哪些软件!参考答案:1.磁盘柜上有14块73G的磁盘,数据库为200G大小包括日志文件,如何设置磁盘(要说明这14磁盘是怎么用的)?这个问题应该是考察硬件知识和数据库物理部署。首先需要知道这些磁盘是否要用于存放数据库备份文件和数据库性能(读/写)要求。来决定raid的级别。1)、如果偏重于性能考虑,而且不用存放数据库备份文件的话,考虑使用raid0+1,这样可使用的磁盘容量为:14*73*50%=511G。2)、如果读/写性能要求不高,而且还比较抠门的话,可以考虑raid5,这样可使用的磁盘容量为:13*73=949G。至于如何使用应该是说数据库物理文件的部署。注意说出将tempdb,datafile,logfile分开存放以减少I/O竞争即可。其实现在的条带化磁盘一般都会自动将文件分存,人为的分布已经越来越不重要了。2.有两服务器群集,分别为node1和node2现在要打win200系统补丁,打完后,要重新启动,如何打补丁,不能影响用户使用(要用群集的术语详细说明)。这个具体操作有点忘了。大致是:首先看哪个节点正在使用,通过节点IP(私有)访问另一个空闲节点,为其打上补丁,然后在群集管理器中停止该节点(也可以用命令行方式),重新启动。等到启动完毕,将切换使用节点,为另一个节点打补丁。然后重新启动。3.有一个A数据库,分别复制到B和CB要求每次数据更新也同时更新,C每天更新一次就行,如何制定复制策略!这个应该考察的是复制知识。a-b1)、如果使用SQLServer复制功能,那么让a-b使用事务性复制方式(同步复制)。2)、如果表不多,也可以自己写触发器,利用linkserver+distributetransaction。a-c1)、如果使用SQLServer复制功能,那么让a-b使用快照复制方式,在某一时间点进行一次性复制。2)、也可以自己写bat,将a备份后,通过ftp传输备份介质,恢复c。(比较麻烦,不推荐)4.有一个order表,有90个字段,20个索引,15个复合索引,其中有3个索引字段超过10个,如何进行优化这个问题问的比较没水平。你不详细说明这个表的使用方式(读写类的,还是几乎是静态表),就问人家怎么优化?!!还不如问问索引的分布访问原理更好。看得出他就想让你说:那三个索引超过10个,B树遍例效率很低,适当减少字段数目。如果是SQL2005,可以将选择性不好的字段放在“索引附加字段”中,以保证索引覆盖。而且SQLServer由于有锁升级的毛病,可以考虑拆开表。5.有一个数据库200G大小,每天增加50M允许用户随时访问,制定备份策略(详细说明)。这种情况可以采用增量备份方式。每周日做一次全备份,周一到周六作增量备份(由于数据量较少,可以考虑每30分钟增量备份一次)。这样可以尽量减少性能消耗,而且如果transactionlog丢失的情况下,可以保证最多丢失30分钟数据。6.管理50台数据库,日常工作是检查数据库作业是否完成,你该如何完成这项检查工作?这个比较简单。在每台机器上建立linkserver,然后在DBA管理服务器上做个分布式视图,每次查询该视图,各个机器上的作业情况一目了然。分布式视图写法:createviewvw_jobasselect'机器一'asMName,*fromlinkserver1..sysjobactivityunionallselect'机器二'asMName,*fromlinkserver2..sysjobactivityunionallselect'机器三'asMName,*fromlinkserver3..sysjobactivity7.自定义函数和存储过程的区别是什么,什么情况下只能用自定义函数,什么情况下只能用存储过程这个应该是考察存储过程编写经验。一般自定义函数主要用于其他sql中的调用,如:selectyourfunc(...)fromtable这种情况下,一般只能通过函数实现。存储过程的功能要远远强于函数,例如动态执行sql(sp_executesql)的使用和一些特殊的功能,自定义函数中是不支持的,只能用存储过程实现。8.SQL2005的新特性是什么?与oracle有什么区别?SQL2005的新特性一般都是和Oracle学的。下面是当时被leimin逼着写的,你可以做个参考:一、数据库设计方面1、字段类型。varchar(max)\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。但是这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)2、外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。但是再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。3、索引附加字段这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。4、计算字段的持久化原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。5、分区表分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。但是需要注意的一点,也是我使用过程中发现的一个问题。在建立function-schema-table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。如果你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)6、CLR类型微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是

1 / 63
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功