第一部分【数据库技能】

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

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

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 infoID=@infoID

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

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

  1. Web前端开发工程师面试题

    Web前端开发工程师面试题1.说说css的优先级?2.在移动端中,常常使用tap作为点击事件,好处是?会带来什么问题?3.原生JS的window,onload与Jquery的$(document).r ...

  2. iOS开发工程师笔试题

    iOS开发工程师笔试题 1.   Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? Object-c的类不可以多重继承:可以 ...

  3. 珍藏版 Python 开发工程师面试试题

    珍藏版 Python 开发工程师面试试题 说明:不拿到几家公司的offer,那就是卑鄙的浪费 一.Python_基础语法 1.可变与不可变类型: 2.浅拷贝与深拷贝的实现方式.区别:deepcopy如 ...

  4. python后端开发工程师考证试题

    python开发工程师考证试题 问答题链接 python开发工程师考证试题 选择题 题目 关于 Python 程序格式框架的描述,以下选项中错误的是 ( A ) A: Python 语言不采用严格的“ ...

  5. 复盘鼎甲科技2020web开发工程师-笔试题(校招)

    复盘鼎甲科技2020web开发工程师-笔试题(校招) 本试卷以W3C规范为准,JavaScript使用ES5标准,除特别说明外,不考虑各个浏览器之间差异. 一.多项选择题 以下标签是行内元素(inli ...

  6. 牛客网试卷: 京东2019校招笔试Java开发工程师笔试题(1-)

    1.在软件开发过程中,我们可以采用不同的过程模型,下列有关 增量模型描述正确的是() A 是一种线性开发模型,具有不可回溯性 B 把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析 ...

  7. C++开发工程师面试题库 50~100道

    51. New delete 与malloc free 的联系与区别?答案:都是在堆(heap)上进行动态的内存操作.用malloc函数需要指定内存分配的字节数并且不能初始化对象,new 会自动调用对 ...

  8. C++开发工程师面试题库 1~50道

    1.    指出以下变量数据存储位置 全局变量int(*g_pFun)(int);g_pFun=myFunction;g_pFun存储的位置(A ) 为全局的函数指针 指向空间的位置( B) 所有函数 ...

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

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

随机推荐

  1. leetcode877

    public class Solution { public bool StoneGame(int[] piles) { return true; } } 这问题很不好...

  2. CommonDialog控件

    '要先单击“工程-部件”,显示“部件”对话框,将“Microsoft Common Dialog control 6.0(SP6)”选中,在工具栏就多出了一个CommonDialog控件图标,将其添加 ...

  3. Halcon中二维码解析函数解码率和时长的优化方法

    Halcon中条码解析函数包容多种条码类型且简单强大.现有的‘Data Matrix ECC 200’.‘QR Code’和‘PDF417’等广泛使用的条码均能解析.简单是通过默认参数即可对多种条码进 ...

  4. struts2配置默认首页

    配置struts2 默认欢迎页的几种办法: 1.首先需要明确的是struts过滤器配置映射的模式是路径匹配还是扩展匹配,如果url-pattern配置为/*,如果不做特殊处理,是不会转到welcome ...

  5. MySQL半同步复制配置

    ansible-playbook -f 3 endpoint/mysql.yml -e "exec=fileConfig" -e "db_action=setAll&qu ...

  6. Java核心技术-泛型程序设计

    使用泛型机制编写的代码要比那些杂乱地使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性. 泛型对于集合类尤其有用 1 为什么要使用泛型程序设计 泛型程序设计意味着编写的代码可以 ...

  7. android模拟按键问题总结[使用IWindowManager.injectKeyEvent方法](转)

    http://blog.csdn.net/xudongdong99/article/details/8857173 Android上面TreeView效果 http://blog.csdn.net/g ...

  8. 20155319 2016-2017-2 《Java程序设计》第七周学习总结

    20155319 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 第十二章 Lambda 如果使用JDK8的话,可以使用Lambda特性去除重复的信息. 在只 ...

  9. Linux文件备份

    1.tar -P是否保留根目录 -t查看压缩文件内容 -N 201401010备份日期以后 [root@localhost /]# tar -zcPf /tar/data2.tar.gz /etc/* ...

  10. mfc的一点总结-----Edit Control操作

    获取Edit Control(编辑框)的内容: CString key; GetDlgItem(IDC_EDIT1)->GetWindowText(key); 其中IDC_EDIT1是所要获取编 ...