软件工程师笔历年考题1_第1页
软件工程师笔历年考题1_第2页
软件工程师笔历年考题1_第3页
软件工程师笔历年考题1_第4页
软件工程师笔历年考题1_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、sql 相关的查询面试卷收集及答案一 /查询某表中的第30到40行的数据select * from 表名 where 字段 in( select top 40 字段 from 表名 )and 字段 not in( select top 30 字段 from 表名) 或者select top 10 * from 表名 where 字段 not in( select top 30 字段 from 表名)矚慫润厲钐瘗睞枥庑赖。二 /查询一个表中存在重复的字段“字段1select DISTINCT 字段1 from 表名 having count(字段1)1 group by 字段1聞創沟燴鐺險爱氇谴

2、净。并显示可能重复的次数select DISTINCT 字段1, count(字段1) As 次数 from 表名 having count(字段1)1 group by 字段1残骛楼諍锩瀨濟溆塹籟。某门户网站数据库职位笔试卷1、事务是什么?2、oracle中truncate和delete命令有何区别?3、Oracle中char和varchar2数据类型有什么区别?有数据test分别存放到char(10)和varchar2(10)酽锕极額閉镇桧猪訣锥。类型的字段中,其存储长度及类型有何区别?4、参见如下表构造出版社: 出版社代码 char(2), 出版社名称 varchar2(32)图书: 图

3、书编号 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语句提示:使用not 彈贸摄尔霁毙攬砖卤庑。in、not exists以及外关联三种方法,并说明哪种方法最优。5、Oracle数据库表存在伪列row

4、id,请利用rowid编写一个SQL语句,从以下记录中找到唯一记录,并将其謀荞抟箧飆鐸怼类蒋薔。flag列更新为YNo name sex flag1 张三 1 N1 张三 1 N1 张三 1 N6、Oracle中,需要在查询语句中把空值NULL输出为0,如何处理?7、见第四题“获奖名单表,写出SQL语句,查询出在上一个月获奖的人员。8、见第四题“图书表,在表上对图书名称、出版社代码、作者代号创立了组合索引,请问在执行如下厦礴恳蹒骈時盡继價骚。语句时会不会利用到索引。Select * from 图书 where 图书名称=xxxxSelect * from 图书 where 图书名称=xxxx

5、and 出版社代码=bbSelect * from 图书 where 图书名称=xxxx and 作者代号=dddSelect * from 图书 where 出版社代码=yyy9、编写一个简单的Oracle存储过程,输出参数必须有一个是结果集。 专家对本试卷的分析: 第一,这张笔试卷从题目的考点上来看,属于根底知识类的; 第二,从难度上分析属于中等; 第三,从题目的设置上来看,该公司的主要用意是考察笔试者的工作经历和工程经历,尽管是根底茕桢广鳓鯡选块网羈泪。知识,但是只要没做过开发工作,想答复上来并不容易; 第四,通篇只有第4题最后一问涉及到了“优化的问题,因此判断该公司这张试卷主要是面对开

6、鹅娅尽損鹌惨歷茏鴛賴。发职位的。请问在ASP中能否使用一条SQL语句同时操作两个表有两表Tab1,Tab2;1和2中有两一样字段“代码,名称,现欲用Tab1中的“代码和Tab2中代码相关联查询得到名称来填充Tab1中的“名称字段,在查询分析器中该如何写此语句? update tab1 set 名称=tab2.名称 from tab1,tab2 where tab1.代码=tab2.代码 籟丛妈羥为贍偾蛏练淨。預頌圣鉉儐歲龈讶骅籴。1.磁盘柜上有14块73G的磁盘, 数据库为200G 大小包括日志文件,如何设置磁盘要说明这14磁盘是怎么用的?2.有两效劳器群集,分别为node1和node2 现在

