


摘 ?要:智慧旅商平臺(tái)為師生提供校園資訊、信息查詢(xún)、在線(xiàn)辦公、生活服務(wù)等校園全方位信息服務(wù)。本文以“智慧旅商移動(dòng)APP”為信息檢索的平臺(tái),圍繞“分組”展開(kāi)數(shù)據(jù)查詢(xún),以解決宿舍的用電查詢(xún)問(wèn)題。在編寫(xiě)數(shù)據(jù)查詢(xún)的T-SQL語(yǔ)句過(guò)程中,對(duì)“HAVING”子句的條件篩選和“WHERE”子句的條件篩選進(jìn)行比較,總結(jié)出這兩種子句的條件篩選所使用的環(huán)境。
關(guān)鍵詞:管理系統(tǒng);信息檢索;數(shù)據(jù)查詢(xún)
中圖分類(lèi)號(hào):TP315 ? ? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2019)17-0012-03
Abstract:The Intelligent Travel Business Platform provides all-round campus information services for teachers and students,such as campus information,information inquiry,online office,life services and so on. This paper takes “smart traveler mobile APP” as the information retrieval platform,launches data query around “grouping” to solve dormitory power query. In the process of writing T-SQL statement for data query,comparing the conditional filter of “HAVING” clause with the conditional filter of “WHERE” clause,get the summary of working environment for both of conditional filter clause.
Keywords:management system;information retrieval;data query
0 ?引 ?言
智慧旅商平臺(tái)為師生提供校園資訊、信息查詢(xún)、在線(xiàn)辦公、生活服務(wù)等校園全方位信息服務(wù)。本文以“智慧旅商移動(dòng)APP”為信息檢索的平臺(tái),針對(duì)智慧旅商平臺(tái)中的“用電查詢(xún)”模塊,根據(jù)前臺(tái)的人機(jī)界面和后臺(tái)的數(shù)據(jù)表結(jié)構(gòu),圍繞“分組”展開(kāi)數(shù)據(jù)查詢(xún),寫(xiě)出分組的T-SQL語(yǔ)句。在編寫(xiě)數(shù)據(jù)查詢(xún)的T-SQL語(yǔ)句過(guò)程中,對(duì)T-SQL語(yǔ)句中的HAVING子句的條件篩選和WHERE子句的條件篩選進(jìn)行比較,總結(jié)出這兩種子句的區(qū)別。作為計(jì)算機(jī)編程人員,面對(duì)程序,需要進(jìn)行一次次的試錯(cuò)、糾錯(cuò)、歸納總結(jié),不斷完善界面中的功能。
1 ?智慧旅商平臺(tái)簡(jiǎn)介
智慧旅商是常州旅游商貿(mào)高等職業(yè)技術(shù)學(xué)校定制開(kāi)發(fā)的校園應(yīng)用APP,其升級(jí)了教育教學(xué)管理信息化水平,打造全終端師生互動(dòng)渠道,充分適應(yīng)網(wǎng)絡(luò)信息化趨勢(shì)下師生行為方式、學(xué)習(xí)方式、生活方式的變化,拓寬了師生互動(dòng)的渠道,增強(qiáng)了師生互動(dòng)有效性。
“智慧旅商移動(dòng)APP”目前整合了校園網(wǎng)站的相關(guān)內(nèi)容,集成了OA移動(dòng)辦公、一卡通在線(xiàn)查詢(xún)、工資查詢(xún)、場(chǎng)地預(yù)約、校內(nèi)黃頁(yè)、旅商社團(tuán)、圖書(shū)查詢(xún)等功能,后期將增加教務(wù)學(xué)工模塊、不僅可以實(shí)時(shí)查詢(xún)教務(wù)學(xué)工信息,還可以通過(guò)“移動(dòng)課堂”功能,以課堂為單位實(shí)現(xiàn)教師與學(xué)生的雙向互動(dòng),此外,學(xué)生還可以在“學(xué)業(yè)預(yù)警”功能中了解掌握自己的學(xué)業(yè)研讀情況。而“消息推送”功能更是可以實(shí)現(xiàn)信息在師生之間“直達(dá)”推送,減少了傳統(tǒng)信息發(fā)布模式中信息量減損的問(wèn)題。
2 ?通過(guò)分組實(shí)現(xiàn)數(shù)據(jù)查詢(xún)
本文以“智慧旅商移動(dòng)APP”為信息檢索的平臺(tái),通過(guò)聚合函數(shù)[1]COUNT()統(tǒng)計(jì)全校住宿生人數(shù),聚合函數(shù)SUM()統(tǒng)計(jì)宿舍的用電總量。常用的聚合函數(shù)如表1所示。
我們以“智慧旅商移動(dòng)APP”中用電查詢(xún)的界面為例,如圖1所示。
在后臺(tái)數(shù)據(jù)庫(kù)中,房間用電情況數(shù)據(jù)表結(jié)構(gòu)如表2所示。
我們來(lái)探究如何實(shí)現(xiàn)查詢(xún)每個(gè)房間的用電總量和電費(fèi)總額。我們可以通過(guò)上面的聚合函數(shù)以及數(shù)據(jù)查詢(xún)中的WHERE子句來(lái)實(shí)現(xiàn)。查詢(xún)語(yǔ)句如下:
SELECTSUM(yongdianliang)AS'用電總量',SUM(yong dianfei)AS'電費(fèi)總額'
FROMfangjianyongdian_info
WHEREfangjian='15101'
SELECTSUM(yongdianliang)AS'用電總量',SUM(yong dianfei)AS'電費(fèi)總額'
FROMfangjianyongdian_info
WHEREfangjian='15102'
SELECTSUM(yongdianliang)AS'用電總量’,SUM(yong dianfei)AS'電費(fèi)總額'
FROMfangjianyongdian_info
WHEREfangjian='19210'
……
依次類(lèi)推,能夠查詢(xún)出每個(gè)房間的用電總量和電費(fèi)總額。其實(shí)我們可以通過(guò)更加便捷有效的方式去實(shí)現(xiàn),那就是分組[2]。通過(guò)分組實(shí)現(xiàn),查詢(xún)語(yǔ)句如下:
SELECTfangjian AS'房間',SUM(yongdianliang)AS '用電總量',SUM(yongdianfei)AS'電費(fèi)總額'
FROMfangjianyongdian_info
GROUPBYfangjian
查詢(xún)的結(jié)果如圖2所示。
對(duì)比上述的兩種方式(WHERE子句和分組GROUP BY子句)來(lái)實(shí)現(xiàn)查詢(xún)每個(gè)房間的用電總量和用電總額,我們可以發(fā)現(xiàn),使用分組GROUP BY子句[3]的好處是縮短代碼,提高代碼的執(zhí)行效率,使查詢(xún)速度更快。使用分組,查詢(xún)結(jié)果更加清晰、一目了然。
在使用分組實(shí)現(xiàn)數(shù)據(jù)查詢(xún)的時(shí)候,通常會(huì)出現(xiàn)以下兩種錯(cuò)誤:
第一種:
SELECT fangjian,shijian,SUM(yongdianliang)AS'用電總量',SUM(yongdianfei)AS’電費(fèi)總額'
FROMfangjianyongdian_info
GROUPBYfangjian
錯(cuò)誤消息:消息8120,級(jí)別16,狀態(tài)1,第1行
選擇列表中的列'fangjianyongdian_info.shijian'無(wú)效,因?yàn)樵摿袥](méi)有包含在聚合函數(shù)或GROUP BY子句中。
解決方案:因?yàn)閟hijian不是分組列,分組列是fangjian。去掉shijian列。
正確的T-SQL語(yǔ)句:
SELECTfangjian,SUM(yongdianliang)AS'用電總量',SUM(yongdianfei)AS'電費(fèi)總額'
FROMfangjianyongdian_info
GROUPBYfangjian
結(jié)論1:當(dāng)使用GROUP BY子句進(jìn)行分組時(shí),SELECT 語(yǔ)句的列表中所選擇的列一定是GROUP BY子句后面的分組依據(jù)列或聚合函數(shù)。
第二種:
SELECTfangjianAS'房間',SUM(yongdianliang)AS'用電總量',SUM(yongdianfei)AS'電費(fèi)總額’
FROMfangjianyongdian_info
GROUPBYfangjian
WHERE fangjian='15101'
錯(cuò)誤消息:消息156,級(jí)別15,狀態(tài)1,第4行
關(guān)鍵字'WHERE'附件有語(yǔ)法錯(cuò)誤。
解決方案:我們使用分組GROUP BY子句,對(duì)分組后面的列進(jìn)行條件篩選,我們只能用HAVING子句。如果想用WHERE子句,GROUP BY子句只能放在WHERE子句的后面。
正確的T-SQL語(yǔ)句:
SELECTfangjianAS'房間',SUM(yongdianliang)AS'用電總量',SUM(yongdianfei)AS'電費(fèi)總額'
FROMfangjianyongdian_info
GROUPBYfangjian
HAVING fangjian='15101'
或者:
SELECTfangjianAS'房間',SUM(yongdianliang)AS'用電總量',SUM(yongdianfei)AS'電費(fèi)總額'
FROMfangjianyongdian_info
WHERE fangjian='15101'
GROUPBYfangjian
結(jié)論2:對(duì)分組后的結(jié)果進(jìn)行篩選,我們用HAVING。當(dāng)SELECT語(yǔ)句中包含有WHERE子句的時(shí)候,GROUP BY子句只能放在WHERE子句的后面。
3 ?HAVING子句條件篩選和WHERE子句的條件篩選的比較
本論文中主要圍繞通過(guò)分組來(lái)實(shí)現(xiàn)查詢(xún)每個(gè)房間的用電總量和電費(fèi)總額,在這個(gè)過(guò)程中我們發(fā)現(xiàn)對(duì)分組后的結(jié)果進(jìn)行篩選,可以用HAVING子句篩選出15號(hào)樓101房間的用電總量、電費(fèi)總額,也可以通過(guò)WHERE子句去實(shí)現(xiàn)15號(hào)樓101房間的用電總量、電費(fèi)總額的查詢(xún)。HAVING子句條件篩選和WHERE子句的條件篩選區(qū)別[3]主要表現(xiàn)在以下幾點(diǎn):
(1)HAVING和WHERE都是用來(lái)進(jìn)行條件篩選[4]的。WHERE子句的作用是在對(duì)查詢(xún)結(jié)果進(jìn)行分組前,將不符合WHERE條件的行去掉,即在分組之前過(guò)濾數(shù)據(jù),條件中不能包含聚組函數(shù),使用WHERE條件顯示特定的行。HAVING子句的作用是篩選滿(mǎn)足條件的組,即在分組之后過(guò)濾數(shù)據(jù),條件中經(jīng)常包含聚組函數(shù),可以使用HAVING條件顯示特定的組,也可以使用多個(gè)分組標(biāo)準(zhǔn)進(jìn)行分組。
(2)WHERE不能放在GROUP BY后面,HAVING是跟GROUP BY連在一起用的,放在GROUP BY后面,此時(shí)的作用相當(dāng)于WHERE,WHERE后面的條件中不能有聚集函數(shù),比如SUM(),AVG()等,而HAVING可以。
4 ?結(jié) ?論
本文以“智慧旅商移動(dòng)APP”為信息檢索的平臺(tái),圍繞“分組”展開(kāi)數(shù)據(jù)查詢(xún),以解決智慧旅商中的宿舍用電查詢(xún)問(wèn)題。在探究的過(guò)程中,我們分析出HAVING子句條件篩選和WHERE子句的條件篩選的不同,主要是WHERE不能放在GROUP BY后面,HAVING是跟GROUP BY連在一起用的,放在GROUP BY后面,此時(shí)的作用相當(dāng)于WHERE。WHERE后面的條件中不能有聚集函數(shù),比如SUM(),AVG()等,而HAVING可以。WHERE和HAVING都是對(duì)查詢(xún)結(jié)果的一種篩選,都是設(shè)定條件的語(yǔ)句。
作為計(jì)算機(jī)編程人員,對(duì)于人機(jī)界面,我們需要去分析人機(jī)界面實(shí)現(xiàn)的原理,用相應(yīng)的編程語(yǔ)言去實(shí)現(xiàn)人機(jī)界面的功能。
參考文獻(xiàn):
[1] 張蒲生.數(shù)據(jù)庫(kù)應(yīng)用技術(shù)SQL Server2005基礎(chǔ)篇 [M].北京:機(jī)械工業(yè)出版社,2008.
[2] 陳永強(qiáng).SQL Server數(shù)據(jù)庫(kù)企業(yè)應(yīng)用系統(tǒng)開(kāi)發(fā) [M].北京:清華大學(xué)出版社,2005.
[3] 劉志成,寧云智.數(shù)據(jù)庫(kù)系統(tǒng)原理與應(yīng)用 [M].北京:機(jī)械工業(yè)出版,2010.
[4] 王永樂(lè).SQL Server2008數(shù)據(jù)庫(kù)項(xiàng)目教程 [M].北京:郵電大學(xué)出版社,2012.
作者簡(jiǎn)介:蘇玉燕(1989-),女,漢族,江蘇常州人,教師,助講,碩士,研究方向:計(jì)算機(jī)。