admin管理员组文章数量:1532656
2024年7月12日发(作者:)
数据库sql面试题及答案
【篇一:sql数据库经典面试题(修改笔试题)(有答案)】
部门,平均工资,要求按部门的字符串顺序排序,不能含有human
resource部门,employee结构如下:
employee_id, employee_name,depart_id,depart_name,wage
答:
select depart_name, avg(wage)
from employee where depart_name human resource
group by depart_name order by depart_name
-------------------------------------------------------------------------- 29.
给定如下sql数据库:test(num int(4)) 请用一条sql语句返回
num的最小值,但不许使用统计功能,如min,max等
答:
select top 1 num from test order by num
--------------------------------------------------------------------------
33.一个数据库中有两个表:
一张表为customer,含字段id,name;
一张表为order,含字段id,customerid(连向customer中id的
外键),revenue;
写出求每个customer的revenue总和的sql语句。
建表 create table customer
(id int primary key,name char(10))
go
create table [order]
(id int primary key,customerid int foreign key references
customer(id) , revenue float)
go
--查询
select , sum( isnull([order].revenue,0) )
from customer full join [order]
on( [order].customerid= ) group by
select ,sum(r) from order,customer
where =customerid group by
select , sum(r ) from customer full
join order on( erid= ) group by
5数据库(10)
a tabel called “performance”contain
:name and score,please 用
sql语言表述
如何选出score最high的一个(仅有一个)
仅选出分数,select max(score) from performance
仅选出名字,即选出名字,又选出分数: select top 1
score ,name from per order by score
select name1,score from per where score in/=(select
max(score) from per)
.....
4 有关系 s(sno,sname) c(cno,cname) sc(sno,cno,grade)
1 问上课程 db的学生no
select count(*) from c,sc where =db and =
select count(*) from sc where cno=(select cno from c where
=db)
2 成绩最高的学生号
select sno from sc where grade=(select max(grade) from sc )
3 每科大于90分的人数
select ,count(*) from c,sc where = and
90 group by
select ,count(*) from c join sc on = and
90 group by
数据库笔试题
*
建表:
dept:
deptno(primary key),dname,loc
emp:
empno(primary key),ename,job,mgr,sal,deptno
*/
1 列出emp表中各部门的部门号,最高工资,最低工资
select max(sal) as 最高工资,min(sal) as 最低工资,deptno from
emp group by deptno;
2 列出emp表中各部门job为clerk的员工的最低工资,最高工资
select max(sal) as 最高工资,min(sal) as 最低工资,deptno as 部
门号 from emp where job = clerk group by deptno;
3 对于emp中最低工资小于1000的部门,列出job为clerk的员
工的部门号,最低工资,最高工资
select max(sal) as 最高工资,min(sal) as 最低工资,deptno as 部
门号 from emp as b
where job=clerk and 1000(select min(sal) from emp as a where
=) group by
4 根据部门号由高而低,工资有低而高列出每个员工的姓名,部门
号,工资
select deptno as 部门号,ename as 姓名,sal as 工资 from emp
order by deptno desc,sal asc
5 写出对上题的另一解决方法
(请补充)
6 列出张三所在部门中每个员工的姓名与部门号
select ename,deptno from emp where deptno = (select deptno
from emp where ename = 张三)
7 列出每个员工的姓名,工作,部门号,部门名
select ename,job,, from emp,dept
where =
8 列出emp中工作为clerk的员工的姓名,工作,部门号,部门名
select ename,job,,dname from emp,dept where
9 对于emp中有管理者的员工,列出姓名,管理者姓名(管理者外
键为mgr) select as 姓名, as 管理者 from emp
as a,emp as b where is not null and =
10 对于dept表中,列出所有部门名,部门号,同时列出各部门工
作为clerk的员工名与工作
select dname as 部门名, as 部门号,ename as 员工
名,job as 工作 from dept,emp
where *= and job = clerk
11 对于工资高于本部门平均水平的员工,列出部门号,姓名,工资,
按部门号排序
select as 部门号, as 姓名, as 工资 from
emp as a where (select avg(sal) from emp as b where
=) order by
12 对于emp,列出各个部门中平均工资高于本部门平均水平的员工
数和部门号,按部门号排序
select count() as 员工数, as 部门号 from emp as a
where (select avg(sal) from emp as b where
=) group by order by
13 对于emp中工资高于本部门平均水平,人数多与1人的,列出
部门号,人数,按部门号排序
select count() as 员工数, as 部门号,avg(sal)
as 平均工资 from emp as a
where (select count() from emp as c where
= and (select avg(sal) from emp as b
where =))1 group by order by
14 对于emp中低于自己工资至少5人的员工,列出其部门号,姓
名,工资,以及工资少于自己的人数
select ,,,(select count() from
emp as b where ) as 人数 from emp as a
where (select count() from emp as b where
)5 数据库笔试题及答案
第一套
一.选择题
1. 下面叙述正确的是ccbad ______。
a、算法的执行效率与数据的存储结构无关
b、算法的空间复杂度是指算法程序中指令(或语句)的条数
c、算法的有穷性是指算法必须能在执行有限个步骤之后终止
d、以上三种描述都不对
2. 以下数据结构中不属于线性数据结构的是______。a、队列b、
线性表c、二叉树d、栈
3. 在一棵二叉树上第5层的结点数最多是______。a、8 b、16 c、
32 d、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.
visual foxpro数据库文件是__ dcbaa ____。 a、存放用户数据的
文件 b、管理数据库对象的系统文件
c、存放用户数据和系统的文件 d、前三种说法都对
12. sql语句中修改表结构的命令是______。
a、modify table b、modify structure c、alter table d、alter
structure
13. 如果要创建一个数据组分组报表,第一个分组表达式是部门,第
二个分组表达式是性别,第三个分组表达式是基本工资,当前索引
的索引表达式应当是______。
a、部门+性别+基本工资 b、部门+性别+str(基本工资)
c、str(基本工资)+性别+部门 d、性别+部门+str(基本工资)
14. 把一个项目编译成一个应用程序时,下面的叙述正确的是
______。
a、所有的项目文件将组合为一个单一的应用程序文件
b、所有项目的包含文件将组合为一个单一的应用程序文件
c、所有项目排除的文件将组合为一个单一的应用程序文件
d、由用户选定的项目文件将组合为一个单一的应用程序文件
15. 数据库db、数据库系统dbs、数据库管理系统dbms三者之间
的关系是______。
a、dbs包括db和dbms b、dbms包括db和dbs
c、db包括dbs和dbms d、dbs就是db,也就是dbms
16. 在选项对话框的文件位置选项卡中可以设置_ baaba _____。
a、表单的默认大小 b、默认目录
c、日期和时间的显示格式 d、程序代码的颜色
17. 要控制两个表中数据的完整性和一致性可以设置参照完整性,要
求这两个表______。
a、是同一个数据库中的两个表 b、不同数据库中的两个表
c、两个自由表 d、一个是数据库表另一个是自由表
18. 定位第一条记录上的命令是______。
a、go top b、go bottom c、go 6 d、skip
19. 在关系模型中,实现关系中不允许出现相同的元组的约束是通过
______。
a、候选键 b、主键 c、外键 d、超键
20. 设当前数据库有10条记录(记录未进行任何索引),在下列三种
情况下,当前记录号为1时;eof()为真时;bof()为真时,命令?recn()
的结果分别是______。
a、1,11,1 b、1,10,1 c、1,11,0 d、1,10,0
21. 下列表达式中结果不是日期型的是__ ccbba ____。
a、ctod(2000/10/01) b、{^99/10/01}+365 c、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嵌套语句查询选修课程名称为’税收基础’的学员
学号和姓名?
答案:select s# ,sn from s where s# in(select s# from c,sc
where c.c#=sc.c# and cn=’税收基础’)
(2) 使用标准sql嵌套语句查询选修课程编号为’c2’的学员姓名和所
属单位?
答:select sn,sd from s,sc where s.s#=sc.s# and sc.c#=’c2’
(3) 使用标准sql嵌套语句查询不选修课程编号为’c5’的学员姓名和
所属单位?
答:select sn,sd from s where s# not in(select s# from sc
where c#=’c5’)
(4)查询选修了课程的学员人数
答:select 学员人数=count(distinct s#) from sc
(5) 查询选修课程超过5门的学员学号和所属单位?
答:select sn,sd from s where s# in(select s# from sc group by
s# having count(distinct c#)5)
【篇三:数据库面试题】
p class=txt>1、 如何查找和删除数据库中的重复数据
法一: 用group by语句 此查找很快的
select count(num), max(name) from student –查找表中num列
重复的,列出重复的记录数,并列出他的name属性
group by num
having count(num) ;1 –按num分组后找出表中num列重复,即
出现次数大于一次
delete from student(上面select的)
这样的话就把所有重复的都删除了。—–慎重
2、说一下数据表设计要遵守的三范式是什么?除了这些你觉得数据
表的设计还要注意哪些规则?
1、无重复列,实际上就是一个表中一个列不允许有多值属性、复合
属性或者嵌套的表,即列的值域必须是原子值,表必须有主键。
2、属性完全依赖于主键[消除部分子函数依赖]。第二范式其实是在
第一范式上的扩展,所以第二范式必须符合第一范式,表中列不存
在部分函数依赖。
3、属性不依赖于其它非主属性[消除传递依赖]。第三范式是在第二
范式的基础上进行的扩展,所以必须符合第二范式且表中不存在传
递依赖。
3、写一个sql存储过程,建立一个表user 字段是姓名,年龄,职
位,权限,然后向里面插入6条数据,然后查询出年龄大于18的所
有信息。
create table user(
name varchar(20),
age int,
position varchar(20)
quanxian varchar(20)
)
insert into user values(‘111’,11,’11111’,’1111111’)
insert into user values(‘112’,12,’11112’,’1111112’)
insert into user values(‘113’,13,’11113’,’1111113’)
insert into user values(‘114’,14,’11114’,’1111114’)
insert into user values(‘115’,15,’11115’,’1111115’)
insert into user values(‘116’,16,’11116’,’1111116’)
create procedure selectuser
as
select * from user where age 18
4、1. 你对哪种数据库最熟悉?使用该数据库多少年?简单描述对该
数据库的理解.
答:sql,适合中小型企业使用
2. 对其它较熟悉的商业数据库的了解及使用年限.
3. 如何将数据库(实例)备份和还原?(针对自己最熟悉的)
答:sql,在企业管理器上右点要备份或还原的数据,从所有任务选
择备份或还原。
4. 如何知道一个表或视图的结构?
答:查询系统表sysobjects
5. 描述inner join的功能和已在何种情况下使用inner join.
答:内联接是用比较运算符比较要联接列的值的联接,连接的2个
表都要满足、
5、存储过程和sql语句的优缺点
存储过程的优缺点:
优点:
1.由于应用程序随着时间推移会不断更改,增删功能,t-sql过程
代码会变得更复杂,storedprocedure为封装此代码提供了一个替
换位置。
2.执行计划(存储过程在首次运行时将被编译,这将产生一个执行
计划-- 实际上是 microsoft sql server为在存储过程中获取由 t-
sql 指定的结果而必须采取的步骤的记录。)缓存改善性能。
??..但sql server新版本,执行计划已针对所有 t-sql 批处理进行了
缓存,而不管它们是否在存储过程中,所以没比较优势了。
3.存储过程可以用于降低网络流量,存储过程代码直接存储于数据
库中,所以不会产生大量t-sql语句的代码流量。
4.使用存储过程使您能够增强对执行计划的重复使用,由此可以通
过使用远程过程调用 (rpc) 处理服务器上的存储过程而提高性能。
rpc 封装参数和调用服务器端过程的方式使引擎能够轻松地找到匹配
的执行计划,并只需插入更新的参数值。
5.可维护性高,更新存储过程通常比更改、测试以及重新部署程序集
需要较少的时间和精力。
6.代码精简一致,一个存储过程可以用于应用程序代码的不同位置。
7.更好的版本控制,通过使用 microsoft visual sourcesafe 或某个
其他源代码控制工具,您可以轻松地恢复到或引用旧版本的存储过
程。
8.增强安全性:
a、通过向用户授予对存储过程(而不是基于表)的访问权限,它们
可以提供对特定数据的访问;
b、提高代码安全,防止 sql注入(但未彻底解决,例如,将数据操
作语言--dml,附加到输入参数); c、sqlparameter 类指定存
储过程参数的数据类型,作为深层次防御性策略的一部分,可以验
证用户提供的值类型(但也不是万无一失,还是应该传递至数据库
前得到附加验证)。
缺点:
1.如果更改范围大到需要对输入存储过程的参数进行更改,或者要
更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、
更新 getvalue() 调用,等等,这时候估计比较繁琐了。
2.可移植性差
由于存储过程将应用程序绑定到 sql server,因此使用存储过程封
装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性
在您的环境中非常重要,则将业务逻辑封装在不特定于 rdbms 的中
间层中可能是一个更佳的选择。
sql语句灵活,可移植性强,查询速度比存储过程慢些
6、为数据库创建索引都需要注意些什么?
1. 索引能提高速度的关键就是索引所占的空间要比表小得多
2. 注意索引的大小,有一些表可以建成索引组织表
3. 索引的列不要太多,要选择一些selective比较低的列建b-tree
索引,选择selective高的列建bitmap索引(在更新比较多的表不不
要建bitmap索引)
4. 将selective较低的列放在前面
5. 在更新不多的表上建索引时,可以考虑用compress选择,以节
约索引的空间
7、一组sql相关操作面试题
1. 在表a中有数据
id mo
1 y
2 n
请用一个select 语句写出,如果mo的值为“y”,返回“yes”,为n
返回“no”
效果如下:
id mo
1 yes
2 no
select id,mo=case
when mo=?y? then ?yes?
when mo=?n? then ?no?
end
from az
2. 在表a中查询出自动增长列中31到40之间的数据(注意可能不是
连续的)
select * from a where id between 31 and 40
3. 有一个表table中有一个自动增长字段id,如果在存储过程中向这
个表插入一条记录后,如何获得新记录的id.(写出获取新记录id的函
数即可)
create function c_currentid()
returns int
as
begin
declare @lastid int
select @lastid=max(cid) from c
return (@lastid)
end
select .c_currentid() as ?当前c表中最新的编号?
4. having的用法, 是用来做什么的 having用来对group by 分组后
的记录进行过滤。
5. sql中的什么函数可以转换为时间 select
convert(datetime,?2000/01/01′) select cast(?2001/02/02′ as
datetime)
6. 查询数据放入一张临时表 select * into #a from test select *
from #a
8、如何使用sql进行模糊查询
like条件一般用在指定搜索某字段的时候, 通过”% _” 通配符的作用
实现模糊查找功能,通配符可以在前面也可以在后面或前后都有。
搜索以mian开头:
select * from teble where title like ‘mian%’
搜索以mian结束:
select * from teble where title like ‘%mian’
搜索包含mian:
select * from teble where title like ‘%mian%’
注释:%表示0个或多个字符构成的字符串
_表示单个字符
9、说一下mysql, oracle等常见数据库的分页实现方案?
:
select * from ( select row_.*, rownum rownum_ from
( query_sql ) row_ where rownum = max) where rownum_ =
min
server:
select top @pagesize * from tablename where id not in (select
top @pagesize*(@page-1) id from tablename order by id) order
by id
select * from tablename limit position, counter
2
select * from (select *,rownumber() as row_next from
tablename) where row_next between min and max
1.分页方案一:(利用not in和select top分页)效率次之
语句形式:
select top 10 * from testtable
where(id not in (select top 20 id from testtable orderby
id))orderbyid
select top 页大小 * from testtable
where( id not in (select top 每页大小-1*待查询页数-1 id from
表 orderby id)) orderbyid 思路:先查询出待查询页之前的全部条数
的id,查询id不在这些id中的指定数量条数
2.分页方案二:(利用id大于多少和select top分页)效率最高
语句形式:
select top 10 *from testtable
where(id(select max(id) from(select top20 id from testtable
orderbyid)as t))orderby id select top 页大小* from testtable
where(id(select max(id) from(select top 每页大小*待查询页数-1
id from 表 orderby id)as t)) orderby id
思路:先获得待查询页的之前全部条数id,获得它们当中最大的id号,
以此最大id号为标志,查找比这个id号大的指定条数
3.分页方案三:
select top pagesize * from(select top npage*pagesize * from
yourtable order by id)as a order by id desc
select top 每页条数 * from (select top 待查询页*每页条数) * from
yourtable order by id)as a order by id desc
思路:先正排序查询出待查询页之前(包括当前页)的全部条数,然后将
其倒排序,取指定条数
10、几道sql面试题
1. 解释一下sql里面的null
答案:null代表一个unknown的值或者一个不存在的值
版权声明:本文标题:数据库sql面试题及答案 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1720723941a839688.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论