7、要打win200系统补丁,打完后,要重新启动,如何打补丁,不能影响用户使用要用群集的术语详细说明。3.有一个A 数据库,分别复制到B和C B 要求 每次数据更新 也同时更新,C 每天更新一次就行,如何制定复制策略!4.有一个order 表,有90个字段,20个索引,15个复合索引,其中有3个索引字段超过10个,如何进展优化5.有一个数据库200G大小,每天增加50M 允许用户随时访问,制定备份策略详细说明。6.管理50台数据库,日常工作是检查数据库作业是否完成,你该如何完成这项检查工作?7.自定义函数和存储过程的区别是什么,什么情况下只能用自定义函数,什么情况下只能用存储过程8.SQL 200

8、5 的新特性是什么 ? 与oracle 有什么区别?9.DBA 的品质应该有哪些,你有哪些, 有什么欠缺的?10。如果想配置SQL Mail 应该在效劳器安装哪些 HYPERLINK javascript:。 软件!参考答案:渗釤呛俨匀谔鱉调硯錦。1.磁盘柜上有14块73G的磁盘, 数据库为200G 大小包括日志文件,如何设置磁盘要说明这14磁盘是怎么用的?铙誅卧泻噦圣骋贶頂廡。这个问题应该是考察硬件知识和数据库物理部署。首先需要知道这些磁盘是否要用于存放数据库备份文件和数据库性能读/写要求。来决定raid的级别。1、如果偏重于性能考虑,而且不用存放数据库备份文件的话,考虑使用raid0+1,

9、这样可使用的磁盘容量为:14*73*50%=511G。2、如果读/写性能要求不高,而且还比拟抠门的话,可以考虑raid5,这样可使用的磁盘容量为:13*73=949G。擁締凤袜备訊顎轮烂蔷。至于如何使用应该是说数据库物理文件的部署。注意说出将tempdb,data file分开存放以减少I/O竞争即可。其实现在的条带化磁盘一般都会自动将文件分存,人为的分布已经越来越不重要了。贓熱俣阃歲匱阊邺镓騷。2.有两效劳器群集,分别为node1和node2 现在要打win200系统补丁,打完后,要重新启动,如何打补丁,不能影响用户使用要用群集的术语详细说明。坛摶乡囂忏蒌鍥铃氈淚。这个具体操作有点忘了。大致

10、是:首先看哪个节点正在使用,通过节点IP私有访问另一个空闲节点,为其打上补丁,然后在群集管理器中停顿该节点也可以用命令行方式,重新启动。等到启动完毕,将切换使用节点,为另一个节点打补丁。然后重新启动。蜡變黲癟報伥铉锚鈰赘。3.有一个A 数据库,分别复制到B和C B 要求 每次数据更新 也同时更新,C 每天更新一次就行,如何制定复制策略!買鲷鴯譖昙膚遙闫撷凄。这个应该考察的是复制知识。a-b1、如果使用SQL Server复制功能,那么让a-b使用事务性复制方式同步复制。2、如果表不多,也可以自己写触发器,利用linkserver+distribute transaction。綾镝鯛駕櫬鹕踪韦辚

11、糴。a-c1、如果使用SQL Server复制功能,那么让a-b使用快照复制方式,在某一时间点进展一次性复制。2、也可以自己写bat,将a备份后,通过ftp传输备份介质,恢复c。比拟麻烦,不推荐驅踬髏彦浃绥譎饴憂锦。4.有一个order 表,有90个字段,20个索引,15个复合索引,其中有3个索引字段超过10个,如何进展优化猫虿驢绘燈鮒诛髅貺庑。这个问题问的比拟没水平。你不详细说明这个表的使用方式读写类的,还是几乎是静态表,就问人家怎么优化?!还不如问问索引的分布访问原理更好。锹籁饗迳琐筆襖鸥娅薔。看得出他就想让你说:那三个索引超过10个,B树遍例效率很低,适当减少字段数目。如果是SQL200

