各大軟件公司NE工程師筆試壓軸題不得不看_第1頁
各大軟件公司NE工程師筆試壓軸題不得不看_第2頁
各大軟件公司NE工程師筆試壓軸題不得不看_第3頁
各大軟件公司NE工程師筆試壓軸題不得不看_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

縱覽各大社區(qū)、論壇,各大ORM框架火得不行了,如NHibernate、LINQtoSQL、ADO.NETEntityframework等,還有最近市場上出版的一本叫《領(lǐng)域驅(qū)動設(shè)計與模式實戰(zhàn)》,里面也凸顯了不少NHibernate在領(lǐng)域驅(qū)動設(shè)計中的作用與地位,也算是第一本與NHibernate相關(guān)的書籍吧!不過就NHibernate而言還是沒有官方文檔介紹得詳細呵呵,園子里Kiler已經(jīng)把他翻譯成中文版的了,收益一大片僅僅是CET-4的人。不管你是用NHibernate也好,還是用LINQtoSQL也好,用profiler一跟蹤,執(zhí)行的都是SQL語句,所以所SQL是根。特別是對于那些以數(shù)據(jù)為中心的應(yīng)用系統(tǒng),在數(shù)據(jù)庫中實現(xiàn)復(fù)雜的存儲過程,復(fù)雜的報表查詢,還是直接SQL來得痛快。當然對于那些在基于.NET的中間層應(yīng)用中,它們實現(xiàn)面向?qū)ο蟮臉I(yè)務(wù)模型和商業(yè)邏輯的應(yīng)用,NHibernate是最有用的。不管怎樣,NHibernate一定可以幫助你消除或者包裝那些針對特定廠商的SQL代碼,并且?guī)湍惆呀Y(jié)果集從表格式的表示形式轉(zhuǎn)換到一系列的對象去(官方文檔)。

有點跑題了,不再啰嗦----直接晾出壓軸題。壓軸題第一問1.把表一轉(zhuǎn)換為表二表一:

表二:數(shù)據(jù)庫代碼如下:代碼

1DROP

table

#student

2CREATE

TABLE

#student

(stdname

nvarchar(10),stdsubject

nvarchar(10),result

int)

3INSERT

INTO

#student

VALUES

('張三','語文',80)

4INSERT

INTO

#student

values

('張三','數(shù)學(xué)',90)

5INSERT

INTO

#student

VALUES

('張三','物理',85)

6INSERT

INTO

#student

VALUES

('李四','語文',85)

7INSERT

INTO

#student

values

('李四','數(shù)學(xué)',92)

8INSERT

INTO

#student

VALUES

('李四','物理',82)

9INSERT

INTO

#student

VALUES

('李四','化學(xué)',82)10INSERT

INTO

#student

VALUES

('李四','化學(xué)',82)11SELECT

*

FROM

#student

可能很多老手們,一看到這題目就有了答案。當然,貼出答案來不是我的目的,我要帶著SQL新手們重構(gòu)到答案。用李建忠老師最愛說的話就是------我不建議一上來就套用模式,而應(yīng)該從重構(gòu)到模式。首先大家會想到分兩組1select

stdname,····,from

#student

group

by

stdname間然后···字···中間琴該寫什么呢跡?代碼偶1

爸case蘭

stds暑ubjec蓬t

whe包n

拆'化學(xué)'黃

then盾

Resu盛lt

en驢d勝2

也case垃

stds品ubjec善t

whe鵲n

獻'語文'疲

then達

Resu誓lt

en違d顛3

吹ca賴se孔

stds蔥ubjec帥t

whe努n

柱'···'擱

then疑

Resu毅lt

en刺d枝4

滔case四

stds額ubjec悄t

whe峰n

侮'···'亦

then競

Resu帽lt

en青d壽5

龍case暴

stds叨ubjec撕t

whe通n

通'···'青

then除

Resu熊lt

en斗d貪表二里面得桃0是哪里來暈的呢?代碼晶1許

isnu籌ll(su觀m(和case究

stds頂ubjec蒙t

whe撤n

扔'化學(xué)'臨

then憤

Resu崖lt

en稍d),暴0熊)堅2榴

isnu免ll(su箏m(便case別

stds天ubjec伶t

whe普n

搭'語文'耳

then狀

Resu唱lt

en箱d),謠0堆)刊3而

isnu鎮(zhèn)ll(su弦m(本case雹

stds困ubje行ct

wh工en

嶼'···'盼

then安

Resu站lt

en墨d),我0眉)縱4拜

isnu翅ll(su因m(節(jié)case防

stds球ubjec逮t

whe筍n

瞎'···'厲

then傾

Resu柱lt

en抱d),勺0該)估5民

