91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

.Net開發工程師筆試試題

發布時間:2020-07-08 07:25:22 來源:網絡 閱讀:227 作者:鄭宏鑫 欄目:編程語言

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

 

現在有一個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 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


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

历史| 定陶县| 巴里| 田阳县| 图木舒克市| 漳州市| 卢氏县| 万载县| 孟津县| 南陵县| 壶关县| 毕节市| 五莲县| 台东市| 桓台县| 大安市| 额敏县| 平阴县| 布拖县| 阿拉善右旗| 乌海市| 化德县| 西峡县| 商水县| 云安县| 军事| 延边| 建阳市| 乐陵市| 丰城市| 石城县| 长宁区| 嘉兴市| 罗城| 耒阳市| 菏泽市| 达拉特旗| 教育| 林州市| 伊宁市| 吴江市|