12、5,可以将选择性不好的字段放在“索引附加字段中,以保证索引覆盖。而且SQL Server由于有锁升级的毛病,可以考虑拆开表。構氽頑黉碩饨荠龈话骛。5.有一个数据库200G大小,每天增加50M 允许用户随时访问,制定备份策略详细说明。这种情况可以采用增量备份方式。每周日做一次全备份,周一到周六作增量备份由于数据量较少,可以考虑每30分钟增量备份一次。这样可以尽量减少性能消耗,而且如果transaction log丧失的情况下,可以保证最多丧失30分钟数据。輒峄陽檉簖疖網儂號泶。6.管理50台数据库,日常工作是检查数据库作业是否完成,你该如何完成这项检查工作?这个比拟简单。在每台机器上建立link

13、server,然后在DBA管理效劳器上做个分布式视图,每次查询该视图,各个机器上的作业情况一目了然。分布式视图写法:尧侧閆繭絳闕绚勵蜆贅。create view vw_jobasselect 机器一 as MName,* from linkserver1.sysjobactivityunion allselect 机器二 as MName,* from linkserver2.sysjobactivityunion allselect 机器三 as MName,* from linkserver3.sysjobactivity识饒鎂錕缢灩筧嚌俨淒。7.自定义函数和存储过程的区别是什么,什么情况

14、下只能用自定义函数,什么情况下只能用存储过程这个应该是考察存储过程编写经历。一般自定义函数主要用于其他sql中的调用,如:select yourfunc(.) from table这种情况下,一般只能通过函数实现。存储过程的功能要远远强于函数,例如动态执行sqlsp_executesql的使用和一些特殊的功能,自定义函数中是不支持的,只能用存储过程实现。凍鈹鋨劳臘锴痫婦胫籴。8.SQL 2005 的新特性是什么 ? 与oracle 有什么区别?SQL 2005 的新特性一般都是和Oracle学的。下面是当时被leimin逼着写的,你可以做个参考:一、数据库设计方面1、字段类型。varchar(

15、max)nvarchar(max)类型的引入大大的提高了 HYPERLINK javascript:。 编程的效率,可以使用字符串函数对CLOB类型进展操作,这是一个亮点。但是这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?是否碎片会引发效率问题?这都是需要进一步探讨的东西。恥諤銪灭萦欢煬鞏鹜錦。varbinary(max)代替image也让SQL Server的字段类型更加简洁统一。XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。CSDN的开发者应该是相当的熟了!鯊腎鑰诎褳鉀沩懼統庫。2、外

16、键的级联更能扩展可能大局部的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。但是再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中参加了SET NULL 和 SET DEFAULT 属性,能够提供能好的级联设置。硕癘鄴颃诌攆檸攜驤蔹。3、索引附加字段这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过实验,在我的实验环境中会比映射到表中提高30%左右的效率。阌擻輳嬪諫迁择楨秘騖。4、计算字段的持久化原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计

17、算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。氬嚕躑竄贸恳彈瀘颔澩。5、分区表分区表是个亮点!从分区表也能看出微软要做大作强SQL Server的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQL Server2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。但是需要注意的一点,也是我使用过程中发现的一个问题。在建立function-schema-table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我

18、纳闷。如果你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。釷鹆資贏車贖孙滅獅赘。分区表效率问题肯定是大家关心的问题。在我的实验中,如果按照分区字段进展的查询过滤效率会高于未分区表的一样语句。但是如果按照非分区字段进展查询,效率会低于未分区表的一样语句。但是随着数据量的增大,这种本钱差距会逐渐减小,趋于相等。500万数量级只相差10%左右怂阐譜鯪迳導嘯畫長凉。6、CLR类型微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开场我们也是狂喜,感觉对象数据库的一些概念可以实现了。但是作了些

19、实验,发现使用CLR的存储过程或函数在到达一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!谚辞調担鈧谄动禪泻類。其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!还不是性能有问题!否那么面向对象的数据库早就实现了!嘰觐詿缧铴嗫偽純铪锩。建议使用CLR的地方一般是和应用的复杂程度或操作系统环境有很高的耦合度的场景。如你想构建复杂的算法,并且用到了大量的指针和高级数据模型。或

20、者是要和操作系统进展Socket通讯的场景。否那么建议慎重!熒绐譏钲鏌觶鷹緇機库。7、索引视图索引视图2k就有。但是2005对其效率作了一些改良但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。鶼渍螻偉阅劍鲰腎邏蘞。8、语句和事务快照语句级快照和事务级快照终于为SQL Server的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!纣忧蔣氳頑莶驅藥悯骛。9、数据库快照原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮

