数据库sql面试题及答案_第1页
数据库sql面试题及答案_第2页
数据库sql面试题及答案_第3页
数据库sql面试题及答案_第4页
数据库sql面试题及答案_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、数据库sql面试题及答案【篇一:sql数据库经典面试题(修改笔试题)(有答案)】部门,平均工资,要求按部门的字符串顺序排序,不能含有humanresource部门,employee结构如下:employee_id,employee_name,depart_id,depart_name,wage答:selectdepart_name,avg(wage)fromemployeewheredepart_namehumanresourcegroupbydepart_nameorderbydepart_name29.给定如下sql数据库:test(numint(4)请用一条sql语句返回num的最小值,

2、但不许使用统计功能,如min,max等答:selecttop1numfromtestorderbynum33. 一个数据库中有两个表:一张表为customer,含字段id,name;一张表为order,含字段id,customerid(连向customer中id的外键),revenue;写出求每个customer的revenue总和的sql语句。建表createtablecustomer(idintprimarykey,namechar(10)gocreatetableorder(idintprimarykey,customeridintforeignkeyreferencescustomer

3、(id),revenuefloat)go-查询selectcustomer.id,sum(isnull(order.revenue,0)fromcustomerfulljoinorderon(order.customerid=customer.id)groupbycustomer.idselectcustomer.id,sum(order.revener)fromorder,customerwherecustomer.id=customeridgroupbycustomer.idselectcustomer.id,sum(order.revener)fromcustomerfulljoinor

4、deron(order.customerid=customer.id)groupbycustomer.id5数据库(10)atabelcalled“performance”contain:nameandscore,please用sql语言表述如何选出score最high的一个(仅有一个)仅选出分数,selectmax(score)fromperformance仅选出名字,即选出名字,又选出分数:selecttop1score,namefromperorderbyscoreselectname1,scorefromperwherescorein/=(selectmax(score)fromper

5、)4有关系s(sno,sname)c(cno,cname)sc(sno,cno,grade)1 问上课程db的学生noselectcount(*)fromc,ame=o=oselectcount(*)fromscwherecno=(ame=db)2 成绩最高的学生号selectsnofromscwheregrade=(selectmax(grade)fromsc)3 每科大于90分的人数ame,count(*)fromc,o=oandameame,count(*)o=oandame数据库笔试题*建表:dept:deptno(primarykey),dname,locemp:empno(prim

6、arykey),ename,job,mgr,sal,deptno*/1 列出emp表中各部门的部门号,最高工资,最低工资selectmax(sal)as最高工资,min(sal)as最低工资,deptnofromempgroupbydeptno;2 列出emp表中各部门job为clerk的员工的最低工资,最高工资selectmax(sal)as最高工资,min(sal)as最低工资,deptnoas部门号fromempwherejob=clerkgroupbydeptno;3 对于emp中最低工资小于1000的部门,列出job为clerk的员工的部门号,最低工资,最高工资selectmax(s

7、al)as最高工资,min(sal)as最低工资,deptnoas部门号fromempasbwherejob=clerkand1000(selectmin(sal)fromempasawherea.deptno=b.deptno)groupbyb.deptno4 根据部门号由高而低,工资有低而高列出每个员工的姓名,部门号,工资selectdeptnoas部门号,enameas姓名,salas工资fromemporderbydeptnodesc,salasc5 写出对上题的另一解决方法(请补充)6 列出张三所在部门中每个员工的姓名与部门号selectename,deptnofromempwher

8、edeptno=(selectdeptnofromempwhereename=张三)7 列出每个员工的姓名,工作,部门号,部门名selectename,job,emp.deptno,dept.dnamefromemp,deptwhereemp.deptno=dept.deptno8 列出emp中工作为clerk的员工的姓名,工作,部门号,部门名selectename,job,dept.deptno,dnamefromemp,deptwhere9 对于emp中有管理者的员工,列出姓名,管理者姓名(管理者外键为mgr)selecta.enameas姓名,b.enameas管理者fromempasa

9、,empasbwherea.mgrisnotnullanda.mgr=b.empno10 对于dept表中,列出所有部门名,部门号,同时列出各部门工作为clerk的员工名与工作selectdnameas部门名,dept.deptnoas部门号,enameas员工名,jobas工作fromdept,empwheredept.deptno*=emp.deptnoandjob=clerk11 对于工资高于本部门平均水平的员工,列出部门号,姓名,工资,按部门号排序selecta.deptnoas部门号,a.enameas姓名,a.salas工资fromempasawherea.sal(selectav

10、g(sal)fromempasbwherea.deptno=b.deptno)orderbya.deptno12 对于emp,列出各个部门中平均工资高于本部门平均水平的员工数和部门号,按部门号排序selectcount(a.sal)as员工数,a.deptnoas部门号fromempasawherea.sal(selectavg(sal)fromempasbwherea.deptno=b.deptno)groupbya.deptnoorderbya.deptno13对于emp中工资高于本部门平均水平,人数多与1人的,列出部门号,人数,按部门号排序selectcount(a.empno)as员工

11、数,a.deptnoas部门号,avg(sal)as平均工资fromempasawhere(selectcount(c.empno)fromempascwherec.deptno=a.deptnoandc.sal(selectavg(sal)fromempasbwherec.deptno=b.deptno)1groupbya.deptnoorderbya.deptno14对于emp中低于自己工资至少5人的员工,列出其部门号,姓名,工资,以及工资少于自己的人数selecta.deptno,a.ename,a.sal,(selectcount(b.ename)fromempasbwhereb.sa

12、la.sal)as人数fromempasawhere(selectcount(b.ename)fromempasbwhereb.sala.sal)5数据库笔试题及答案第一套一.选择题1.下面叙述正确的是ccbad。a、算法的执行效率与数据的存储结构无关b、算法的空间复杂度是指算法程序中指令(或语句)的条数c、算法的有穷性是指算法必须能在执行有限个步骤之后终止d、以上三种描述都不对2. 以下数据结构中不属于线性数据结构的是。a、队列b、线性表c、二叉树d、栈3. 在一棵二叉树上第5层的结点数最多是。a、8b、16c、32d、154. 下面描述中,符合结构化程序设计风格的是。a、使用顺序、选择和重

13、复(循环)三种基本控制结构表示程序的控制逻辑b、模块只有一个入口,可以有多个出口c、注重提高程序的执行效率d、不使用goto语句5. 下面概念中,不属于面向对象方法的是。a、对象b、继承c、类d、过程调用6. 在结构化方法中,用数据流程图(dfd)作为描述工具的软件开发阶段是bdbca。a、可行性分析b、需求分析c、详细设计d、程序编码7. 在软件开发中,下面任务不属于设计阶段的是a、数据结构设计b、给出系统模块结构c、定义模块算法d、定义需求并建立系统模型8. 数据库系统的核心是。a、数据模型b、数据库管理系统c、软件工具d、数据库9. 下列叙述中正确的是。a、数据库是一个独立的系统,不需要

14、操作系统的支持b、数据库设计是指设计数据库管理系统c、数据库技术的根本目标是要解决数据共享的问题d、数据库系统中,数据的物理结构必须与逻辑结构一致10.下列模式中,能够给出数据库物理存储结构与物理存取方法的是。a、内模式b、外模式c、概念模式d、逻辑模式11.visualfoxpro数据库文件是_dcbaa。a、存放用户数据的文件b、管理数据库对象的系统文件c、存放用户数据和系统的文件d、前三种说法都对12. sql语句中修改表结构的命令是。a、modifytableb、modifystructurec、altertabled、alterstructure13. 如果要创建一个数据组分组报表,

15、第一个分组表达式是部门,第二个分组表达式是性别,第三个分组表达式是基本工资,当前索引的索引表达式应当是。a、部门+性别+基本工资b、部门+性别+str(基本工资)c、str(基本工资)+性别+部门d、性别+部门+str(基本工资)14. 把一个项目编译成一个应用程序时,下面的叙述正确的是。a、所有的项目文件将组合为一个单一的应用程序文件b、所有项目的包含文件将组合为一个单一的应用程序文件c、所有项目排除的文件将组合为一个单一的应用程序文件d、由用户选定的项目文件将组合为一个单一的应用程序文件15. 数据库db、数据库系统dbs、数据库管理系统dbms三者之间的关系是。a、dbs包括db和dbm

16、sb、dbms包括db和dbsc、db包括dbs和dbmsd、dbs就是db,也就是dbms16. 在选项对话框的文件位置选项卡中可以设置_baaba。a、表单的默认大小b、默认目录c、日期和时间的显示格式d、程序代码的颜色17. 要控制两个表中数据的完整性和一致性可以设置参照完整性,要求这两个表。a、是同一个数据库中的两个表b、不同数据库中的两个表c、两个自由表d、一个是数据库表另一个是自由表18. 定位第一条记录上的命令是。a、gotopb、gobottomc、go6d、skip19. 在关系模型中,实现关系中不允许出现相同的元组的约束是通过。a、候选键b、主键c、外键d、超键20. 设当

17、前数据库有10条记录(记录未进行任何索引),在下列三种情况下,当前记录号为1时;eof()为真时;bof()为真时,命令?recn()的结果分别是。a、1,11,1b、1,10,1c、1,11,0d、1,10,021. 下列表达式中结果不是日期型的是_ccbba。a、ctod(2000/10/01)b、八99/10/01+365c、val(2000/10/01)d、date()【篇二:sql数据库面试题目及其答案】答:触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某

18、表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。2 什么是存储过程?用什么来调用?答:存储过程是一个预编译的sql语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次sql,使用存储过程比单纯sql语句执行要快。可以用一个命令对象来调用存储过程。3 索引的作用?和它的优点缺点是什么?答:索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加

19、了数据库的尺寸大小。3 。什么是内存泄漏?答:一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字new等创建对象时,就从堆中为它分配一块内存,使用完后程序调用free或者delete释放该内存,否则就说该内存就不能被使用,我们就说该内存被泄漏了。4 维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么?答:我是这样做的,尽可能使用约束,如check,主键,外键,非空字段等来约束,这样做效率最高,也最方便。其次是使用触发器,这种方法可以保证,无论什么业务系统访问数据库都可以保证数据的完整新和一致性。最后考虑

20、的是自写业务逻辑,但这样做麻烦,编程复杂,效率低下。5 什么是事务?什么是锁?答:事务就是被绑定在一起作为一个逻辑工作单元的sql语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过acid测试,即原子性,一致性,隔离性和持久性。锁:在所以的dbms中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。6 什么叫视图?游标是什么?答:视图是一种虚拟的表,具有

21、和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。7 为管理业务培训信息,建立3个表:s(s#,sn,sd,sa)s#,sn,sd,sa分别代表学号,学员姓名,所属单位,学员年龄c(c#,cn)c#,cn分别代表课程编号,课程名称sc(s#,c#,g)s#,c#,g分别代表学号,所选的

22、课程编号,学习成绩(1)使用标准sql嵌套语句查询选修课程名称为税收基础的学员学号和姓名?答案:selects#,snfromswheres#in(selects#fromc,scwherec.c#=sc.c#andcn=税收基础)(2)使用标准sql嵌套语句查询选修课程编号为c2勺学员姓名和所属单位?答:selectsn,sdfroms,scwheres.s#=sc.s#andsc.c#=c2(3)使用标准sql嵌套语句查询不选修课程编号为c5勺学员姓名和所属单位?答:selectsn,sdfromswheres#notin(selects#fromscwherec#=c5)(4)查询选修了

23、课程的学员人数答:select学员人数=count(distincts#)fromsc(5)查询选修课程超过5门的学员学号和所属单位?答:selectsn,sdfromswheres#in(selects#fromscgroupbys#havingcount(distinctc#)5)【篇三:数据库面试题】pclass=txt1、如何查找和删除数据库中的重复数据法一:用groupby语句此查找很快的selectcount(num),max(name)fromstudent渣找表中num歹U重复的,列出重复的记录数,并列出他的name属性groupbynumhavingcount(num);1-

24、按num分组后找出表中num列重复,即出现次数大于一次deletefromstudent(上面select的)这样的话就把所有重复的都删除了。一-慎重2、说一下数据表设计要遵守的三范式是什么?除了这些你觉得数据表的设计还要注意哪些规则?1 、无重复列,实际上就是一个表中一个列不允许有多值属性、复合属性或者嵌套的表,即列的值域必须是原子值,表必须有主键。2 、属性完全依赖于主键消除部分子函数依赖。第二范式其实是在第一范式上的扩展,所以第二范式必须符合第一范式,表中列不存在部分函数依赖。3 、属性不依赖于其它非主属性消除传递依赖。第三范式是在第二范式的基础上进行的扩展,所以必须符合第二范式且表中不

25、存在传递依赖。3、写一个sql存储过程,建立一个表user字段是姓名,年龄,职位,权限,然后向里面插入6条数据,然后查询出年龄大于18的所有信息。111 ,11, 11111112 ,12, 11112 113 ,13, 11113 114 ,14, 11114 115 ,15, 11115 116 ,16, 111161111111)1111112 )1111113 )1111114 )1111115 )1111116 )createtableuser(namevarchar(20),ageint,positionvarchar(20)quanxianvarchar(20)insertint

26、ouservalues(insertintouservalues(insertintouservalues(insertintouservalues(insertintouservalues(insertintouservalues(createprocedureselectuserasselect*fromuserwhereage184 、1.你对哪种数据库最熟悉?使用该数据库多少年?简单描述对该数据库的理解.答:sql,适合中小型企业使用2. 对其它较熟悉的商业数据库的了解及使用年限.3. 如何将数据库(实例)备份和还原?(针对自己最熟悉的)答:sql,在企业管理器上右点要备份或还原的数据

27、,从所有任务选择备份或还原。4. 如何知道一个表或视图的结构?答:查询系统表sysobjects5. 描述innerjoin的功能和已在何种情况下使用innerjoin.答:内联接是用比较运算符比较要联接列的值的联接,连接的2个表都要满足、5、存储过程和sql语句的优缺点存储过程的优缺点:优点:1. 由于应用程序随着时间推移会不断更改,增删功能,tsql过程代码会变得更复杂,storedprocedure为封装此代码提供了一个替换位置。2. 执行计划(存储过程在首次运行时将被编译,这将产生一个执行计划实际上是microsoftsqlserver为在存储过程中获取由t-sql指定的结果而必须采取

28、的步骤的记录。)缓存改善性能。?.但sqlserver新版本,执行计划已针对所有t-sql批处理进行了缓存,而不管它们是否在存储过程中,所以没比较优势了。3. 存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量t-sql语句的代码流量。4. 使用存储过程使您能够增强对执行计划的重复使用,由此可以通过使用远程过程调用(rpc)处理服务器上的存储过程而提高性能。rpc封装参数和调用服务器端过程的方式使引擎能够轻松地找到匹配的执行计划,并只需插入更新的参数值。5. 可维护性高,更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。6. 代码精简一致,一个存储

29、过程可以用于应用程序代码的不同位置。7. 更好的版本控制,通过使用microsoftvisualsourcesafe或某个其他源代码控制工具,您可以轻松地恢复到或引用旧版本的存储过程。8. 增强安全性:a、通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问;b、提高代码安全,防止sql注入(但未彻底解决,例如,将数据操作语言dml,附加到输入参数);c、sqlparameter类指定存储过程参数的数据类型,作为深层次防御性策略的一部分,可以验证用户提供的值类型(但也不是万无一失,还是应该传递至数据库前得到附加验证)。缺点:1 .如果更改范围大到需要对输入存储过程的

30、参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新getvalue()调用,等等,这时候估计比较繁琐了。2 .可移植性差由于存储过程将应用程序绑定到sqlserver,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性在您的环境中非常重要,则将业务逻辑封装在不特定于rdbms的中间层中可能是一个更佳的选择。sql语句灵活,可移植性强,查询速度比存储过程慢些6、为数据库创建索引都需要注意些什么?1. 索引能提高速度的关键就是索引所占的空间要比表小得多2. 注意索引的大小,有一些表可以建成索引组织表3. 索引的列不要太多,要选择一些sel

31、ective比较低的列建b-tree索引,选择selective高的列建bitmap索引(在更新比较多的表不不要建bitmap索引)4. 将selective较低的列放在前面5. 在更新不多的表上建索引时,可以考虑用compress选择,以节约索引的空间7、一组sql相关操作面试题1.在表a中有数据idmo1 y2 n请用一个select语句写出,如果mo的值为“y;返回“yes;为n返回“no”效果如下:idmo1 yes2 noselectid,mo=casewhenmo=?y?then?yes?whenmo=?n?then?no?endfromaz2. 在表a中查询出自动增长列中31到4

32、0之间的数据(注意可能不是连续的)select*fromawhereidbetween31and403. 有一个表table中有一个自动增长字段id,如果在存储过程中向这个表插入一条记录后,如何获得新记录的id.(写出获取新记录id的函数即可)createfunctionc_currentid()returnsintasbegindeclarelastidintselectlastid=max(cid)fromcreturn(lastid)endselecttempdb.dbo.c_currentid()as?当前c表中最新的编号?4. having的用法,是用来做什么的having用来对gr

33、oupby分组后的记录进行过滤。5. sql中的什么函数可以转换为时间selectconvert(datetime,?2000/01/01)selectcast(?2001/02/02asdatetime)6. 查询数据放入一张临时表select*into#afromtestselect*from#a8 、如何使用sql进行模糊查询like条件一般用在指定搜索某字段的时候,通过”%_”通配符的作用实现模糊查找功能,通配符可以在前面也可以在后面或前后都有。搜索以mian开头:select*fromteblewheretitlelikemian%搜索以mian结束:select*fromteblewheretitlelike%mian搜索包含mian:select*fromteblewheretitlelike%mian%注释:%表示0个或多个字符构成的字符串_表示单个字符9 、说一下mysql,oracle等常见数据库的分页实现方案?1.oracle:select*from(selectrow_.*,rownumrownum_from(query_

温馨提示

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

评论

0/150

提交评论