笔试题和面试题——软件测试工程师面试秘籍(15)

发表于:2021-12-08 09:45

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:G. li    来源:51Testing软件测试网原创

  2.3.4  笔试题和面试
  试题1.在一个查询中,使用哪个关键字可以去除重复列?
  分析:distinct只显示一次重复出现的值,最好和order by结合使用,以提高效率。例如,select distinct 字段名1,字段名2 from表名order by字段名1。
  答案:distinct。

  试题2.解释存储过程和触发器。
  分析:参见2.3.2节中的知识点。
  答案:存储过程是一组Transact-SQL语句,在一次编译后可以执行多次。因为不必重新编译Transact-SQL语句,所以执行存储过程可以提高性能。
  触发器是一种特殊类型的存储过程,不由用户直接调用。创建触发器时会对其进行定义,以便在对特定表或者特定类型的数据进行修改时执行。

  试题3.数据库日志有什么作用?数据库日志满的时候应执行什么操作?
  答案:每个数据库都有日志,用来记录所有事务和事务对数据库所做的修改。日志满了之后,应该清空日志(日志满了是指日志文件达到设置的最大文件大小,没设置时,文件可以占用最大可用磁盘空间)。

  试题4.触发器分为事前触发器和事后触发器,两者有何区别?
  答案:事前触发器运行于触发的事件发生之前,而事后触发器运行于触发的事件发生之后。

  试题5.主键和唯一索引有什么区别?
  答案:二者有3个区别。
  (1)有唯一性约束的列允许有空值,但是有主键约束的列不允许有空值。
  (2)可以把唯一性约束设置到一列或者多列上,这些列或列的组合必须是唯一的。但是,有唯一性约束的列并不是表的主键列。
  (3)一个表最多只有一个主键,但可以有很多唯一键。

  试题6.简述数据库设计的过程。
  答案:规划、需求分析、概念设计、逻辑设计、物理设计、实现维护和运行。

  试题7.假如表内容如下。
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 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 #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','负')
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
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.rq
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 col002='负' group by col001) b
 where a.col001=b.col001

  试题8.表中有A、B、C这3列,用SQL语句实现:当A列大于B列时选择A列,否则,选择B列;当B列大于C列时选择B列,否则,选择C列。
  答案:使用以下语句。
select (case when a>b then a else b end),(case when b>c then b esle c end)from table_name

  试题9.请在SQL Server 2000中用SQL创建一张用户临时表和系统临时表,里面包含两个字段ID和IDValues,类型都是int类型,并解释两者的区别。
  答案:要创建用户临时表,使用create table #××(ID int, IDValues int)。
  要创建系统临时表,使用create table ##××(ID int, IDValues int)。
  用户临时表只对创建这个表的用户的会话可见,对其他进程不可见,当创建它的进程消失时这个临时表就自动删除;全局临时表对整个SQL Server实例都可见,但是所有访问它的会话都消失时,它也被自动删除。

  试题10.绘制某学校计算机系的教学管理ER图,并简化ER图。
  答案:绘制的ER图如图2.14所示。
图2.14  原始的ER图

  简化后的ER图如图2.15所示。
图2.15  简化后的ER图

  试题11.MySQL中的连接有哪几种?
  答案:MySQL中有5种连接。
  左连接:若执行A left join B,则以A为基础,有些条件下B不存在,A也显示。
  右连接:若执行A right join B,则以B为基础,有些条件下A不存在,B也显示。
  内连接:只显示符合条件且存在的。
  外连接:笛卡儿乘积。
  全连接:左连接加上右连接的集合。

  试题12.数据库中两张表tab1、tab2,tab1中有字段id、name,tab2中有字段id、score、class,两张表以id字段作为外键关联,如何用一条SQL语句找到名字为“李三”的人的分数和对应的班级?
  答案:使用以下语句。
select b.score,b.class from tab1 a,tab2 b where a.id=b.id and a.name="李三"

  试题13.有一个表tb1,其字段是name、class、score,分别代表姓名、所在班级、分数。要求用一条语句查出每个班某门课的及格人数和不及格人数。
  答案:语句如下。
SELECT 'class',
SUM(CASE WHEN score>=60 THEN 1 ELSE 0 END),
SUM(CASE WHEN score>=60 THEN 0 ELSE 1 END)
FROM tb1
GROUP BY 1


查看《软件测试工程师面试秘籍》全部连载章节
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号