21、助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!颖刍莖蛺饽亿顿裊赔泷。10、MirrorMirror可以算是SQL Server的Data guard了。但是能不能被大伙用起来就不知道了。濫驂膽閉驟羥闈詔寢賻。二、开发方面1、Ranking函数集其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQL Server2005的row_number比Oracle的更先进。因为它把Order by集成到了一起,不用像Oracle那样还要用子查询进展封装。但是大家注意一点。如下面的例子:銚銻縵哜鳗鸿锓謎諏涼。select ROW_NUMBER() OV

22、ER (order by aa)from tblorder by bb挤貼綬电麥结鈺贖哓类。会先执行aa的排序,然后再进展bb的排序。可能有的朋友会抱怨集成的order by,其实如果使用ranking函数,Order by是少不了的。如果担忧Order by会影响效率,可以为order by的字段建立聚集索引,查询方案会忽略order by 操作因为本来就是排序的嘛。赔荊紳谘侖驟辽輩袜錈。2、top可以动态传入参数,省却了动态SQL的拼写。3、Apply对递归类的树遍历很有帮助。4、CTE个人感觉这个真是太棒了!阅读清晰,非常有时代感。5、try/catch代替了原来VB式的错误判断。比Or

23、acle高级不少。6、pivot/unpivot个人感觉没有case直观。而且默认的第三字段还可能更多作为group by字段很容易造成新手的错误。塤礙籟馐决穩賽釙冊庫。三、DBA管理方面1、数据库级触发器记得在最开场使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很快乐吧。裊樣祕廬廂颤谚鍘羋蔺。2、多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。3、优化器的改良一直以来个人感觉SQL Server的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。有次作实验发现有的语句在200万级时还比50万级的一样语句要快sho

24、w_text的一些提示没有找到解释。一直在奇怪。论坛例子: HYPERLINK 仓嫗盤紲嘱珑詁鍬齊驁。4、profiler的新事件观察这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否那么点击没有反响。绽萬璉轆娛閬蛏鬮绾瀧。5、sqlcmd习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQL Server Management Studio的朋友使用。骁顾燁鶚巯瀆蕪領鲡赙。四、遗憾1、登陆的控制始终遗憾SQL Server的登陆无法分配CPU/内存占用等指标数。如果你的SQL Se

25、rver给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进展连接查询,会给你的系统带来很大的负担。而SQL Server如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。瑣钋濺暧惲锟缟馭篩凉。2、数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上防止I/O效率问题。但是同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的为难。鎦诗涇艳损楼紲鯗餳類。3、还是没有逻辑备份备份方面可能还是一个

26、老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。栉缏歐锄棗鈕种鵑瑶锬。4、SSIS(DTS)太复杂了SQL Server的异构移植功能个人感觉最好了。如果比照过SQL Server的链接效劳器和Oracle的透明网关的朋友会发现SQL Server的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了。辔烨棟剛殓攬瑤丽阄应。与oracle 有什么区别?

27、这个问题相当变态!不同点我能给他讲一天!首先名字就不一样嘛! :9.DBA 的品质应该有哪些,你有哪些, 有什么欠缺的?略10。如果想配置SQL Mail 应该在效劳器安装哪些软件!需要哪些软件?安个outlook express就可以了。sql server提供接口存储过程,非常简单。峴扬斕滾澗辐滠兴渙藺。2007-09-27 10:16 | HYPERLINK t _blank Crying詩叁撻訥烬忧毀厉鋨骜。SQL经典面试卷及答案2007年07月27日 星期五 上午 08:421.一道SQL语句面试卷,关于group by 表内容: 2005-05-09 胜 2005-05-09 胜

