mysql必知必會--創建計算欄位

来源:https://www.cnblogs.com/ygjzs/archive/2020/01/22/12229929.html
-Advertisement-
Play Games

計算欄位 存儲在資料庫表中的數據一般不是應用程式所需要的格式。下麵舉 幾個例子。 * 如果想在一個欄位中既顯示公司名,又顯示公司的地址,但這兩 個信息一般包含在不同的表列中。 * 城市、州和郵政編碼存儲在不同的列中(應該這樣),但郵件標簽 列印程式卻需要把它們作為一個恰當格式的欄位檢索出來。 * 列 ...


 計算欄位

存儲在資料庫表中的數據一般不是應用程式所需要的格式。下麵舉
幾個例子。
* 如果想在一個欄位中既顯示公司名,又顯示公司的地址,但這兩
個信息一般包含在不同的表列中。
* 城市、州和郵政編碼存儲在不同的列中(應該這樣),但郵件標簽
列印程式卻需要把它們作為一個恰當格式的欄位檢索出來。
* 列數據是大小寫混合的,但報表程式需要把所有數據按大寫表示
出來。
* 物品訂單表存儲物品的價格和數量,但不需要存儲每個物品的總
價格(用價格乘以數量即可)。為列印發票,需要物品的總價格。
* 需要根據表數據進行總數、平均數計算或其他計算。
在上述每個例子中,存儲在表中的數據都不是應用程式所需要的。
我們需要直接從資料庫中檢索出轉換、計算或格式化過的數據;而不是
檢索出數據,然後再在客戶機應用程式或報告程式中重新格式化。
這就是計算欄位發揮作用的所在了。與前面各章介紹過的列不同,
計算欄位並不實際存在於資料庫表中。計算欄位是運行時在 SELECT 語句
內創建的。

欄位(field) 基本上與列(column)的意思相同,經常互換使
用,不過資料庫列一般稱為列,而術語欄位通常用在計算欄位的
連接上。
重要的是要註意到,只有資料庫知道 SELECT 語句中哪些列是實際的
表列,哪些列是計算欄位。從客戶機(如應用程式)的角度來看,計算
欄位的數據是以與其他列的數據相同的方式返回的。

客戶機與伺服器的格式 可在SQL語句內完成的許多轉換
和格式化工作都可以直接在客戶機應用程式內完成。但一
般來說,在資料庫伺服器上完成這些操作比在客戶機中完
成要快得多,因為DBMS是設計來快速有效地完成這種處
理的。

拼接欄位

拼接(concatenate) 將值聯結到一起構成單個值。
解決辦法是把兩個列拼接起來。在MySQL的 SELECT 語句中,可使用
Concat() 函數來拼接兩個列

MySQL的不同之處 多數DBMS使用 + 或 || 來實現拼接,
MySQL則使用 Concat() 函數來實現。當把SQL語句轉換成
MySQL語句時一定要把這個區別銘記在心。

Concat() 拼接串,即把多個串連接起來形成一個較長的串。
Concat() 需要一個或多個指定的串,各個串之間用逗號分隔。
上面的 SELECT 語句連接以下4個元素:

  • 存儲在 vend_name 列中的名字;
  • 包含一個空格和一個左圓括弧的串;
  • 存儲在 vend_country 列中的國家;
  • 包含一個右圓括弧的串。
    從上述輸出中可以看到, SELECT 語句返回包含上述4個元素的單個列
    (計算欄位)。

通過刪除數據右側多餘的空格來整理數據,這可以
使用MySQL的 RTrim() 函數來完成,如下所示:

Trim 函數 MySQL除了支持 RTrim() (正如剛纔所見,它去掉
串右邊的空格),還支持 LTrim() (去掉串左邊的空格)以及
Trim() (去掉串左右兩邊的空格)。

使用別名

從前面的輸出中可以看到, SELECT 語句拼接地址欄位工作得很好。
但此新計算列的名字是什麼呢?實際上它沒有名字,它只是一個值。如
果僅在SQL查詢工具中查看一下結果,這樣沒有什麼不好。但是,一個未
命名的列不能用於客戶機應用中,因為客戶機沒有辦法引用它。
為瞭解決這個問題,SQL支持列別名。別名(alias)是一個欄位或值
的替換名。別名用 AS 關鍵字賦予。請看下麵的 SELECT 語句

