999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

SQL SERVER中表變量之妙用*

2016-07-21 01:27:54彥,未
關(guān)鍵詞:數(shù)據(jù)庫(kù)

莊 彥,未 培

(安徽工商職業(yè)學(xué)院 電子信息系,安徽 合肥 231131)

?

SQL SERVER中表變量之妙用*

莊彥,未培

(安徽工商職業(yè)學(xué)院 電子信息系,安徽 合肥 231131)

摘要:Table是SQL SERVER中一種特殊的數(shù)據(jù)類型,其生命周期短,具有表特性,在解決復(fù)雜的實(shí)際問題時(shí)有著非常重要的作用.該文以企業(yè)工資管理系統(tǒng)的開發(fā)為切入點(diǎn),簡(jiǎn)單介紹了表變量的概念、特點(diǎn),重點(diǎn)介紹了表變量在員工月工資核算模塊中的應(yīng)用.本系統(tǒng)經(jīng)過測(cè)試已經(jīng)上線運(yùn)行,經(jīng)實(shí)踐證明,在存儲(chǔ)數(shù)據(jù)量不是特別大的情況下,合理利用表變量可以有效的提高系統(tǒng)執(zhí)行效率.

關(guān)鍵詞:表變量;數(shù)據(jù)庫(kù);系統(tǒng)開發(fā)

社會(huì)信息化的發(fā)展已經(jīng)使我們現(xiàn)在的生活處于大數(shù)據(jù)時(shí)代,我們?cè)谏钪兴@取到的各種信息來自于計(jì)算機(jī)對(duì)大量數(shù)據(jù)的處理,而計(jì)算機(jī)對(duì)數(shù)據(jù)處理的效率影響著信息的獲取與更新.目前數(shù)據(jù)處理的方式有多種,對(duì)于常用的中小型信息管理系統(tǒng),數(shù)據(jù)的存儲(chǔ)和處理使用SQL SERVER數(shù)據(jù)庫(kù)的比較多.但SQL SERVER數(shù)據(jù)庫(kù)也存在著吞吐量、并發(fā)控制、執(zhí)行效率等問題,表變量是SQL SERVER中一種特殊的數(shù)據(jù)類型,它不寫入磁盤,執(zhí)行速度非常快,應(yīng)用完成后不需要?jiǎng)h除,在處理復(fù)雜問題時(shí)能起到臨時(shí)保存中間數(shù)據(jù)的作用,適合應(yīng)用在數(shù)據(jù)庫(kù)的自定義函數(shù)、存儲(chǔ)過程和觸發(fā)器中.但目前在實(shí)際的系統(tǒng)開發(fā)中,很多人忽視了表變量的作用,應(yīng)用表變量解決實(shí)際問題的程序員或系統(tǒng)開發(fā)人員非常少,大家遇到具有表結(jié)構(gòu)的中間數(shù)據(jù)存儲(chǔ),首先想到的是臨時(shí)表[1].表變量和臨時(shí)表各有優(yōu)缺點(diǎn),臨時(shí)表在使用時(shí)寫入磁盤,執(zhí)行效率相對(duì)表變量要低一些,在普通數(shù)據(jù)量的情況下,使用表變量更合適.[2]

1表變量

1.1表變量介紹

在SQL SERVER數(shù)據(jù)庫(kù)中有一種特殊的數(shù)據(jù)類型叫Table,依據(jù)Table數(shù)據(jù)類型定義的變量稱作為表變量.表變量不同于一般數(shù)據(jù)類型的變量,一般數(shù)據(jù)類型的變量一次性只能存儲(chǔ)一個(gè)值,而表變量能像普通表格的樣式存儲(chǔ)表中的字段和記錄,表變量的賦值通過Insert into語句進(jìn)行,被賦值過的表變量可以像普通表格一樣被增、刪、改、查,使用起來非常方便.

1.2表變量定義

在SQL SERVER數(shù)據(jù)庫(kù)中表變量定義格式如下:

DECLARE @表名 TABLE(字段名1 字段描述,字段名2 字段描述,字段名3 字段描述……)