28、2005-05-09 负 2005-05-09 负 2005-05-10 胜 2005-05-10 负 2005-05-10 负 如果要生成以下结果, 该如何写sql语句? 胜 负 2005-05-09 2 2 2005-05-10 1 2 create table #tmp(rq varchar(10),shengfu nchar(1) insert into #tmp values(2005-05-09,胜) insert into #tmp values(2005-05-09,胜) insert into #tmp values(2005-05-09,负) insert into #tm

29、p values(2005-05-09,负) insert into #tmp values(2005-05-10,胜) insert into #tmp values(2005-05-10,负) insert into #tmp values(2005-05-10,负) 1)select rq, sum(case when shengfu=胜 then 1 else 0 end)胜,sum(case when shengfu=负 then 1 else 0 end)负 from #tmp group by rq 2) select N.rq,N.勝,M.負 from ( select rq,

30、勝=count(*) from #tmp where shengfu=胜group by rq)N inner join (select rq,負=count(*) from #tmp where shengfu=负group by rq)M on N.rq=M.rq 3)select a.col001,a.a1 胜,b.b1 负 from (select col001,count(col001) a1 from temp1 where col002=胜 group by col001) a, (select col001,count(col001) b1 from temp1 where c

31、ol002=负 group by col001) b where a.col001=b.col001 2.请教一个面试中遇到的SQL语句的查询问题 表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否那么选择B列,当B列大于C列时选择B列否那么选择C列。 select (case when ab then a else b end ), (case when bc then b esle c end) from table_name 3.面试卷:一个日期判断的sql语句? 请取出tb_send表中日期(SendTime字段)为当天的所有记录?(SendTime字段为datetim

32、e型,包含日期与时间) select * from tb where datediff(dd,SendTime,getdate()=0 4.有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来并写出您的思路: 大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。 显示格式: 语文 数学 英语 及格 优秀 不及格 select (case when 语文=80 then 优秀 when 语文=60 then 及格 else 不及格) as 语文, (case when 数学=

33、80 then 优秀 when 数学=60 then 及格 else 不及格) as 数学, (case when 英语=80 then 优秀 when 英语=60 then 及格 else 不及格) as 英语, from table 5.在sqlserver2000中请用sql创立一张用户临时表和系统临时表,里面包含两个字段ID和IDValues,类型都是int型,并解释下两者的区别? 用户临时表:create table #xx(ID int, IDValues int) 系统临时表:create table #xx(ID int, IDValues int) 区别: 用户临时表只对创立

34、这个表的用户的Session可见,对其他进程是不可见的. 当创立它的进程消失时这个临时表就自动删除. 全局临时表对整个SQL Server实例都可见,但是所有访问它的Session都消失的时候,它也自动删除. 6.sqlserver2000是一种大型数据库,他的存储容量只受存储介质的限制,请问它是通过什么方式实现这种无限容量机制的。 它的所有数据都存储在数据文件中(*.dbf),所以只要文件够大,SQL Server的存储容量是可以扩大的. SQL Server 2000 数据库有三种类型的文件: 主要数据文件 主要数据文件是数据库的起点,指向数据库中文件的其它局部。每个数据库都有一个主要数据

35、文件。主要数据文件的推荐文件扩展名是 .mdf。 次要数据文件 次要数据文件包含除主要数据文件外的所有数据文件。有些数据库可能没有次要数据文件,而有些数据库那么有多个次要数据文件。次要数据文件的推荐文件扩展名是 .ndf。 日志文件 日志文件包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个日志文件,但可以不止一个。日志文件的推荐文件扩展名是 .ldf。 7.请用一个sql语句得出结果 从table1,table2中取出如table3所列格式数据,注意提供的数据及结果不准确,只是作为一个格式向大家请教。 如使用存储过程也可以。 table1 月份mon 部门dep 业绩yj 一月份 0

36、1 10 一月份 02 10 一月份 03 5 二月份 02 8 二月份 04 9 三月份 03 8 table2 部门dep 部门名称dname 01 国内业务一部 02 国内业务二部 03 国内业务三部 04 国际业务部 table3 result 部门dep 一月份 二月份 三月份 01 10 null null 02 10 8 null 03 null 5 8 04 null null 9 1) select a.部门名称dname,b.业绩yj as 一月份,c.业绩yj as 二月份,d.业绩yj as 三月份 from table1 a,table2 b,table2 c,tab