isnu喇ll(su熟m(帖case役

stds駐ubjec尊t

whe末n

棗'···'尸

then色

Resu千lt

en疼d),攻0濱)所以得出:代碼短1訊傾selec火t

std昂name,珍2懲唐isnul沙l(sum照(地case跡

stds她ubjec綠t

whe說n

德'化學(xué)'子

then悠

Resu久lt

en劍d),輔0琴)

[化學(xué)析],丈3鬼他isnul破l(sum舊(敲case秩

stds首ubjec旬t

whe靜n

考'數(shù)學(xué)'益

then得蛋Resul捐t

end毛),劑0匠)

[數(shù)學(xué)進],脫4滔丘isnul躍l(sum護(膚case顆

stds仰ubjec租t

whe積n

稠'物理'堵

then櫻

Resu枯lt

en道d),貨0爹)

[物理府],溫5瞎登isnul義l(sum聯(lián)(扯case芽

stds屆ubjec嗎t(yī)

whe臨n

芒'語文'脂

then苗

Resu韻lt

en江d),消0投)

[語文會]

所6權(quán)鉤from

孤#stud止ent

朝7頌阿group脹

by

s夸tdnam語e搜然后得出答普案:代碼窮1給橡decla梅re

@s穴ql

va正rchar休(與4000臥)

巾2舊緩set摘

@sql豎

=

辦'sele惱ct

st培dname失'新高3乞板selec副t

@sq隨l

=

@夜sql

+疾核',isn演ull展(sum(駐case

案stdsu舍bject碧

when舞

'''辣+stds魯ubjec倆t+氣'''

t欠hen

R軍esult百

end)拆,0)

[紛'片+stds驢ubjec可t+慰']'晨癢4女皺from

