前言

上一節(jié)我們結(jié)束了Hash Match Aggregate和Stream Aggregate的講解,本系列我們來(lái)講講關(guān)于SQL Server中的計(jì)算列問(wèn)題,簡(jiǎn)短的內(nèi)容,深入的理解,Always to review the basics。

初探計(jì)算列持久化(Compued Column Persisted)

在SQL Server 2005就引入了計(jì)算列,我們首先稍微看下在msdn關(guān)于計(jì)算列的定義:計(jì)算列由可以使用同一表中的其他列的表達(dá)式計(jì)算得來(lái)。表達(dá)式可以是非計(jì)算列的列名、常量、函數(shù),也可以是用一個(gè)或多個(gè)運(yùn)算符連接的上述元素的任意組合。表達(dá)式不能為子查詢。實(shí)際上就是為了定義一個(gè)列來(lái)對(duì)其他列來(lái)進(jìn)行計(jì)算可以是列名、函數(shù)等,那么它的使用場(chǎng)景是什么呢?下面我們首先來(lái)舉個(gè)例子。當(dāng)需要導(dǎo)出一些值時(shí),此時(shí)這些值需要通過(guò)計(jì)算才能被導(dǎo)出,同時(shí)呢,有一些列還依賴于另外的一列或者更多列,如果一個(gè)列進(jìn)行了更新則其依賴的列必須同步進(jìn)行更新,上述場(chǎng)景通過(guò)對(duì)一個(gè)列或者多個(gè)列進(jìn)行計(jì)算,此時(shí)我們需要定義一個(gè)將一個(gè)列或者多個(gè)列進(jìn)行計(jì)算得到的值的列,這就是計(jì)算列。我們來(lái)看一個(gè)典型的例子,在一個(gè)公司上班的所有員工,在公司內(nèi)部系統(tǒng)中會(huì)存其所有員工的信息,比如員工編號(hào)、出生日期等,如果此時(shí)我們需要導(dǎo)出員工的退休日期呢,假設(shè)在中國(guó)現(xiàn)在男性退休時(shí)間為60年后,此時(shí)我們需要通過(guò)出生日期算出60年后的日期,也就說(shuō)在表中還需要定義一個(gè)退休日期列。下面我們創(chuàng)建表來(lái)看看計(jì)算列。

seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營(yíng)銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營(yíng)銷培訓(xùn)

USE TSQL2012
GO

CREATE TABLE Employee
(
    employeeNumber INT NOT NULL, --員工編號(hào)
    employeeBirth DATETIME NOT NULL, --出生日期
    employeeRetirement AS (DATEADD(YEAR, 60, (employeeBirth)-(1))) PERSISTED --退休日期)

seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營(yíng)銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營(yíng)銷培訓(xùn)

此時(shí)我們看到表中關(guān)于退休日期的設(shè)計(jì),顯示其已經(jīng)是持久化了的

seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營(yíng)銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營(yíng)銷培訓(xùn)

接下來(lái)我們插入測(cè)試數(shù)據(jù)看看

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式