37、le2 d where a.部门dep = b.部门dep and b.月份mon = 一月份 and a.部门dep = c.部门dep and c.月份mon = 二月份 and a.部门dep = d.部门dep and d.月份mon = 三月份 and 2) select a.dep, sum(case when b.mon=1 then b.yj else 0 end) as 一月份, sum(case when b.mon=2 then b.yj else 0 end) as 二月份, sum(case when b.mon=3 then b.yj else 0 end) as

38、三月份, sum(case when b.mon=4 then b.yj else 0 end) as 四月份, sum(case when b.mon=5 then b.yj else 0 end) as 五月份, sum(case when b.mon=6 then b.yj else 0 end) as 六月份, sum(case when b.mon=7 then b.yj else 0 end) as 七月份, sum(case when b.mon=8 then b.yj else 0 end) as 八月份, sum(case when b.mon=9 then b.yj els

39、e 0 end) as 九月份, sum(case when b.mon=10 then b.yj else 0 end) as 十月份, sum(case when b.mon=11 then b.yj else 0 end) as 十一月份, sum(case when b.mon=12 then b.yj else 0 end) as 十二月份, from table2 a left join table1 b on a.dep=b.dep 8.华为一道面试卷 一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数。 select id, Count*) from

40、tb group by id having count(*)1 select * from(select count(ID) as count from table group by ID)T where T.count1 那么鯤愜韋瘓賈晖园栋泷。一道经典SQL面试卷及答案现在我们假设只有一个table,名为pages,有四个字段,id, url,title,body。里面储存了很多网页,网页的url地址,title和网页的内容,然后你用一个sql查询将url匹配的排在最前, title匹配的其次,body匹配最后,没有任何字段匹配的,不返回。胀鏝彈奥秘孫戶孪钇賻。就是上面这道面试卷,让我想了

41、一个下午,在网上找资料,最后用下面方法实现SELECT *FROM page where url like %baidu% or title like %baidu% or like ORDER BY CHARINDEX(baidu, url) DESC, CHARINDEX(baidu, title) DESC, CHARINDEX(baidu, body) DESC 但我感觉这种方法并不是最简单的,后来把这个方法发给面试的人,他给我了一种更简单方法,只要用根本的Sql语句就可以实现。代码如下鳃躋峽祷紉诵帮废掃減。select a.id,a.mark from(select page.id,

42、100 as mark from page where page.url like %baidu%unionselect page.id,50 as mark from page where page.title like %baidu%unionselect page.id,10 as mark from page where page.body like %baidu%) as a order by mark desc 用union 实现联合查询,在每个查询语句中定义一个临时变量mark 并给mark赋值,在最后的输出时采用mark来排序,这样实现,非常简单,我感觉这题更多考研我们的编程思

43、想。稟虛嬪赈维哜妝扩踴粜。select url,title,body from pages where url or title or body 陽簍埡鲑罷規呜旧岿錟。1.一道SQL语句面试卷,关于group by表内容:2005-05-09 胜2005-05-09 胜2005-05-09 负2005-05-09 负2005-05-10 胜2005-05-10 负2005-05-10 负如果要生成以下结果, 该如何写sql语句?胜 负2005-05-09 2 22005-05-10 1 2create table #tmp(rq varchar(10),shengfu nchar(1)inse

44、rt into #tmp values(2005-05-09,胜)insert into #tmp values(2005-05-09,胜)insert into #tmp values(2005-05-09,负)insert into #tmp values(2005-05-09,负)insert into #tmp values(2005-05-10,胜)insert into #tmp values(2005-05-10,负)insert into #tmp values(2005-05-10,负)1)select rq, sum(case when shengfu=胜 then 1 e

45、lse 0 end)胜,sum(case when shengfu=负 then 1 else 0 end)负 from #tmp group by rq2) select N.rq,N.勝,M.負 from (select rq,勝=count(*) from #tmp where shengfu=胜group by rq)N inner join(select rq,負=count(*) from #tmp where shengfu=负group by rq)M on N.rq=M.rq3)select a.col001,a.a1 胜,b.b1 负 from(select col001,

