数据库sql面试题及答案.docx
《数据库sql面试题及答案.docx》由会员分享,可在线阅读,更多相关《数据库sql面试题及答案.docx(13页珍藏版)》请在冰豆网上搜索。
数据库sql面试题及答案
数据库sql面试题及答案
【篇一:
sql数据库经典面试题(修改笔试题)(有答案)】
部门,平均工资,要求按部门的字符串顺序排序,不能含有humanresource部门,employee结构如下:
employee_id,employee_name,depart_id,depart_name,wage
答:
selectdepart_name,avg(wage)
fromemployeewheredepart_namehumanresource
groupbydepart_nameorderbydepart_name
--------------------------------------------------------------------------29.
给定如下sql数据库:
test(numint(4))请用一条sql语句返回num的最小值,但不许使用统计功能,如min,max等
答:
selecttop1numfromtestorderbynum
--------------------------------------------------------------------------
33.一个数据库中有两个表:
一张表为customer,含字段id,name;
一张表为order,含字段id,customerid(连向customer中id的外键),revenue;
写出求每个customer的revenue总和的sql语句。
建表createtablecustomer
(idintprimarykey,namechar(10))
go
createtable[order]
(idintprimarykey,customeridintforeignkeyreferences
customer(id),revenuefloat)
go
--查询
selectcustomer.id,sum(isnull([order].revenue,0))
fromcustomerfulljoin[order]on([order].customerid=customer.id)groupbycustomer.id
selectcustomer.id,sum(order.revener)fromorder,customerwherecustomer.id=customeridgroupbycustomer.id
selectcustomer.id,sum(order.revener)fromcustomerfulljoinorderon(order.customerid=customer.id)groupbycustomer.id
5数据库(10)
atabelcalled“performance”contain
:
nameandscore,please用
sql语言表述
如何选出score最high的一个(仅有一个)
仅选出分数,selectmax(score)fromperformance
仅选出名字,即选出名字,又选出分数:
selecttop1score,namefromperorderbyscore
selectname1,scorefromperwherescorein/=(selectmax(score)fromper)
.....
4有关系s(sno,sname)c(cno,cname)sc(sno,cno,grade)
1问上课程db的学生no
selectcount(*)fromc,scwhereame=dbando=o
selectcount(*)fromscwherecno=(selectcnofromcwhere
ame=db)
2成绩最高的学生号
selectsnofromscwheregrade=(selectmax(grade)fromsc)
3每科大于90分的人数
selectame,count(*)fromc,scwhereo=oand
sc.grade90groupbyame
selectame,count(*)fromcjoinscono=oand
sc.grade90groupbyame
数据库笔试题
*
建表:
dept:
deptno(primarykey),dname,loc
emp:
empno(primarykey),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(sal)as最高工资,min(sal)as最低工资,deptnoas部门号fromempasb
wherejob=clerkand1000(selectmin(sal)fromempasawherea.deptno=b.deptno)groupbyb.deptno
4根据部门号由高而低,工资有低而高列出每个员工的姓名,部门号,工资
selectdeptnoas部门号,enameas姓名,salas工资fromemporderbydeptnodesc,salasc
5写出对上题的另一解决方法
(请补充)
6列出张三所在部门中每个员工的姓名与部门号
selectename,deptnofromempwheredeptno=(selectdeptnofromempwhereename=张三)
7列出每个员工的姓名,工作,部门号,部门名
selectename,job,emp.deptno,dept.dnamefromemp,deptwhereemp.deptno=dept.deptno
8列出emp中工作为clerk的员工的姓名,工作,部门号,部门名
selectename,job,dept.deptno,dnamefromemp,deptwhere
9对于emp中有管理者的员工,列出姓名,管理者姓名(管理者外键为mgr)selecta.enameas姓名,b.enameas管理者fromempasa,empasbwherea.mgrisnotnullanda.mgr=b.empno
10对于dept表中,列出所有部门名,部门号,同时列出各部门工作为clerk的员工名与工作
selectdnameas部门名,dept.deptnoas部门号,enameas员工名,jobas工作fromdept,emp
wheredept.deptno*=emp.deptnoandjob=clerk
11对于工资高于本部门平均水平的员工,列出部门号,姓名,工资,按部门号排序
selecta.deptnoas部门号,a.enameas姓名,a.salas工资fromempasawherea.sal(selectavg(sal)fromempasbwherea.deptno=b.deptno)orderbya.deptno
12对于emp,列出各个部门中平均工资高于本部门平均水平的员工数和部门号,按部门号排序
selectcount(a.sal)as员工数,a.deptnoas部门号fromempasa
wherea.sal(selectavg(sal)fromempasbwherea.deptno=b.deptno)groupbya.deptnoorderbya.deptno
13对于emp中工资高于本部门平均水平,人数多与1人的,列出部门号,人数,按部门号排序
selectcount(a.empno)as员工数,a.deptnoas部门号,avg(sal)as平均工资fromempasa
where(selectcount(c.empno)fromempascwherec.deptno=a.deptnoandc.sal(selectavg(sal)fromempasbwherec.deptno=b.deptno))1groupbya.deptnoorderbya.deptno
14对于emp中低于自己工资至少5人的员工,列出其部门号,姓名,工资,以及工资少于自己的人数
selecta.deptno,a.ename,a.sal,(selectcount(b.ename)fromempasbwhereb.sala.sal)as人数fromempasa
where(selectcount(b.ename)fromempasbwhereb.sala.sal)5数据库笔试题及答案
第一套
一.选择题
1.下面叙述正确的是ccbad______。
a、算法的执行效率与数据的存储结构无关
b、算法的空间复杂度是指算法程序中指令(或语句)的条数
c、算法的有穷性是指算法必须能在执行有限个步骤之后终止
d、以上三种描述都不对
2.以下数据结构中不属于线性数据结构的是______。
a、队列b、线性表c、二叉树d、栈
3.在一棵二叉树上第5层的结点数最多是______。
a、8b、16c、32d、15
4.下面描述中,符合结构化程序设计风格的是______。
a、使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑
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、数据库是一个独立的系统,不需要操作系统的支持b、数据库设计是指设计数据库管理系统c、数据库技术的根本目标是要解决数据共享的问题d、数据库系统中,数据的物理结构必须与逻辑结构一致10.下列模式中,能够给出数据库物理存储结构与物理存取方法的是______。
a、内模式b、外模式c、概念模式d、逻辑模式11.visualfoxpro数据库文件是__dcbaa____。
a、存放用户数据的文件b、管理数据库对象的系统文件
c、存放用户数据和系统的文件d、前三种说法都对
12.sql语句中修改表结构的命令是______。
a、modifytableb、modifystructurec、altertabled、alterstructure
13.如果要创建一个数据组分组报表,第一个分组表达式是部门,第二个分组表达式是性别,第三个分组表达式是基本工资,当前索引的索引表达式应当是______。
a、部门+性别+基本工资b、部门+性别+str(基本工资)
c、str(基本工资)+性别+部门d、性别+部门+str(基本工资)
14.把一个项目编译成一个应用程序时,下面的叙述正确的是______。
a、所有的项目文件将组合为一个单一的应用程序文件
b、所有项目的包含文件将组合为一个单一的应用程序文件
c、所有项目排除的文件将组合为一个单一的应用程序文件
d、由用户选定的项目文件将组合为一个单一的应用程序文件
15.数据库db、数据库系统dbs、数据库管理系统dbms三者之间的关系是______。
a、dbs包括db和dbmsb、dbms包括db和dbs
c、db包括dbs和dbmsd、dbs就是db,也就是dbms
16.在选项对话框的文件位置选项卡中可以设置_baaba_____。
a、表单的默认大小b、默认目录
c、日期和时间的显示格式d、程序代码的颜色
17.要控制两个表中数据的完整性和一致性可以设置参照完整性,要求这两个表______。
a、是同一个数据库中的两个表b、不同数据库中的两个表
c、两个自由表d、一个是数据库表另一个是自由表
18.定位第一条记录上的命令是______。
a、gotopb、gobottomc、go6d、skip
19.在关系模型中,实现关系中不允许出现相同的元组的约束是通过______。
a、候选键b、主键c、外键d、超键
20.设当前数据库有10条记录(记录未进行任何索引),在下列三种情况下,当前记录号为1时;eof()为真时;bof()为真时,命令?
recn()的结果分别是______。
a、1,11,1b、1,10,1c、1,11,0d、1,10,0
21.下列表达式中结果不是日期型的是__ccbba____。
a、ctod(2000/10/01)b、{^99/10/01}+365c、val(2000/10/01)
d、date()
【篇二:
sql数据库面试题目及其答案】
答:
触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。
它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。
可以联级运算。
如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。
2.什么是存储过程?
用什么来调用?
答:
存储过程是一个预编译的sql语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。
如果某次操作需要执行多次sql,使用存储过程比单纯sql语句执行要快。
可以用一个命令对象来调用存储过程。
3.索引的作用?
和它的优点缺点是什么?
答:
索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。
它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。
索引可以是唯一的,创建索引允许指定单个列或者是多个列。
缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
3。
什么是内存泄漏?
答:
一般我们所说的内存泄漏指的是堆内存的泄漏。
堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。
当应用程序用关键字new等创建对象时,就从堆中为它分配一块内存,使用完后程序调用free或者delete释放该内存,否则就说该内存就不能被使用,我们就说该内存被泄漏了。
4.维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?
为什么?
答:
我是这样做的,尽可能使用约束,如check,主键,外键,非空字段等来约束,这样做效率最高,也最方便。
其次是使用触发器,这种方法可以保证,无论什么业务系统访问数据库都可以保证数据的完整新和一致性。
最后考虑的是自写业务逻辑,但这样做麻烦,编程复杂,效率低下。
5.什么是事务?
什么是锁?
答:
事务就是被绑定在一起作为一个逻辑工作单元的sql语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。
为了确保要么执行,要么不执行,就可以使用事务。
要将有组语句作为事务考虑,就需要通过acid测试,即原子性,一致性,隔离性和持久性。
锁:
在所以的dbms中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。
与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。
当然锁还分级别的。
6.什么叫视图?
游标是什么?
答:
视图是一种虚拟的表,具有和物理表相同的功能。
可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。
对视图的修改不影响基本表。
它使得我们获取数据更容易,相比多表查询。
游标:
是对查询出来的结果集作为一个单元来有效的处理。
游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。
可以对结果集当前行做修改。
一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。
7.为管理业务培训信息,建立3个表:
s(s#,sn,sd,sa)s#,sn,sd,sa分别代表学号,学员姓名,所属单位,学员年龄
c(c#,cn)c#,cn分别代表课程编号,课程名称
sc(s#,c#,g)s#,c#,g分别代表学号,所选的课程编号,学习成绩
(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)查询选修了课程的学员人数
答:
select学员人数=count(distincts#)fromsc
(5)查询选修课程超过5门的学员学号和所属单位?
答:
selectsn,sdfromswheres#in(selects#fromscgroupbys#havingcount(distinctc#)5)
【篇三:
数据库面试题】
pclass=txt>1、如何查找和删除数据库中的重复数据
法一:
用groupby语句此查找很快的
selectcount(num),max(name)fromstudent–查找表中num列重复的,列出重复的记录数,并列出他的name属性
groupbynum
havingcount(num);1–按num分组后找出表中num列重复,即出现次数大于一次
deletefromstudent(上面select的)
这样的话就把所有重复的都删除了。
—–慎重
2、说一下数据表设计要遵守的三范式是什么?
除了这些你觉得数据表的设计还要注意哪些规则?
1、无重复列,实际上就是一个表中一个列不允许有多值属性、复合属性或者嵌套的表,即列的值域必须是原子值,表必须有主键。
2、属性完全依赖于主键[消除部分子函数依赖]。
第二范式其实是在第一范式上的扩展,所以第二范式必须符合第一范式,表中列不存在部分函数依赖。
3、属性不依赖于其它非主属性[消除传递依赖]。
第三范式是在第二范式的基础上进行的扩展,所以必须符合第二范式且表中不存在传递依赖。
3、写一个sql存储过程,建立一个表user字段是姓名,年龄,职位,权限,然后向里面插入6条数据,然后查询出年龄大于18的所有信息。
createtableuser(
namevarchar(20),
ageint,
positionvarchar(20)
quanxianvarchar(20)
)
insertintouservalues(‘111’,11,’11111’,’1111111’)
insertintouservalues(‘112’,12,’11112’,’1111112’)
insertintouservalues(‘113’,13,’11113’,’1111113’)
insertintouservalues(‘114’,14,’11114’,’1111114’)
insertintouservalues(‘115’,15,’11115’,’1111115’)
insertintouservalues(‘116’,16,’11116’,’1111116’)
createprocedureselectuser
as
select*fromuserwhereage18
4、1.你对哪种数据库最熟悉?
使用该数据库多少年?
简单描述对该数据库的理解.
答:
sql,适合中小型企业使用
2.对其它较熟悉的商业数据库的了解及使用年限.
3.如何将数据库(实例)备份和还原?
(针对自己最熟悉的)
答:
sql,在企业管理器上右点要备份或还原的数据,从所有任务选择备份或还原。
4.如何知道一个表或视图的结构?
答:
查询系统表sysobjects
5.描述innerjoin的功能和已在何种情况下使用innerjoin.
答:
内联接是用比较运算符比较要联接列的值的联接,连接的2个表都要满足、
5、存储过程和sql语句的优缺点
存储过程的优缺点:
优点:
1.由于应用程序随着时间推移会不断更改,增删功能,t-sql过程代码会变得更复杂,storedprocedure为封装此代码提供了一个替换位置。
2.执行计划(存储过程在首次运行时将被编译,这将产生一个执行计划--实际上是microsoftsqlserver为在存储过程中获取由t-sql指定的结果而必须采取的步骤的记录。
)缓存改善性能。
?
?
..但sqlserver新版本,执行计划已针对所有t-sql批处理进行了缓存,而不管它们是否在存储过程中,所以没比较优势了。
3.存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量t-sql语句的代码流量。
4.使用存储过程使您能够增强对执行计划的重复使用,由此可以通过使用远程过程调用(rpc)处理服务器上的存储过程而提高性能。
rp