.Net开发工程师笔试试题

附上自己做的答案,提出不足之处

现在有一个SQL Server 2000版本的数据库,里面包含有三个表InfoInfoReplyUser,分别表示信息、信息评论和用户表,包含的字段分别如下:

Info


infoID


INT


信息ID(自增列)


infoTitle


NVARCHAR(100)


信息标题


infoContent


NVARCHAR(2000)


信息正文


infoPubDate


DATETIME


信息发布日期


infoPubUser


VARCHAR(30)


信息发布用户帐号

InfoReply


infoReplyID


INT


评论ID(自增列)


infoID


INT


信息ID


infoReplyContent


NVARCHAR(2000)


评论正文


infoReplyDate


DATETIME


评论日期


infoReplyUser


VARCHAR(30)


评论用户帐号

User


userNo


VARCHAR(30)


用户帐号


userName


NVARCHAR(30)


用户姓名

三个表的关系可以通过下列模型图来描述:

现有下列问题:

(1)   请说明在上述模型图中,PK和FK1、FK2的含义?

答:pk是主键 fk1、fk2分别是外面

表infoReply有俩个外键fk1,fk2

表info有一个外键pk1

(2)   现在有一个查询,需要返回一个最新发布的20条信息列表,要求包含:信息ID、信息标题、信息发布时间、信息发布人姓名、信息评论总数和最后评论时间,并且按最后评论时间排序,请给出该查询的SQL语句?

Select top 20 i.InfoID,i.InfoTItle,i.InfoPubDate,u.userName,

count(ir.infoID)as ReplyCount   --信息评论总数总数

ir.infoReplyDate

from Info i

inner join User u on i.infoPubuser =u.userNo

inner join InfoReply ir on ir.infoID=i.inforID

group by i.InfoID,i.InfoTItle,i.InfoPubDate,u.userName

order by ir.inforReplyUser desc

(3)   仍是第(2)中的查询要求,现在假设Info表和User表之间不存在任何外键约束,即infoPubUser表示的用户帐号可能在User表中已经被删除,这时如果要继续返回最新的20条信息列表,包含(2)中相同的列,该SQL语句应该怎么写?

Select top 20 i.InfoID,i.InfoTItle,i.InfoPubDate,u.userName,

count(ir.infoID)as ReplyCount   --信息评论总数总数

ir.infoReplyDate

from Info i

left join User u on i.infoPubuser =u.userNo

left join InfoReply ir on ir.infoID=i.inforID

group by i.InfoID,i.InfoTItle,i.InfoPubDate,u.userName

order by ir.inforReplyUser desc

(4)   假设Info表有一个字段infoReplyCount(信息评论总数),那我们需要怎么做才能让用户每增加一条评论,该字段自动+1,说出大概思路即刻,能写出SQL语句最好

在表Info创建一个触发器,原理:当评论表数据插入之后(after关键字)就会触发下面update语句

Create trigger tri_addReply

On InfoReply

After insert

As

Beigin

Declare @infoID int  --定义一个变量

Select @infoID=infoID from inserted –从插入表选出infoID

Update infoReply set infoReplyCount=infoReplyCount+1 where [email protected]

end

(5)   写出返回每一条信息的评论总数的SQL语句

Select i.infoID,count(ir.infoID)

From Info inner join InfoReply ir on i.infoID=ir.infoID

Group by i.infoID, ir.infoID

(6)   假设发现Info表有多条记录丢失了,如何最大程度地找出有多少条记录丢失了,写出SQL语句。(不使用InfoReply表)

Select count(*) from Info --选出表中的总数

Select max(infoID) from Info   --选出表中最大infoID

之后将两个结果相减得到多少丢失记录

(7)   假设发现Info表只有1条记录丢失了,如何知道丢失的记录的ID,写出SQL语句(不使用InfoReply表)

首先做个小判断,这个丢失的一条记录不可能是最后一条记录

select rownum from

(select row_number()over (order by id desc) as rownum from Info)—采用sql的分页函数

as a

where rownum not in(select id from Info)

(8)   仍然是(6)的问题,可以使用InfoReply表,写出SQL语句。

Select count(infoID)from  --此语句统计多少条记录丢失

(Select infoID from InfoReply

where infoID not in

(select infoID from Info)) as a   --查找出多少条丢失记录放到a表中

(9)   假设Info表有一个字段infoReplyCount(信息评论总数),infoReplyCount>=20的为热门帖子,小于20的为非热门帖子,请根据Info表的内容输出以下2行数据,要求SQL语句最简。

Select infoReplyCount as 数量,

(

Case

When infoReplyCount>=20 then N‘热门’

Else N‘非热门’

End

) as 类别

From Info