46、count(col001) a1 from temp1 where col002=胜 group by col001) a,(select col001,count(col001) b1 from temp1 where col002=负 group by col001) bwhere a.col001=b.col0012.请教一个面试中遇到的SQL语句的查询问题表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否那么选择B列,当B列大于C列时选择B列否那么选择C列。select (case when ab then a else b end ),(case when bc th

47、en b esle c end)from table_name3.面试卷:一个日期判断的sql语句?请取出tb_send表中日期(SendTime字段)为当天的所有记录?(SendTime字段为datetime型,包含日期与时间)select * from tb where datediff(dd,SendTime,getdate()=04.有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来并写出您的思路: 大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。 显示格式:

48、 语文 数学 英语 及格 优秀 不及格 select(case when 语文=80 then 优秀when 语文=60 then 及格else 不及格) as 语文,(case when 数学=80 then 优秀when 数学=60 then 及格else 不及格) as 数学,(case when 英语=80 then 优秀when 英语=60 then 及格else 不及格) as 英语,from table5.在sqlserver2000中请用sql创立一张用户临时表和系统临时表,里面包含两个字段ID和IDValues,类型都是int型,并解释下两者的区别?用户临时表:create

49、table #xx(ID int, IDValues int)系统临时表:create table #xx(ID int, IDValues int)区别:用户临时表只对创立这个表的用户的Session可见,对其他进程是不可见的.当创立它的进程消失时这个临时表就自动删除.全局临时表对整个SQL Server实例都可见,但是所有访问它的Session都消失的时候,它也自动删除.6.sqlserver2000是一种大型数据库,他的存储容量只受存储介质的限制,请问它是通过什么方式实现这种无限容量机制的。它的所有数据都存储在数据文件中(*.dbf),所以只要文件够大,SQL Server的存储容量是可

50、以扩大的.SQL Server 2000 数据库有三种类型的文件:主要数据文件主要数据文件是数据库的起点,指向数据库中文件的其它局部。每个数据库都有一个主要数据文件。主要数据文件的推荐文件扩展名是 .mdf。次要数据文件次要数据文件包含除主要数据文件外的所有数据文件。有些数据库可能没有次要数据文件,而有些数据库那么有多个次要数据文件。次要数据文件的推荐文件扩展名是 .ndf。日志文件日志文件包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个日志文件,但可以不止一个。日志文件的推荐文件扩展名是 .ldf。7.请用一个sql语句得出结果从table1,table2中取出如table3所列格

51、式数据,注意提供的数据及结果不准确,只是作为一个格式向大家请教。如使用存储过程也可以。table1月份mon 部门dep 业绩yj一月份 01 10一月份 02 10一月份 03 5二月份 02 8二月份 04 9三月份 03 8table2部门dep 部门名称dname01 国内业务一部02 国内业务二部03 国内业务三部04 国际业务部table3 result部门dep 一月份 二月份 三月份01 10 null null02 10 8 null03 null 5 804 null null 91)select a.部门名称dname,b.业绩yj as 一月份,c.业绩yj as 二月

52、份,d.业绩yj as 三月份from table1 a,table2 b,table2 c,table2 dwhere a.部门dep = b.部门dep and b.月份mon = 一月份 anda.部门dep = c.部门dep and c.月份mon = 二月份 anda.部门dep = d.部门dep and d.月份mon = 三月份 and2)select a.dep,sum(case when b.mon=1 then b.yj else 0 end) as 一月份,sum(case when b.mon=2 then b.yj else 0 end) as 二月份,sum(c

53、ase when b.mon=3 then b.yj else 0 end) as 三月份,sum(case when b.mon=4 then b.yj else 0 end) as 四月份,sum(case when b.mon=5 then b.yj else 0 end) as 五月份,sum(case when b.mon=6 then b.yj else 0 end) as 六月份,sum(case when b.mon=7 then b.yj else 0 end) as 七月份,sum(case when b.mon=8 then b.yj else 0 end) as 八月份

