天天看點

計算字段

存在資料庫系統中的資料的預設展現方式不一定完全符合應用的要求,比如:

1,資料庫系統中姓名、工号是單獨存儲在兩個字段的,但是在顯示的時候想顯示成“姓名+工号”的形式。

2,資料庫系統中金額的顯示格式是普通的數字顯示方式(比如668186.99),但是顯示的時候想以千分位的形式顯示(比如668,186.99)。

3,資料庫系統中基本工資、獎金是單獨存儲在兩個字段的,但是希望顯示員工的工資總額。

4,要檢索工資總額的80%超過5000元的員工資訊。

5,要更新員工工号,需要将所有員工的工号前增加兩位0。

所有這些功能都不能通過簡單的sql語句來完成的,因為需要的資料不是資料表中本來就有的,必須經過一定的計算、轉換或者格式化,這種情況下我們可以在宿主語言中通過編寫代碼的方式來進行這些計算、轉換或者格式化的工作,但是可以想象當資料量比較大的時候這樣處理的速度是非常慢的。計算字段是資料庫系統提供的對資料進行計算、轉換或者格式化的功能,由于是在資料庫系統内部進行的這些工作,而且資料庫系統都這些工作進行了優化,是以其處理效率比在宿主語言中通過編寫代碼的方式進行處理要高效的多。本節将介紹計算字段的基本使用以及在select、update、delete等語句中的應用。

常量字段

軟體協會要求各個公司提供所有員工的資料資訊,其中包括公司名稱、注冊資本、員工姓名、年齡、所在子公司,而且出于特殊考慮,要求每個員工都列出這些資料資訊。對于單個公司而言,公司名稱、注冊資本這兩部分資訊不是能從現有的t_employee,但是它們是确定的值,是以我們編寫下面的sql語句:

這裡的"cownew集團"和918000000并不是一個實際的存在的列,但是在查詢出來的資料中它們看起來是一個實際存在的字段,這樣的字段被稱為“常量字段”(也稱為“常量值”),它們完全可以被看成一個值确定的字段,比如可以為常量字段指定别名,執行下面的sql語句:

字段間計算

人力資源部要求統計全體員工的工資指數,工資指數的計算公式為年齡與工資的乘積,這就需要計算将fage和fsalary的乘積做為一個工資指數列展現到檢索結果中,執行下面的sql語句:

同樣,這裡的fage * fsalary并不是一個實際的存在的列,但是在查詢出來的資料中它們看起來是一個實際存在的字段,它們完全可以被看成一個普通字段,比如可以為此字段指定别名,執行下面的sql語句:

前面提到常量字段完全可以當作普通字段來看待,那麼普通字段也可以和常量字段進行計算,甚至常量字段之間也可以進行計算。比如人力資源部要求統計每個員工的工資幸福指數,工資幸福指數的計算公式為工資/(年齡-21),而且要求在每行資料前添加一列,這列

的值等于125與521的和。我們編寫下面的sql:

計算字段也可以在where語句等子句或者update、delete中使用。比如下面的sql用來檢索所有資幸福指數大于1000的員工資訊:

[ 尐魚兒的qq群:726994578 ] --- [ https://github.com/godmaybelieve ]