类别


数量


热门


30


非热门


18

时间: 2024-11-08 23:36:07

.Net开发工程师笔试试题的相关文章

iOS开发工程师笔试题

iOS开发工程师笔试题 分类: IOS 面试题2013-01-17 10:28 820人阅读 评论(0) 收藏 举报 随着iOS平台开发的职位的增加,笔试.面试也越来越有“套路”,这里我总结了一些面试题,多数是Objective-C的基础知识,适合于面试新人,答案是我自己答的,不准确的地方,欢迎指出. 1.   Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? Object-c的类不可以多重继承:可以实现多个接口,通过实

腾讯web前端开发工程师笔试题及答案

1. 如何实现事件委托? 首先要知道什么是事件委托. 考虑一个列表,在li的数量非常少的时候,为每一个li添加事件侦听当然不会存在太多性能方面的问题,但是当列表非常的长,长到上百上千甚至上万的时候(当然只是一个解释,实际工作中很少遇到这么多li的情况),为每个li添加事件侦听就会对页面性能产生很大的影响. 就像下面这段代码: <!DOCTYPE HTML><html><head><meta charset="utf-8" /><ti

JAVA软件工程师笔试试题

JAVA软件工程师笔试试题 (考试时间:120分钟 试卷分值:150分 ) 一. 逻辑推理题[10分] 1.甲.乙.丙.丁四位同学中有一位同学为海啸灾区捐款1000元,当老师询问时,他们分别这样回答: 甲:这1000元不是我捐的 乙:这1000元是丁捐的 丙:这1000元是乙捐的 丁:这1000元不是我捐的 这四人中只有一个人说了真话,由此可见这1000元是谁捐的( ).[2分] A.甲 B.乙 C.丙 D.丁 2. 甲.乙.丙三人是同一家公司的员工,他们的未婚妻A.B.C也都是这家公司的职员.

前端试题-2016年阿里前端开发工程师笔试题6,7,8题的解法

2016年阿里前端开发工程师笔试题(只有题,没有答案): http://www.cnblogs.com/sdgf/archive/2015/08/18/4740698.html 第6题:请在____处填写答案,从而达到题目的要求 var arr = [1, 2, 3, 4, 5]; var result = arr.sort(_______________________________).join("+"); console.log(result); 解答:在排序当中,如果需要按照某

笔试-4399【2020校招】Web后端开发工程师笔试题(我又行了?然后一份面试通知都没有,我是真的菜啊。。。。)

感悟:两小时,单项选择15,问答8,编程3,论述5(大学规划,为什么选这个岗位等等,也占分) 单选:计算机网络偏多,然后就是一些基本知识点了: 好喜欢考这东西啊,下面答案是6,因为末尾有个'\0',我做错了....如果c[10]的话就是10 归并排序最坏情况(多分析一点最坏情况,因为最好情况都考烂了.....): 问答: TCP的三次握手和四次挥手,为什么是三次而不是两次,为什么是四次而不是三次 SQL建表(create table `user`(id int not null, user va

分享一位WEB前端开发工程师面试题!!!

    今天在Q群里看到这样一则面试题!此技术题还可以.只围绕了HTML.CSS.JS这三个前端必备的技术,其它更多的知识没有提及.你全做对了,并不代表着什么.但你答不上来,那就代表着很多很多... [HTML && CSS] 1.Doctype? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义? doctype声明指示将使用哪一个文档类型定义(Document Type Definition DTD)来编写标记,DTD基本上就是个详细描述标记规则和语法的页面. doctype有

【面试题】Python高级开发工程师面试题

线上面试题,有空整理答案,欢迎大家回复答案

网易测试开发工程师笔试体会(秋招)

题型1(单选题20*3)(2016年9月12日19:00-21:00) 不太难(涉及软件工程.测试理论.java程序代码.操作系统.计算机网络等内容) 题型2(简答题2*20) 1.一个简单的论坛系统,以数据库储存如下数据: 用户名,email,主页,电话,联系地址,发帖标题,发帖内容,回复标题,回复内容.每天论坛访问量300万左右,更新帖子10万左右. 请给出数据库表结构设计,并结合范式简要说明设计思路. 参考: 一 分割思想: 1   数据库切分:用户库.主题库.回复库 2   数据表水平切

iOS开发工程师面试题(二)

1.手写冒泡跟插入排序 冒泡排序来源于生活常识,相当于把数组竖起来,轻的向上,重的向下.void bubbleSort(int[] unsorted) { for (int i = 0; i < unsorted.Length; i++) { for (int j = i; j < unsorted.Length; j++) { if (unsorted[i] > unsorted[j]) { int temp = unsorted[i]; unsorted[i] = unsorted[