54、,sum(case when b.mon=9 then b.yj else 0 end) as 九月份,sum(case when b.mon=10 then b.yj else 0 end) as 十月份,sum(case when b.mon=11 then b.yj else 0 end) as 十一月份,sum(case when b.mon=12 then b.yj else 0 end) as 十二月份,from table2 a left join table1 b on a.dep=b.dep8.华为一道面试卷一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少

55、条记录数。select id, Count*) from tb group by id having count(*)1select * from(select count(ID) as count from table group by ID)T where T.count1沩氣嘮戇苌鑿鑿槠谔應。1、删除表中重复的记录记录完全一样才算重复select distinct * into #table_name from table_name delete from table_name select * into table_name from #table_name drop table #t

56、able_name钡嵐縣緱虜荣产涛團蔺。2、学生表student,字段sID,sName,sAge;教师表teacher,字段tID,TName,tAge;教师-学生表ts,字段id,tID,sID。请统计每个教师有多少学生,要求教师年龄大于30,学生年龄大于12,并列出教师ID,教师姓名,学生人数答案:如果教师不同名,那么语句如下懨俠劑鈍触乐鹇烬觶騮。謾饱兗争詣繚鮐癞别瀘。如果教师有同名,那么语句如下呙铉們欤谦鸪饺竞荡赚。问题描述:此题用到下面三个关系表:CARD 借书卡。 CNO 卡号,NAME 姓名,CLASS 班级BOOKS 图书。 BNO 书号,BNAME 书名,AUTHOR 作者,

57、PRICE 单价,QUANTITY 库存册数BORROW 借书记录。 CNO 借书卡号,BNO 书号,RDATE 还书日期备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。要求实现如下15个处理:1 写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束。2 找出借书超过5本的读者,输出借书卡号及所借图书册数。3 查询借阅了水浒一书的读者,输出姓名及班级。4 查询过期未还图书,输出借阅者卡号、书号及还书日期。5 查询书名包括网络关键词的图书,输出书号、书名、作者。6 查询现有图书中价格最高的图书,输出书名及作者。7 查询当前借了计算方法但没有借计算方法习题集的读者

58、,输出其借书卡号,并按卡号降序排序输出。8 将C01班同学所借图书的还期都延长一周。9 从BOOKS表中删除当前无人借阅的图书记录。10如果经常按书名查询图书信息,请建立适宜的索引。11在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是数据库技术及应用,就将该读者的借阅记录保存在BORROW_SAVE表中注ORROW_SAVE表构造同BORROW表。12建立一个视图,显示力01班学生的借书信息只要求显示姓名和书名。13查询当前同时借有计算方法和组合数学两本书的读者,输出其借书卡号,并按卡号升序排序输出。14假定在建BOOKS表时没有定义主码,写出为BOOKS表追加定义主码的语

59、句。15对CARD表做如下修改:a. 将NAME最大列宽增加到10个字符假定原为6个字符。b. 为该表增加1列NAME系名,可变长,最大20个字符。1. 写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束-实现代码:CREATE TABLE BORROW(CNO int FOREIGN KEY REFERENCES CARD(CNO),BNO int FOREIGN KEY REFERENCES BOOKS(BNO),RDATE datetime,PRIMARY KEY(CNO,BNO)2. 找出借书超过5本的读者,输出借书卡号及所借图书册数-实现代码:SELECT C

60、NO,借图书册数=COUNT(*)FROM BORROWGROUP BY CNOHAVING COUNT(*)53. 查询借阅了水浒一书的读者,输出姓名及班级-实现代码:SELECT * FROM CARD cWHERE EXISTS(SELECT * FROM BORROW a,BOOKS bWHERE a.BNO=b.BNOAND b.BNAME=N水浒AND a.CNO=c.CNO)4. 查询过期未还图书,输出借阅者卡号、书号及还书日期-实现代码:SELECT * FROM BORROWWHERE RDATE0INSERT BORROW_SAVE SELECT i.*FROM INSER

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论