下面的多條SQL語句是對(duì)表變量的定義及增、刪、改、查的示例:

use工資管理數(shù)據(jù)庫(kù)

declare @emp table(eno char(10),ename varchar(20),sex char(2))--定義表變量@emp

insertinto@empselect工號(hào),姓名,性別from職工基本信息表--對(duì)表變量@emp執(zhí)行追加記錄操作

update@emp

set sex='女'

whereeno='2015101'--對(duì)表變量@emp執(zhí)行更新操作

delete@emp

whereeno='2015102'--對(duì)表變量@emp執(zhí)行刪除操作

select*from@emp--對(duì)表變量@emp執(zhí)行查詢操作

1.3表變量的特點(diǎn)

很多人在使用表變量時(shí),容易把表變量和臨時(shí)表混淆,其實(shí)表變量和臨時(shí)表不同,在使用時(shí)一定要先弄清楚表變量的特點(diǎn).首先表變量占據(jù)的內(nèi)存非常小,并且表變量只在定義它的批中有效,當(dāng)定義表變量的批處理語句結(jié)束后,表變量會(huì)被自動(dòng)清除;其次表變量的事務(wù)只在數(shù)據(jù)更新時(shí)生效,產(chǎn)生的日志和鎖都比較少;另外表變量作用域小,不是數(shù)據(jù)庫(kù)中的持久部分,所以表變量不受事務(wù)回滾的影響.[3-4]

2表變量在數(shù)據(jù)庫(kù)中的應(yīng)用

下面以企業(yè)工資管理系統(tǒng)項(xiàng)目為例,介紹表變量在系統(tǒng)開發(fā)中的應(yīng)用.

2.1項(xiàng)目介紹

企業(yè)工資管理系統(tǒng)是目前市場(chǎng)上應(yīng)用比較成熟的系統(tǒng),由于各企業(yè)的性能、規(guī)模、管理體系等不同,針對(duì)不同企業(yè)應(yīng)用的工資管理系統(tǒng)還在不斷地被開發(fā).本文引用的工資管理系統(tǒng)適用于中小企業(yè).員工的月工資部分包括不同工種的基礎(chǔ)性工資,以及每月員工受到的獎(jiǎng)勵(lì)和懲罰.本系統(tǒng)的用戶有管理員、財(cái)務(wù)工作人員及普通員工,管理員主要負(fù)責(zé)用戶基本信息及用戶權(quán)限管理,普通用戶可以通過系統(tǒng)管理個(gè)人信息及進(jìn)行工資查詢,財(cái)務(wù)工作人員用戶負(fù)責(zé)員工日常獎(jiǎng)懲情況記錄及員工月工資核算等.系統(tǒng)功能模塊圖如圖1所示.

圖1 企業(yè)工資管理系統(tǒng)功能模塊圖

2.2后臺(tái)數(shù)據(jù)庫(kù)

對(duì)于信息管理系統(tǒng)來說,數(shù)據(jù)處理主要集中在后臺(tái)數(shù)據(jù)庫(kù),適用于中小企業(yè)的工資管理系統(tǒng),后臺(tái)數(shù)據(jù)庫(kù)采用SQL SERVER開發(fā)較多.根據(jù)前文的分析可知,本系統(tǒng)后臺(tái)數(shù)據(jù)庫(kù)中需要員工、部門、基礎(chǔ)工資標(biāo)準(zhǔn)、獎(jiǎng)懲制度等實(shí)體信息的內(nèi)容,本系統(tǒng)后臺(tái)數(shù)據(jù)中的表有:

部門表(部門編號(hào),部門名稱,部門電話);

職工基本信息表(工號(hào),姓名,性別,婚否,參加工作時(shí)間,部門編號(hào),工種編號(hào),電話,家庭住址);

基礎(chǔ)工資級(jí)別表(工種編號(hào),工種名稱,基本工資,津貼,午餐補(bǔ)助,交通補(bǔ)貼,通訊補(bǔ)貼,公積金);

獎(jiǎng)懲制度表(獎(jiǎng)懲類型編號(hào),獎(jiǎng)懲名稱,金額);

