GaussDB 數據庫
GaussDB 是華為基于 openGauss 自研生態推出的云化企業級分布式關系型數據庫,它支持多種數據類型,包括數值、字符、日期等。在使用 GaussDB 時,可能需要進行數據類型轉換,以滿足不同的需求。本文將以示例的形式羅列并介紹一些常見的數據類型轉換方法等。
數據類型概念及特點
數據類型是一組值的集合以及定義在這個值集上的一組操作。GaussDB 數據庫是由表的集合組成的,而各表中的列定義了該表,每一列都屬于一種數據類型,GaussDB 根據數據類型有相應函數對其內容進行操作,例如 GaussDB 可對數值型數據進行加、減、乘、除操作等。
數據類型是用來定義數據存儲格式和數據范圍的規范。每種數據類型都有自己的特點和適用范圍,它們在數據庫中的作用主要有以下幾點:
存儲數據:數據庫中的每個字段都必須指定數據類型,這樣才能確定它們在數據庫中的存儲格式。不同的數據類型使用不同的存儲方式,例如整型會以二進制形式存儲,而字符型則以 ASCII 碼或 Unicode 編碼形式存儲。
約束數據范圍:數據類型可以限制某個字段存儲的數據范圍,例如整型只能存儲整數值,小數型只能存儲浮點數等。這樣可以確保數據的準確性和完整性,防止非法值進入數據庫。
提高查詢效率:數據庫在查詢數據時會根據字段的數據類型進行優化,例如對整型字段的查詢會比對字符型字段的查詢更快,因為整型字段的數據存儲格式更簡單,計算也更快。
降低存儲空間:不同的數據類型使用不同的存儲方式,一些數據類型可以在存儲時減少存儲空間的占用。例如使用整型可以減少存儲空間的占用,因為整型在存儲時只需要占用 4 個字節,而字符型則需要占用更多的存儲空間。
提高數據安全性:數據類型可以幫助數據庫對數據進行有效的過濾和驗證,限制不合法的數據輸入,增強數據的安全性和可靠性。
綜上所述,數據類型在數據庫中扮演著極為重要的角色,它們不僅僅用于存儲數據,還可以提高查詢效率、降低存儲空間、提高數據安全性等。數據庫開發人員在設計數據庫時必須充分了解各種數據類型的特點和使用場景,合理選用數據類型,才能保證數據庫的高效性和穩定性。
常用數據類型
1、常用字符串類型介紹
在進行字段設計時,需要根據數據特征選擇相應的數據類型。字符串類型在使用時比較容易混淆,下表羅列了 GaussDB 中常見的字符串類型。
1)常用字符串類型
2、布爾類型
1)說明
“真”值的有效文本值是:TRUE、't'、'true'、'y'、'yes'、'1'以及所有非 0 整數。
“假”值的有效文本值是:FALSE、'f'、'false'、'n'、'no'、'0'、0。
使用 TRUE 和 FALSE 是比較規范的用法(也是 SQL 兼容的用法)。
3、數值類型
1)整數類型
TINYINT、SMALLINT、INTEGER 和 BIGINT 類型存儲各種范圍的數字,也就是整數。試圖存儲超出范圍以外的數值將會導致錯誤。
常用的類型是 INTEGER,因為它提供了在范圍、存儲空間、性能之間的最佳平衡。一般只有取值范圍確定不超過 SMALLINT 的情況下,才會使用 SMALLINT 類型。而只有在 INTEGER 的范圍不夠的時候才使用 BIGINT,因為前者相對快得多。
4、日期/時間類型
1)日期輸入說明:日期和時間的輸入幾乎可以是任何合理的格式,包括 ISO-8601 格式、SQL-兼容格式、傳統 POSTGRES 格式或者其它的形式。系統支持按照日、月、年的順序自定義日期輸入。如果把 DateStyle 參數設置為 MDY 就按照“月-日-年”解析,設置為 DMY 就按照“日-月-年”解析,設置為 YMD 就按照“年-月-日”解析。
日期的文本輸入需要加單引號包圍,語法:type [ ( p ) ] 'value',可選的精度聲明中的 p 是一個整數,表示在秒域中小數部分的位數。
2)時間段輸入說明:reltime 的輸入方式可以采用任何合法的時間段文本格式,包括數字形式(含負數和小數)及時間形式,其中時間形式的輸入支持 SQL 標準格式、ISO-8601 格式、POSTGRES 格式等。另外,文本輸入需要加單引號。
數據類型選擇建議
選擇數據類型,在字段設計時,基于查詢效率的考慮,一般遵循以下原則:
選擇數值類型時,在滿足業務精度的情況下,選擇數據類型的優先級從高到低依次為整數、浮點數、NUMERIC。
使用一致的數據類型,當多個表存在邏輯關系時,表示同一含義的字段應該使用相同的數據類型。
對于字符串數據,建議使用變長字符串數據類型,并指定最大長度。請務必確保指定的最大長度大于需要存儲的最大字符數,避免超出最大長度時出現字符截斷現象。除非明確知道數據類型為固定長度字符串,否則,不建議使用 CHAR(n)、BPCHAR(n)、NCHAR(n)、CHARACTER(n)。
索引字段的總長度不超過 50 字節。否則,索引大小會膨脹比較嚴重,帶來較大的存儲開銷,同時索引性能也會下降。
盡量使用執行效率比較高的數據類型,一般來說整型數據運算(包括=、>、<、≧、≦、≠等常規的比較運算,以及 group by)的效率比字符串、浮點數要高。比如某客戶場景中對列存表進行點查詢,filter 條件在一個 numeric 列上,執行時間為 10+s;修改 numeric 為 int 類型之后,執行時間縮短為 1.8s 左右。
盡量使用短字段的數據類型:長度較短的數據類型不僅可以減小數據文件的大小,提升 IO 性能;同時也可以減小相關計算時的內存消耗,提升計算性能。比如對于整型數據,如果可以用 smallint 就盡量不用 int,如果可以用 int 就盡量不用 bigint。
表關聯列盡量使用相同的數據類型。如果表關聯列數據類型不同,數據庫必須動態地轉化為相同的數據類型進行比較,這種轉換會帶來一定的性能開銷。
附:GaussDB 數據庫涉及的數據類型
“數值類型、貨幣類型、布爾類型、字符類型、二進制類型、日期/時間類型、幾何類型、網絡地址類型、位串類型、文本搜索類型、UUID 類型、JSON/JSONB 類型、HLL 數據類型、范圍類型、對象標識符類型、偽類型、列存表支持的數據類型、賬本數據庫使用的數據類型”。
審核編輯黃宇
-
華為
+關注
關注
216文章
34437瀏覽量
251754 -
SQL
+關注
關注
1文章
764瀏覽量
44133 -
數據庫
+關注
關注
7文章
3799瀏覽量
64395 -
華為云
+關注
關注
3文章
2491瀏覽量
17429
發布評論請先 登錄
相關推薦
評論