?? 博客主頁:博主鏈接
?? 本文由 M malloc 原創(chuàng),首發(fā)于 CSDN??
?? 學(xué)習(xí)專欄推薦:LeetCode刷題集!
?? 歡迎點贊 ?? 收藏 ?留言 ?? 如有錯誤敬請指正!
?? 未來很長,值得我們?nèi)Ρ几案篮玫纳?
??MySQL的前情介紹
??大家好呀,今天是我第N次寫MySQL,也是最近才學(xué)習(xí)MySQL,也想著記錄一下自己的學(xué)習(xí)過程,并且分享給大家尼!
??本章詳情
??本文章將介紹什么是計算字段,如何創(chuàng)建計算字段以及怎樣從應(yīng)用程序中使用別名引用它們。
??計算字段
前言
存儲在數(shù)據(jù)庫表中的數(shù)據(jù)一般不是應(yīng)用程序所需要的格式。下面舉幾個例子。
- 如果想在一個字段中既顯示公司名,又顯示公司的地址,但這兩個信息一般包含在不同的表列中。
- 城市、州和郵政編碼存儲在不同的列中(應(yīng)該這樣),但郵件標(biāo)簽打印程序卻需要把它們作為一個恰當(dāng)格式的字段檢索出來。
- 列數(shù)據(jù)是大小寫混合的,但報表程序需要把所有數(shù)據(jù)按大寫表示出來。
- 物品訂單表存儲物品的價格和數(shù)量,但不需要存儲每個物品的總價格(用價格乘以數(shù)量即可)。為打印發(fā)票,需要物品的總價格
- 需要根據(jù)表數(shù)據(jù)進行總數(shù)、平均數(shù)計算或其他計算。
??在上述每個例子中,存儲在表中的數(shù)據(jù)都不是應(yīng)用程序所需要的。我們需要直接從數(shù)據(jù)庫中檢索出轉(zhuǎn)換、計算或格式化過的數(shù)據(jù);而不是檢索出數(shù)據(jù),然后再在客戶機應(yīng)用程序或報告程序中重新格式化
結(jié)論
這就是計算字段發(fā)揮作用的所在了。與前面的文章介紹過的列不同計算字段并不實際存在于數(shù)據(jù)庫表中。計算字段是運行時在SELECT語句內(nèi)創(chuàng)建的。
字段
字段 (field) 基本上與列 (column)的意思相同,經(jīng)?;Q使用,不過數(shù)據(jù)庫列一般稱為列,而術(shù)語字段通常用在計算字段的連接上。
重要的是要注意到,只有數(shù)據(jù)庫知道SELECT語句中哪些列是實際的表列,哪些列是計算字段。從客戶機(如應(yīng)用程序) 的角度來看,計算字段的數(shù)據(jù)是以與其他列的數(shù)據(jù)相同的方式返回的。
客戶機與服務(wù)器的格式
客戶機與服務(wù)器的格式可在SQL語內(nèi)完成的許多轉(zhuǎn)換和格式化工作都可以直接在客戶機應(yīng)用程序內(nèi)完成。但一般來說,在數(shù)據(jù)庫服務(wù)器上完成這些操作比在客戶機中完成要快得多,因為DBMS是設(shè)計來快速有效地完成這種處理的。
??拼接字段
??為了說明如何使用計算字段,舉一個創(chuàng)建由兩列組成的標(biāo)題的簡單例子。
- vendors表包含供應(yīng)商名和位置信息。假如要生成一個供應(yīng)商報表,需要在供應(yīng)商的名字中按照name(location)這樣的格式列出供應(yīng)商的位置。
- 此報表需要單個值,而表中數(shù)據(jù)存儲在兩個列vend_name和vend_country中。此外,需要用括號將vend_country括起來,這些東西都沒有明確存儲在數(shù)據(jù)庫表中。我們來看看怎樣編寫返回供應(yīng)商名和位置的SELECT語句。
拼接(concatenate)
將值聯(lián)結(jié)到一起構(gòu)成單個值
MySQL的不同之處
多數(shù)DBMS使用+或||來實現(xiàn)拼接,MySQL則使用Concat()函數(shù)來實現(xiàn)。當(dāng)把SQL語句轉(zhuǎn)換成MySQL語句時一定要把這個區(qū)別銘記在心。
輸入
SELECT Concat(vend_name,'(',vend_country,')') FROM vendors
ORDER BY vend_name;
分析
??Concat()拼接串,即把多個串連接起來形成一個較長的串。
Concat()需要一個或多個指定的串,各個串之間用逗號分隔。
- 存儲在vendname列中的名字;
- 包含一個空格和一個左圓括號的串;
- 存儲在vend_country列中的國家;
- 包含一個右圓括號的串;
從如下的輸出中可以看到,SELECT語句返回包含上述4個元素的單個列(計算字段)。
輸出
??在前幾篇章中曾提到通過刪除數(shù)據(jù)右側(cè)多余的空格來整理數(shù)據(jù),這可以使用MySQL的RTrim()函數(shù)來完成,如下所示:
輸入
SELECT Concat(RTrim(vend_name),'(',RTrim(vend_country),')') FROM vendors
ORDER BY vend_name;
分析
RTrim()函數(shù)去掉值右邊的所有空格。通過使用RTrim(),各個列都進行了整理。
Trim函數(shù)
Trim函數(shù) MySQL除了支持RTrim()(正如剛才所見,它去掉串右邊的空格),還支持LTrim()(去掉串左邊的空格)以及Trim()(去掉串左右兩邊的空格)。
使用別名
從前面的輸出中可以看到,SELECT語句拼接地址字段工作得很好。但此新計算列的名字是什么呢?實際上它沒有名字,它只是一個值。如果僅在SQL查詢工具中查看一下結(jié)果,這樣沒有什么不好。但是,一個未命名的列不能用于客戶機應(yīng)用中,因為客戶機沒有辦法引用它.
為了解決這個問題,SQL支持列別名。別名 (alias)是一個字段或值的替換名。別名用AS關(guān)鍵字賦予。請看下面的SELECT語句:
輸入
SELECT Concat(RTrim(vend_name),'(',RTrim(vend_country),')') as vend_title FROM vendors
ORDER BY vend_name;
輸出
分析
SELECT語句本身與以前使用的相同,只不過這里的語句中計算字段之后跟了文本AS vend_title。它指示SQL創(chuàng)建一個包含指定計算的名為vend _title的計算字段。從輸出中可以看到,結(jié)果與以前的相同,但現(xiàn)在列名為vend_title,任何客戶機應(yīng)用都可以按名引用這個列,就像它是一個實際的表列一樣。
別名的其他用途
別名的其他用途 別名還有其他用途常見的用途包括在實際的表列名包含不符合規(guī)定的字符(如空格)時重新命名它,在原來的名字含混或容易誤解時擴充它,等等.
導(dǎo)出列
別名有時也稱為導(dǎo)出列(derived column),不管稱為什么,它們所代表的都是相同的東西。
??執(zhí)行算術(shù)運算
前言
計算字段的另一常見用途是對檢索出的數(shù)據(jù)進行算術(shù)計算。舉一個例子,orders表包含收到的所有訂單,orderitems表包含每個訂單中的各項物品。下面的SQL語句檢索訂單號20005中的所有物品:
輸入
SELECT prod_id,quantity,item_price FROM orderitems
WHERE order_num = 20005;
輸出
item_price列包含訂單中每項物品的單價。如下匯總物品的價格單價乘以訂購數(shù)量):
輸入
SELECT prod_id,quantity,item_price,quantity * item_price AS expanded_price FROM orderitems
WHERE order_num = 20005;
輸出
分析
輸出中顯示的expanded_price列為一個計算字段,此計算為quantity*item price??蛻魴C應(yīng)用現(xiàn)在可以使用這個新計算列,就像使用其他列一樣。
MySQL算術(shù)操作符
如何測試計算
??如何測試計算SELECT提供了測試和試驗函數(shù)與計算的一個很好的辦法。雖然SELECT通常用來從表中檢索數(shù)據(jù),但可以省略FROM子句以便簡單地訪問和處理表達式。例如,SELECT3*2;將返回6,SELECT Trim(‘a(chǎn)bc’);將返回abc,而SELECT Now()利用Now()函數(shù)返回當(dāng)前日期和時間。通過這些例子,可以明白如何根據(jù)需要使用SELECT進行試驗。
??如何鞏固學(xué)習(xí)
提示:在學(xué)習(xí)的過程中,我們需要先自行進行思考,而不是一遇到不會的就放棄思考直接看答案,如果最后遇到真的不會的題目,我們可以適當(dāng)?shù)倪M行觀看答案,看自己的思路是否正確,在作出正確的判斷
??本文小結(jié)
本文章介紹了計算字段以及如何創(chuàng)建計算字段。我們用例子說明了計算字段在串拼接和算術(shù)計算的用途。此外,還學(xué)習(xí)了如何創(chuàng)建和使用別名,以便應(yīng)用程序能引用計算字段。
好啦今日的分享到這里就結(jié)束啦,我是愛你們的M malloc希望可以幫助到你們噢,最后別忘記三連啦!!
文章來源:http://www.zghlxwxcb.cn/news/detail-500982.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-500982.html
到了這里,關(guān)于【MySQL】不允許你還不了解創(chuàng)建計算字段的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!