獎(jiǎng)懲情況記錄表(序號(hào),工號(hào),獎(jiǎng)懲類型編號(hào),記錄人員,記錄日期);

各表之間的關(guān)系如下圖2所示.

圖2 企業(yè)工資管理系統(tǒng)后臺(tái)數(shù)據(jù)庫(kù)表之間的關(guān)系圖

2.3表變量應(yīng)用

在信息管理系統(tǒng)中,需要實(shí)現(xiàn)的功能往往比較復(fù)雜,通常通過單獨(dú)的一條SQL語句是沒有辦法實(shí)現(xiàn)的.但我們又不可能把所有的數(shù)據(jù)都存儲(chǔ)在數(shù)據(jù)庫(kù)中,在數(shù)據(jù)庫(kù)中數(shù)據(jù)庫(kù)存儲(chǔ)具有結(jié)構(gòu)化,數(shù)據(jù)的冗余度要降到最低,所以當(dāng)我們需要實(shí)現(xiàn)復(fù)雜功能時(shí),可以借助表變量暫時(shí)存儲(chǔ)計(jì)算過程的中間數(shù)據(jù),當(dāng)計(jì)算結(jié)束,表變量自動(dòng)清除,這樣既不增加系統(tǒng)存儲(chǔ)數(shù)據(jù)的負(fù)擔(dān),又能利用這些中間數(shù)據(jù)實(shí)現(xiàn)復(fù)雜的應(yīng)用功能.

在企業(yè)工資管理系統(tǒng)中,核算員工月工資應(yīng)該是系統(tǒng)的核心,但通過上文系統(tǒng)分析知道,員工的月工資中包含基礎(chǔ)工資、獎(jiǎng)金、罰金等多部分內(nèi)容,要核算出員工的月工資需要分多步驟進(jìn)行,同時(shí)每個(gè)步驟產(chǎn)生的中間結(jié)果可以使用表變量進(jìn)行存儲(chǔ).下面以核算2015年11月公司員工工資為例,介紹表變量的應(yīng)用.

步驟一:通過表中現(xiàn)有的數(shù)據(jù),根據(jù)每個(gè)員工的工種,計(jì)算出每個(gè)員工的基礎(chǔ)性工資,并保存到表變量“@應(yīng)發(fā)工資表”中,以備在后面計(jì)算實(shí)發(fā)工資使用.

declare @應(yīng)發(fā)工資表 table(工號(hào)char(10),姓名varchar(20),應(yīng)發(fā)工資money)

insert into @應(yīng)發(fā)工資表select 工號(hào),姓名,基本工資+津貼+午餐補(bǔ)助+交通補(bǔ)貼+通訊補(bǔ)貼-公積金 as 應(yīng)發(fā)工資from 職工基本信息表,基礎(chǔ)工資級(jí)別表where職工基本信息表.工種編號(hào)=基礎(chǔ)工資級(jí)別表.工種編號(hào)

步驟二:通過獎(jiǎng)懲制度表和獎(jiǎng)懲情況記錄表,計(jì)算出2015年11月員工的獎(jiǎng)金情況,并保存到表變量“@獎(jiǎng)金情況表”中.由于一名員工一個(gè)月可能會(huì)有多次獎(jiǎng)勵(lì)記錄,也有可能一次獎(jiǎng)金也沒有,在這里需要按員工的工號(hào)進(jìn)行分組,最終每個(gè)員工的獎(jiǎng)金應(yīng)該是在本月多次獎(jiǎng)金之和,另外為了計(jì)算方便,在獎(jiǎng)懲制度表中,所有代表獎(jiǎng)勵(lì)的制度編號(hào)都打“J”開頭,所有代表懲罰的制度編號(hào)都打“F”開頭.

declare @獎(jiǎng)金情況表table(工號(hào)char(10),獎(jiǎng)金money)