靈(sele康ct

di齡stinc瞎t

std芹subje肢ct

fr挪om

#s痕tuden竹t)

兵as宏

a

披5酒公selec兔t

@sq需l

=

@鋸sql+名'

fro賞m

#st盈udent押

grou脹p

by

脂stdna食me'躺耗6央馳print過

@sql賞7謝蘇exec(蠢@sql)叫8嶄尚壓軸題第二稼問:把表二匹轉(zhuǎn)化為表一表一:表二:婦數(shù)據(jù)庫代碼衰如下:代碼侮1綠碑DROP

脈table敢

#stu脾dent2析2疑壽CREAT慚E

TAB贈LE

#s跑tuden緊t2

(s廣tdnam理e

nva訓(xùn)rchar磨(勻10溜),化學(xué)

女int闊,數(shù)學(xué)

喇int蹲,物理

礦int光

,語文

揭int寬

)萌3釣朗INSER聞T

INT負O

#st晉udent虜2

VAL徹UES

(設(shè)'李四'賤,荒164覺,陷92膨,斤82灰,銷85襲)洞4瘋葵INSER袖T

INT他O

#st浸udent際2

VAL以UES

(么'張三'砍,替0踩,虜90箱,訴85修,環(huán)80蹄)礦5嬌通SELEC苗T

*

F幼ROM

#晴stude歐nt2

練看到這題,出直接想到:代碼抓

1脾易SELEC旋T浮'李四'遼as錢

stdn號ame,s們tdnam繭e=佛'化學(xué)'坡,

化學(xué)

漆as忠

resu丹lt

fr糖om

#s穗tuden緊t2

淡where棕

stdn膨ame=您'李四'夏

2灣莫union使

all殿

3詠毯SELEC耀T鈔'李四'搶as彈

stdn偵ame,s修tdnam仍e=莫'數(shù)學(xué)'罩,

數(shù)學(xué)

謊as章

resu灶lt

fr倦om

#s完tuden洽t2

小where據(jù)

stdn煩ame=明'李四'足

4吩鑰union內(nèi)

all余

5勻佩SELEC籠T碑'李四'漂as倒

stdn瀉ame,s嫂tdnam騰e=晨'物理'金,

物理

霞as龜

resu弓lt

fr樣om

#s第tuden診t2

桿where趴

stdn戀ame=門'李四'滋

6旺春union相

all摟

7陰植SELEC謀T崗'李四'急as欣

stdn顯ame,s缸tdnam裁e=稻'語文'抄,

語文

或as程

resu暢lt

fr脅om

#s悼tuden扣t2

默where領(lǐng)

stdn蹦ame=落'李四'毀尊饑8煮

unio荒n

all若育

9霉蘭SELEC吩T切'張三'蠻as墻

stdn洋ame,s恩tdnam頌e=泳'化學(xué)'刷,

化學(xué)

旗as償

resu耀lt

fr均om

#s劇tuden拳t2

沒where貧

stdn逆ame=蓬'張三'扶10揉蘇union就

all孔11廟讓SELEC宏T山'張三'被as扔

stdn冰ame,s菠tdnam徹e=綁'數(shù)學(xué)'涌,

數(shù)學(xué)

壓as鏟

resu核lt

fr急om

#s用tuden榆t2

班where且

stdn曾ame=隆'張三'屢12保托union訓(xùn)

all持13疤盆SELEC乎T拋'張三'宴as疊

stdn血ame,s舉tdnam便e=勿'物理'票,

物理

選as鏡

resu侵lt

fr越om

#s界tuden遍t2

做where掌

stdn密ame=脖'張三'群14貝震union艱

all幫15軌蹦SELEC眠T觸'張三'傳as糟

stdn侮ame,s旁tdnam趕e=騾'語文'創(chuàng),

語文

訓(xùn)as言

resu繭lt

fr簡om

#s挎tuden選t2

墾where月

stdn良ame=士'張三'

重構(gòu)到:代碼看

1剪災(zāi)decla捎re

@s鉆ql2

v棉archa嬸r(輪4000莊)抓

2姥姨擔set陸

@sql肆2

=

憲''匆拜

3粗爬SELEC許T

@sq撲l2=@s魯ql2+

4弱怎'SELE樣CT'''訴+stdn央ame+攝'''as慣

stdn懷ame,s賀tdnam繩e=''化摘學(xué)'',

府化學(xué)

as遠

resu暗lt

fr勝om

#s執(zhí)tuden貪t2

wh苦ere

s統(tǒng)tdnam鐵e='''浸+stdn桌ame+站'''杯

5杯每union領(lǐng)

all裝

6死鳴SELEC索T炕'''+s夾tdnam侵e+'''拼as圣

stdn嫁ame,s當tdnam繼e=粒''然數(shù)學(xué)扶''剛,

數(shù)學(xué)

稻as疾

resu池lt

fr遺om

#s禽tuden規(guī)t2

遣where蓋

stdn葡ame=豎'''+s篇tdnam別e+'''刑

7賄秋union撓

all綢

8烈壺SELEC俗T躍'''+s銜tdnam眉e+'''桐as川

stdn票ame,s魯tdnam干e=擴''議物理少''鹽,

物理

纏as笛

resu吵lt

fr善om

#s聯(lián)tuden豐t2

押where爐

stdn脊ame=去'''+s綱tdnam暴e+'''假

9獨吐union慢

all縫10妥廈SELEC斯T劑'''+s刑tdnam碗e+'''戒as皆

stdn躺ame,s街tdnam尖e=停''彎語文銳''丘,

語文

孤as教

resu綢lt

fr皂om

#s祝tuden單t2

累where費

stdn物ame=蹄'''+s倘tdnam撿e+'''裹

unio叉n

all誤童'竄11襖獎from

膏(SELE收CT

st欄dname禿

FROM劇

#stu辯dent2最)

杜as賤

a鹽12掘爬SELEC秀T

@sq畜l2

=

盯LEFT(蹄@sql2鄰,LEN(喪@sql2霜)

-

賤10承)她13鞠更PRINT浩(@sql輩2)嫂14下聾exec(革@sql2狐)惜如果要求不毛能出現(xiàn)

旬化學(xué)

數(shù)暖學(xué)

物理滅語文這絮樣的關(guān)鍵字賠,那么可以猾這樣寫:代碼薄

1布百selec樓t

[na館me]

i佩nto

#乏tmpCl箱oumns野

2亂紅from

課tempd濤b.dbo濃.sysc榨olumn耽s宋

3僚丑where顧

id=o鄉(xiāng)bject傍_id(終'temp敢db.db碼o.#st蛾udent睛2'誕)追

4節(jié)純and

[賤name]柏<>四'stdn杏ame'知

5腰班selec憑t

*

某from

視#tmpC圖loumn灑s獵

6累漲

7廚扭decla箏re

@s倘trSql彎

nvar醒char(誦800袋)截

8紀城selec云t

@st參rSql=討''魯

9牽撥selec辰t

@st藏rSql=摘@strS抱ql+掛'unio緒n

all毫'收+鎖char滔(錢10紡)+敲char專(愚13朝)+摟10擦梳簽尊雞證'sele盲ct

[s森tdnam姜e],''警'包+[nam禾e]+供'''

a飯s

[科目計],['餡+[nam譯e]+嬌']'喚+缸char艱(援10愿)+輔char革(臘13希)+播11信毒防宣奶喘'from命

[#st罩udent陽2]'航+敞char配(單10謀)+扶char描(紹13兼)胳12殺姨from

筑#tmpC刮loumn

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論