SELECT 語句本身與以前使用的相同,只不過這裡的語句中計算
欄位之後跟了文本 AS vend_title 。它指示SQL創建一個包含
指定計算的名為 vend_title 的計算欄位。從輸出中可以看到,結果與以
前的相同,但現在列名為 vend_title ,任何客戶機應用都可以按名引用
這個列,就像它是一個實際的表列一樣

別名的其他用途 別名還有其他用途。常見的用途包括在實際
的表列名包含不符合規定的字元(如空格)時重新命名它,在
原來的名字含混或容易誤解時擴充它,等等

導出列 別名有時也稱為導出列(derived column),不管稱為
什麼,它們所代表的都是相同的東西

執行算術計算

計算欄位的另一常見用途是對檢索出的數據進行算術計算

如何測試計算 SELECT 提供了測試和試驗函數與計算的一個
很好的辦法。雖然 SELECT 通常用來從表中檢索數據,但可以
省略 FROM 子句以便簡單地訪問和處理表達式。例如, SELECT
3*2; 將返回 6 , SELECT Trim('abc'); 將返回 abc ,而 SELECT
Now() 利用 Now() 函數返回當前日期和時間。通過這些例子,
可以明白如何根據需要使用 SELECT 進行試驗。

本章介紹了計算欄位以及如何創建計算欄位。我們用例子說明瞭計
算欄位在串拼接和算術計算的用途。此外,還學習瞭如何創建和使用別
名,以便應用程式能引用計算欄位。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這是該系列的第二篇文章: "在ASP.NET Core 3.0中使用Serilog.AspNetCore" 。 1. "第1部分 使用Serilog RequestLogging來簡化ASP.NET Core的日誌輸出" 2. "第2部分 用Serilog記錄所選終結點的附加屬性" (本文) 3. ...
  • 基礎教程之導出Pdf收據 說明 本教程主要說明如何使用Magicodes.IE.Pdf完成Pdf收據導出 要點 導出PDF數據 自定義PDF模板 導出單據 如何批量導出單據 導出特性 PdfExporterAttribute + Orientation : 方向(橫向或縱向) + PaperKind ...
  • 本文介紹調用Spire.Cloud.Word.SDK提供的介面shapesApi來操作Word形狀,包括添加形狀AddShape(),添加形狀時,可設置形狀類型、顏色、大小、位置、傾斜、輪廓、文本環繞方式、順序);刪除形狀DeleteShape()和讀取形狀屬性GetShapeProperties( ...
  • NuGet微軟官方中國鏡像地址: https://nuget.cdn.azure.cn/v3/index.json 打開Visual Studio => 工具 => NuGet包管理器 => 程式包管理器設置 找到“Net包管理器” => “程式包源”,點擊“+”新建項,將地址https://nug ...
  • 要點 導出特性 如何導出Excel表頭 如何導出數據、如何進行數據的切割、如何使用篩選器 導出特性 ExporterAttribute + Name : 名稱(當前Sheet 名稱) + HeaderFontSize :頭部字體大小 + FontSize :正文字體大小 + MaxRowNumber ...
  • 首先在左下角輸入cmd搜索->命令提示符->以管理員身份運行->然後複製下麵一段命令: dism /online /norestart /add-package:%SystemRoot%\servicing\Packages\Microsoft-Windows-IIS-WebServer-AddOn ...
  • https://sqlserver.code.blog/2020/01/22/failed-to-restart-polybase-data-movement-after-running-sp_polybase_join_group/ ...
  • 函數 與其他大多數電腦語言一樣,SQL支持利用函數來處理數據。函數 一般是在數據上執行的,它給數據的轉換和處理提供了方便。 在前一章中用來去掉串尾空格的 RTrim() 就是一個函數的例子 函數沒有SQL的可移植性強 能運行在多個系統上的代碼稱 為可移植的(portable)。相對來說,多數SQL ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...