insert into @獎(jiǎng)金情況表select 工號(hào),sum(金額) as 獎(jiǎng)金from 獎(jiǎng)懲情況記錄表,獎(jiǎng)懲制度表 where獎(jiǎng)懲情況記錄表.獎(jiǎng)懲類型編號(hào)=獎(jiǎng)懲制度表.獎(jiǎng)懲類型編號(hào)and year(記錄日期)=2015 and month(記錄日期)=11 and left(獎(jiǎng)懲情況表.獎(jiǎng)懲類型編號(hào),1)='J'group by 工號(hào)

步驟三:同理步驟二,計(jì)算出2015年11月員工的罰金情況,并保存到表變量“@罰金情況表”中.

declare @罰金情況表table(工號(hào)char(10),罰金money)

insert into @罰金情況表select 工號(hào), sum(金額) as 罰金from 獎(jiǎng)懲情況記錄表,獎(jiǎng)懲制度表 where獎(jiǎng)懲情況記錄表.獎(jiǎng)懲類型編號(hào)=獎(jiǎng)懲制度表.獎(jiǎng)懲類型編號(hào)and year(記錄日期)=2015 and month(記錄日期)=11 and left(獎(jiǎng)懲情況表.獎(jiǎng)懲類型編號(hào),1)='F'group by 工號(hào)

在上面第二步和第三步中計(jì)算出的獎(jiǎng)金情況和罰金情況還是不能應(yīng)用在計(jì)算實(shí)發(fā)工資中,因?yàn)樯厦鎯刹襟E計(jì)算的結(jié)果中只包含在該月獲得過獎(jiǎng)金或者受到處罰的那些員工的信息,對(duì)于大部分員工,如果在該月沒有獲得過獎(jiǎng)勵(lì)或受到懲罰,他們的信息就不會(huì)出現(xiàn)在上面兩步的結(jié)果中.在最后計(jì)算實(shí)發(fā)工資時(shí),我們需要利用“應(yīng)發(fā)工資+本月獎(jiǎng)金-本月罰金”公式進(jìn)行計(jì)算,那些沒有獎(jiǎng)金或沒有罰金的員工,獎(jiǎng)金或罰金項(xiàng)就會(huì)被當(dāng)作NULL處理.但在SQL SERVER中,任何數(shù)據(jù)加上或減去NULL,結(jié)果都為NULL,所以利用上面第二步驟和第三步驟的結(jié)果我們還不能計(jì)算出每個(gè)員工的實(shí)發(fā)工資.我們需要把職工基本信息表和上面兩步驟的結(jié)果進(jìn)行左連接,讓所有員工的信息都出現(xiàn)在獎(jiǎng)金或罰金情況表中,有獎(jiǎng)金或罰金的就以實(shí)際金額填充,沒有獎(jiǎng)金或罰金的借助SQL SERVER中 ISNULL函數(shù),將NULL值用0取代掉即可.

步驟四:將職工基本“@獎(jiǎng)金情況表”進(jìn)行左連接,得到每個(gè)員工在2015年11月的獎(jiǎng)金情況,并保存到表變量“@月獎(jiǎng)金匯總表”中.

declare @月獎(jiǎng)金匯總表table(工號(hào)char(10),獎(jiǎng)金小計(jì)money)

insert into @月獎(jiǎng)金匯總表select 職工基本信息表.工號(hào),isnull(獎(jiǎng)金,0) as獎(jiǎng)金小計(jì)

from 職工基本信息表left join @獎(jiǎng)金情況表as jj on 職工基本信息表.工號(hào)=jj.工號(hào)

步驟五:同理步驟四,得到每個(gè)員工在2015年11月的罰金情況,并保存到表變量“@月罰金匯總表”中.

declare @月罰金匯總表table(工號(hào)char(10),罰金小計(jì)money)

insert into @月罰金匯總表select 職工基本信息表.工號(hào),isnull(罰金,0) as罰金小計(jì)

from 職工基本信息表left join @罰金情況表as fj on 職工基本信息表.工號(hào)=fj.工號(hào)

步驟六:利用步驟一、步驟四和步驟五所得到結(jié)果,計(jì)算出2015年11月每個(gè)員工的實(shí)發(fā)工資.

