《SQL必知必會(huì)》筆記(MySQL實(shí)現(xiàn))---計(jì)算字段

本文將會(huì)介紹有關(guān)于計(jì)算字段的一些定義和使用方法。

計(jì)算字段

首先舉幾個(gè)例子了解一下在什么場(chǎng)景下可能會(huì)用到計(jì)算字段

  • ?需要顯示公司名,同時(shí)還需要顯示公司的地址,但這兩個(gè)信息儲(chǔ)存在不同的列中。
  • 列數(shù)據(jù)是大小寫混合的,但報(bào)表程序需要把所有數(shù)據(jù)按大寫表示出來。
  • 需要根據(jù)數(shù)據(jù)進(jìn)行諸如總數(shù)、平均數(shù)的計(jì)算。

在上述例子中,數(shù)據(jù)庫(kù)表中的數(shù)據(jù)都不能直接拿給客戶端應(yīng)用使用,這時(shí)就需要對(duì)檢索出的數(shù)據(jù)進(jìn)行轉(zhuǎn)換、計(jì)算或者是格式化,來滿足客戶端應(yīng)用的需求,也就是創(chuàng)建計(jì)算字段。簡(jiǎn)單的說,計(jì)算字段就是對(duì)數(shù)據(jù)庫(kù)原有字段進(jìn)行一些簡(jiǎn)單操作后得出的字段。需要注意的是,計(jì)算字段 并不 實(shí)際存在于數(shù)據(jù)庫(kù)表中,計(jì)算字段是運(yùn)行時(shí)在SELECT語句內(nèi)創(chuàng)建的,并且計(jì)算字段的數(shù)據(jù)與其他列的數(shù)據(jù)返回方式相同。

有許多數(shù)據(jù)的轉(zhuǎn)換和格式化工作都可以在數(shù)據(jù)庫(kù)服務(wù)器中通過SQL語句完成,并且效率要比在客戶端應(yīng)用中完成要高得多。

接下來看使用計(jì)算字段的幾個(gè)實(shí)際方法

拼接字段

Vendors表包含供應(yīng)商名和地址信息。假如要生成一個(gè)供應(yīng)商報(bào)表,需要在格式化的名稱中列出供應(yīng)商的位置,相當(dāng)于是將兩個(gè)字段合并為一個(gè)字段返回,那么需要怎么操作呢?

可以將這兩個(gè)字段拼接起來。根據(jù)使用的DBMS不同,實(shí)現(xiàn)這個(gè)結(jié)果的方法也有所不同,在有些DBMS中,使用特殊的操作符就可以實(shí)現(xiàn),在MySQL中,需要使用 Concat 這個(gè)特殊的函數(shù),下面看一下如何使用這個(gè)函數(shù):

SELECT Concat(vend_name , ' (', vend_country, ')')
FROM Vendors
ORDER BY vend_name;

?先看一下輸出的結(jié)果:


Concat().png

可以看到,輸出的結(jié)果的格式和我們?cè)贑oncat函數(shù)中所寫的格式一致。

通過這個(gè)例子,可以總結(jié)出Concat函數(shù)的參數(shù)的格式,那就是多個(gè)參數(shù)之間用逗號(hào)隔開,同時(shí)自己所添加的內(nèi)容需要用引號(hào)包起來,里面的內(nèi)容由自己定義。SELECT語句將會(huì)返回?Concat函數(shù)所得到的結(jié)果。

?使用別名

通過觀察上一個(gè)例子的輸出結(jié)果,會(huì)發(fā)現(xiàn)輸出結(jié)果的列名是Concat函數(shù)的內(nèi)容,這樣的列名無法在客戶端應(yīng)用中使用。為了解決這個(gè)問題,SQL支持 別列名別名。別名(alias)是一個(gè)字段或者值的替換名。別名用 AS 關(guān)鍵字賦予。下面看一個(gè)例子:

SELECT Concat(vend_name , ' (', vend_country, ')') AS vand_title
FROM Vendors
ORDER BY vend_name;

?下面是?輸出結(jié)果:


AS.png

可以看到,輸出結(jié)果的列名已經(jīng)變成了vend_title,現(xiàn)在任意的客戶端應(yīng)用都可以引用這個(gè)列,就像實(shí)際存在的列一樣。

關(guān)于別名的名字,還有一點(diǎn)需要注意。別名的名字既可以是一個(gè)單詞,也可以是一個(gè)字符串。雖然使用字符串作為別名的名字有較高的可讀性,但是可能會(huì)給客戶端應(yīng)用帶來一些無法預(yù)料的問題,所以別名的名字最好是使用一個(gè)最具代表性的單詞。

執(zhí)行算數(shù)計(jì)算

計(jì)算字段的另一個(gè)常見用途是對(duì)檢索出的數(shù)據(jù)進(jìn)行算術(shù)計(jì)算,比如下面這個(gè)例子,這個(gè)例子將會(huì)對(duì)訂單中每項(xiàng)物品進(jìn)行價(jià)格匯總:

SELECT prod_id, quantity, item_price,
       quantity * item_price AS expanded_price
FROM OrderItems
WHERE order_num = 20008;

輸出結(jié)果:


算數(shù)計(jì)算.png

輸出中顯示的expanded_price列是一個(gè)計(jì)算字段,客戶端應(yīng)用可以直接使用這個(gè)列。

SQL支持以下的基本算數(shù)操作符,使用圓括號(hào)可以區(qū)分優(yōu)先級(jí):

  • 加 +
  • 減 -
  • 乘 *
  • 除 /

以上就是本文介紹的內(nèi)容,下篇文章將會(huì)介紹SQL中如何使用函數(shù)處理數(shù)據(jù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容