select zf.工號(hào),姓名,應(yīng)發(fā)工資+獎(jiǎng)金小計(jì)-罰金小計(jì)from @應(yīng)發(fā)工資表 aszf ,@月獎(jiǎng)金匯總表 as yjj ,@月罰金匯總表 as yfjwhere zf.工號(hào)=yjj.工號(hào)and zf.工號(hào)=yfj.工號(hào)

通過上面六個(gè)步驟即可計(jì)算出企業(yè)員工2015年11的實(shí)發(fā)工資情況,在實(shí)際的工資管理系統(tǒng)開發(fā)中,是把上面的六個(gè)步驟寫成存儲(chǔ)過程或多語句表值自定義函數(shù)供前臺(tái)調(diào)用,并且不是將時(shí)間具體到固定的年和月,而是把年份和月份設(shè)置成參數(shù),前臺(tái)在調(diào)用時(shí)通過參數(shù)傳遞可以計(jì)算出任意時(shí)間企業(yè)員工的工資情況.[5-6]

3小結(jié)

本文介紹了在工資管理系統(tǒng)中,通過表變量的應(yīng)用有效解決了員工月工資核算的問題.本系統(tǒng)后臺(tái)數(shù)據(jù)庫(kù)的數(shù)據(jù)量不是很大,但月工資核算過程復(fù)雜,其中有很多中間數(shù)據(jù)產(chǎn)生,將這些中間數(shù)據(jù)保存在表變量中,既不會(huì)增加系統(tǒng)負(fù)擔(dān),系統(tǒng)執(zhí)行速度還非常快,系統(tǒng)穩(wěn)定性也很好.本人在數(shù)據(jù)庫(kù)的教學(xué)實(shí)踐中,多次應(yīng)用表變量解決實(shí)際應(yīng)用問題,比如在學(xué)生成績(jī)管理系統(tǒng)中,根據(jù)相關(guān)規(guī)定利用表變量解決學(xué)生獎(jiǎng)學(xué)金的評(píng)定問題、在教師測(cè)評(píng)系統(tǒng)中,利用表變量對(duì)教師的教學(xué)測(cè)評(píng)分?jǐn)?shù)進(jìn)行核算及排名等.由此可見表變量在關(guān)系型數(shù)據(jù)庫(kù)中有一定的通用性,故本系統(tǒng)對(duì)表變量的應(yīng)用有一定的推廣價(jià)值.表變量在數(shù)據(jù)量不是特別大的情況下應(yīng)用非常方便,但表變量在應(yīng)用過程中也有一定的局限性,比如不能將表變量直接賦值給另一個(gè)變量,不能在表變量的基礎(chǔ)上再進(jìn)一步建立索引或修改其結(jié)構(gòu)等.所以大家在使用表變量時(shí)需綜合考慮,在合適的環(huán)境下充分發(fā)揮表變量的作用.

參考文獻(xiàn):

[1]未培.存儲(chǔ)過程在企業(yè)工資管理系統(tǒng)中的設(shè)計(jì)與實(shí)現(xiàn)[J].赤峰學(xué)院學(xué)報(bào),2013(24).

[2]亓文娟.對(duì)Sql Server存儲(chǔ)過程存儲(chǔ)過程的研究與應(yīng)用[J].廊坊師范學(xué)院學(xué)報(bào),2010(12).

[3]黃龍軍.應(yīng)用存儲(chǔ)過程實(shí)現(xiàn)數(shù)據(jù)分頁[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012(12).

[4]陳曉珊.Sql Server存儲(chǔ)過程淺析[J].科技信息,2008(7).

[5]趙灼.淺談如何優(yōu)化SQL Server數(shù)據(jù)庫(kù)[J].中國(guó)管理信息化,2014(03).

[6]葉柯.淺談MSSQL Server數(shù)據(jù)庫(kù)查詢優(yōu)化[J].寧波廣播電視大學(xué)學(xué)報(bào),2007(01).

(責(zé)任編輯:王前)

The Effects of Table Variables in SQL SERVER

ZHUANG Yan, WEI Pei

(ElectronInformationDepartment,AnhuiBusinessVocationalCollege,Hefei,Anhui231131,China)

Abstract:Table is a special kind of data type in SQL Server, and has the characteristic of short life cycle and table.Table variables can play an important role in solving complex problems if the flexible use of good. This paper takes the enterprise wage management system as an example to introduce the concept and characteristics of the table variable, and mainly introduces the application of the table variable in the employee's monthly salary calculation module. The enterprise wage management system has been running. Proved by practice, table variables can improve the efficiency of system execution if the amount of data is not particularly large.

Key words:Table variables; DB; System development

DOI:10.13877/j.cnki.cn22-1284.2016.06.019

*收稿日期:2015-12-01

基金項(xiàng)目:2015安徽高校自然科學(xué)研究重點(diǎn)項(xiàng)目“基于分級(jí)特征值算法的重復(fù)信息過濾研究”(KJ2015A419);2016年度安徽省高校優(yōu)秀青年人才支持計(jì)劃重點(diǎn)項(xiàng)目(gxyqZD2016436)

作者簡(jiǎn)介:莊彥,女,安徽淮北人,講師.

中圖分類號(hào):TP31

文獻(xiàn)標(biāo)志碼:A

文章編號(hào):1008-7974(2016)03-0059-04

猜你喜歡
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
兩種新的非確定數(shù)據(jù)庫(kù)上的Top-K查詢
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
主站蜘蛛池模板: 91国语视频| 特黄日韩免费一区二区三区| 91精品国产一区| 热re99久久精品国99热| 人妻无码AⅤ中文字| 91福利在线观看视频| 黄片一区二区三区| 亚洲开心婷婷中文字幕| 国产精品久线在线观看| 久久久成年黄色视频| 女人18毛片一级毛片在线 | 又爽又大又光又色的午夜视频| 国产精品人莉莉成在线播放| 日本高清有码人妻| 中文字幕人成乱码熟女免费| 99久久婷婷国产综合精| 91成人在线免费视频| 亚洲成aⅴ人在线观看| 天堂av高清一区二区三区| 久久婷婷五月综合97色| 亚洲aaa视频| 午夜精品久久久久久久2023| 91人妻日韩人妻无码专区精品| 中文字幕伦视频| 国产高清在线精品一区二区三区| lhav亚洲精品| 色综合天天操| 国产精品美人久久久久久AV| 亚欧乱色视频网站大全| 免费人欧美成又黄又爽的视频| 欧美精品v| 亚洲日韩高清无码| 成人免费视频一区二区三区| 日韩国产黄色网站| 免费啪啪网址| 亚洲成人播放| 在线免费看黄的网站| 国产无码网站在线观看| 香蕉蕉亚亚洲aav综合| 欧美亚洲网| 一区二区影院| 亚洲欧美色中文字幕| 国内丰满少妇猛烈精品播 | 国产精品自在拍首页视频8 | 国产精品女熟高潮视频| 丁香五月婷婷激情基地| 日本精品影院| 九色最新网址| 国产精品爆乳99久久| 国产偷国产偷在线高清| 91小视频在线播放| 久久夜色精品| 国产一二三区视频| 欧美黑人欧美精品刺激| 精品国产三级在线观看| 亚洲精品在线观看91| 国产黑人在线| 亚洲欧美国产视频| 亚洲天堂免费在线视频| 日本人妻丰满熟妇区| 99视频只有精品| 中文字幕乱妇无码AV在线| 在线观看91精品国产剧情免费| 午夜福利无码一区二区| 国产区免费| 69精品在线观看| 色婷婷在线影院| 日本91视频| 亚洲国产日韩在线成人蜜芽| 狠狠亚洲婷婷综合色香| 一区二区在线视频免费观看| 国产99欧美精品久久精品久久| 国产又粗又爽视频| av一区二区人妻无码| 亚洲欧洲天堂色AV| 免费又爽又刺激高潮网址| 亚洲天堂在线免费| 综合人妻久久一区二区精品| 欧美中出一区二区| 全免费a级毛片免费看不卡| 欧美成人午夜视频| 亚洲精品视频在线观看视频|