0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

GaussDB 數(shù)據(jù)類型介紹

jf_81200783 ? 來(lái)源:jf_81200783 ? 作者:jf_81200783 ? 2023-06-05 16:40 ? 次閱讀

GaussDB 數(shù)據(jù)庫(kù)

GaussDB 是華為基于 openGauss 自研生態(tài)推出的云化企業(yè)級(jí)分布式關(guān)系型數(shù)據(jù)庫(kù),它支持多種數(shù)據(jù)類型,包括數(shù)值、字符、日期等。在使用 GaussDB 時(shí),可能需要進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換,以滿足不同的需求。本文將以示例的形式羅列并介紹一些常見(jiàn)的數(shù)據(jù)類型轉(zhuǎn)換方法等。

數(shù)據(jù)類型概念及特點(diǎn)

數(shù)據(jù)類型是一組值的集合以及定義在這個(gè)值集上的一組操作。GaussDB 數(shù)據(jù)庫(kù)是由表的集合組成的,而各表中的列定義了該表,每一列都屬于一種數(shù)據(jù)類型,GaussDB 根據(jù)數(shù)據(jù)類型有相應(yīng)函數(shù)對(duì)其內(nèi)容進(jìn)行操作,例如 GaussDB 可對(duì)數(shù)值型數(shù)據(jù)進(jìn)行加、減、乘、除操作等。

數(shù)據(jù)類型是用來(lái)定義數(shù)據(jù)存儲(chǔ)格式和數(shù)據(jù)范圍的規(guī)范。每種數(shù)據(jù)類型都有自己的特點(diǎn)和適用范圍,它們?cè)跀?shù)據(jù)庫(kù)中的作用主要有以下幾點(diǎn):

wKgaomR9n2OAH_SBAADpw3AtE6c828.png

存儲(chǔ)數(shù)據(jù):數(shù)據(jù)庫(kù)中的每個(gè)字段都必須指定數(shù)據(jù)類型,這樣才能確定它們?cè)跀?shù)據(jù)庫(kù)中的存儲(chǔ)格式。不同的數(shù)據(jù)類型使用不同的存儲(chǔ)方式,例如整型會(huì)以二進(jìn)制形式存儲(chǔ),而字符型則以 ASCII 碼或 Unicode 編碼形式存儲(chǔ)。

約束數(shù)據(jù)范圍:數(shù)據(jù)類型可以限制某個(gè)字段存儲(chǔ)的數(shù)據(jù)范圍,例如整型只能存儲(chǔ)整數(shù)值,小數(shù)型只能存儲(chǔ)浮點(diǎn)數(shù)等。這樣可以確保數(shù)據(jù)的準(zhǔn)確性和完整性,防止非法值進(jìn)入數(shù)據(jù)庫(kù)。

提高查詢效率:數(shù)據(jù)庫(kù)在查詢數(shù)據(jù)時(shí)會(huì)根據(jù)字段的數(shù)據(jù)類型進(jìn)行優(yōu)化,例如對(duì)整型字段的查詢會(huì)比對(duì)字符型字段的查詢更快,因?yàn)檎妥侄蔚臄?shù)據(jù)存儲(chǔ)格式更簡(jiǎn)單,計(jì)算也更快。

降低存儲(chǔ)空間:不同的數(shù)據(jù)類型使用不同的存儲(chǔ)方式,一些數(shù)據(jù)類型可以在存儲(chǔ)時(shí)減少存儲(chǔ)空間的占用。例如使用整型可以減少存儲(chǔ)空間的占用,因?yàn)檎驮诖鎯?chǔ)時(shí)只需要占用 4 個(gè)字節(jié),而字符型則需要占用更多的存儲(chǔ)空間。

提高數(shù)據(jù)安全性:數(shù)據(jù)類型可以幫助數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)進(jìn)行有效的過(guò)濾和驗(yàn)證,限制不合法的數(shù)據(jù)輸入,增強(qiáng)數(shù)據(jù)的安全性和可靠性。

綜上所述,數(shù)據(jù)類型在數(shù)據(jù)庫(kù)中扮演著極為重要的角色,它們不僅僅用于存儲(chǔ)數(shù)據(jù),還可以提高查詢效率、降低存儲(chǔ)空間、提高數(shù)據(jù)安全性等。數(shù)據(jù)庫(kù)開(kāi)發(fā)人員在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)必須充分了解各種數(shù)據(jù)類型的特點(diǎn)和使用場(chǎng)景,合理選用數(shù)據(jù)類型,才能保證數(shù)據(jù)庫(kù)的高效性和穩(wěn)定性。

常用數(shù)據(jù)類型

1、常用字符串類型介紹

在進(jìn)行字段設(shè)計(jì)時(shí),需要根據(jù)數(shù)據(jù)特征選擇相應(yīng)的數(shù)據(jù)類型。字符串類型在使用時(shí)比較容易混淆,下表羅列了 GaussDB 中常見(jiàn)的字符串類型。

1)常用字符串類型

wKgZomR9n2SAGK9UAAEhvS7nfe4378.png

2、布爾類型

1)說(shuō)明

“真”值的有效文本值是:TRUE、't'、'true'、'y'、'yes'、'1'以及所有非 0 整數(shù)。

“假”值的有效文本值是:FALSE、'f'、'false'、'n'、'no'、'0'、0。

使用 TRUE 和 FALSE 是比較規(guī)范的用法(也是 SQL 兼容的用法)。

3、數(shù)值類型

1)整數(shù)類型

wKgaomR9n2SAC1bDAACJsmgSJnE585.png

TINYINT、SMALLINT、INTEGER 和 BIGINT 類型存儲(chǔ)各種范圍的數(shù)字,也就是整數(shù)。試圖存儲(chǔ)超出范圍以外的數(shù)值將會(huì)導(dǎo)致錯(cuò)誤。

常用的類型是 INTEGER,因?yàn)樗峁┝嗽诜秶?、存?chǔ)空間、性能之間的最佳平衡。一般只有取值范圍確定不超過(guò) SMALLINT 的情況下,才會(huì)使用 SMALLINT 類型。而只有在 INTEGER 的范圍不夠的時(shí)候才使用 BIGINT,因?yàn)榍罢呦鄬?duì)快得多。

4、日期/時(shí)間類型

1)日期輸入說(shuō)明:日期和時(shí)間的輸入幾乎可以是任何合理的格式,包括 ISO-8601 格式、SQL-兼容格式、傳統(tǒng) POSTGRES 格式或者其它的形式。系統(tǒng)支持按照日、月、年的順序自定義日期輸入。如果把 DateStyle 參數(shù)設(shè)置為 MDY 就按照“月-日-年”解析,設(shè)置為 DMY 就按照“日-月-年”解析,設(shè)置為 YMD 就按照“年-月-日”解析。

日期的文本輸入需要加單引號(hào)包圍,語(yǔ)法:type [ ( p ) ] 'value',可選的精度聲明中的 p 是一個(gè)整數(shù),表示在秒域中小數(shù)部分的位數(shù)。

wKgZomR9n2WAa9H3AAGN_UT2tWk516.png

2)時(shí)間段輸入說(shuō)明:reltime 的輸入方式可以采用任何合法的時(shí)間段文本格式,包括數(shù)字形式(含負(fù)數(shù)和小數(shù))及時(shí)間形式,其中時(shí)間形式的輸入支持 SQL 標(biāo)準(zhǔn)格式、ISO-8601 格式、POSTGRES 格式等。另外,文本輸入需要加單引號(hào)。

wKgaomR9n2WAAB5PAAGFeOkntRw387.png

數(shù)據(jù)類型選擇建議

選擇數(shù)據(jù)類型,在字段設(shè)計(jì)時(shí),基于查詢效率的考慮,一般遵循以下原則:

選擇數(shù)值類型時(shí),在滿足業(yè)務(wù)精度的情況下,選擇數(shù)據(jù)類型的優(yōu)先級(jí)從高到低依次為整數(shù)、浮點(diǎn)數(shù)、NUMERIC。

使用一致的數(shù)據(jù)類型,當(dāng)多個(gè)表存在邏輯關(guān)系時(shí),表示同一含義的字段應(yīng)該使用相同的數(shù)據(jù)類型。

對(duì)于字符串?dāng)?shù)據(jù),建議使用變長(zhǎng)字符串?dāng)?shù)據(jù)類型,并指定最大長(zhǎng)度。請(qǐng)務(wù)必確保指定的最大長(zhǎng)度大于需要存儲(chǔ)的最大字符數(shù),避免超出最大長(zhǎng)度時(shí)出現(xiàn)字符截?cái)喱F(xiàn)象。除非明確知道數(shù)據(jù)類型為固定長(zhǎng)度字符串,否則,不建議使用 CHAR(n)、BPCHAR(n)、NCHAR(n)、CHARACTER(n)。

索引字段的總長(zhǎng)度不超過(guò) 50 字節(jié)。否則,索引大小會(huì)膨脹比較嚴(yán)重,帶來(lái)較大的存儲(chǔ)開(kāi)銷,同時(shí)索引性能也會(huì)下降。

盡量使用執(zhí)行效率比較高的數(shù)據(jù)類型,一般來(lái)說(shuō)整型數(shù)據(jù)運(yùn)算(包括=、>、<、≧、≦、≠等常規(guī)的比較運(yùn)算,以及 group by)的效率比字符串、浮點(diǎn)數(shù)要高。比如某客戶場(chǎng)景中對(duì)列存表進(jìn)行點(diǎn)查詢,filter 條件在一個(gè) numeric 列上,執(zhí)行時(shí)間為 10+s;修改 numeric 為 int 類型之后,執(zhí)行時(shí)間縮短為 1.8s 左右。

盡量使用短字段的數(shù)據(jù)類型:長(zhǎng)度較短的數(shù)據(jù)類型不僅可以減小數(shù)據(jù)文件的大小,提升 IO 性能;同時(shí)也可以減小相關(guān)計(jì)算時(shí)的內(nèi)存消耗,提升計(jì)算性能。比如對(duì)于整型數(shù)據(jù),如果可以用 smallint 就盡量不用 int,如果可以用 int 就盡量不用 bigint。

表關(guān)聯(lián)列盡量使用相同的數(shù)據(jù)類型。如果表關(guān)聯(lián)列數(shù)據(jù)類型不同,數(shù)據(jù)庫(kù)必須動(dòng)態(tài)地轉(zhuǎn)化為相同的數(shù)據(jù)類型進(jìn)行比較,這種轉(zhuǎn)換會(huì)帶來(lái)一定的性能開(kāi)銷。

附:GaussDB 數(shù)據(jù)庫(kù)涉及的數(shù)據(jù)類型

“數(shù)值類型、貨幣類型、布爾類型、字符類型、二進(jìn)制類型、日期/時(shí)間類型、幾何類型、網(wǎng)絡(luò)地址類型、位串類型、文本搜索類型、UUID 類型、JSON/JSONB 類型、HLL 數(shù)據(jù)類型、范圍類型、對(duì)象標(biāo)識(shí)符類型、偽類型、列存表支持的數(shù)據(jù)類型、賬本數(shù)據(jù)庫(kù)使用的數(shù)據(jù)類型”。

審核編輯黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 華為
    +關(guān)注

    關(guān)注

    215

    文章

    34258

    瀏覽量

    250985
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    753

    瀏覽量

    44032
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3752

    瀏覽量

    64233
  • 華為云
    +關(guān)注

    關(guān)注

    3

    文章

    2391

    瀏覽量

    17244
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Redis數(shù)據(jù)類型介紹

    Redis 作為一個(gè)內(nèi)存數(shù)據(jù)庫(kù)已經(jīng)被許許多多的公司使用,它的性能非常的優(yōu)秀,讀寫(xiě)速度支持非??於抑С?10W 的 QPS 。今天我們就來(lái)學(xué)習(xí)下它的豐富的數(shù)據(jù)類型。 Redis 數(shù)據(jù)類型 Redis
    的頭像 發(fā)表于 10-09 10:53 ?751次閱讀
    Redis<b class='flag-5'>數(shù)據(jù)類型</b><b class='flag-5'>介紹</b>

    vhdl數(shù)據(jù)類型

    VHDL中的標(biāo)識(shí)符可以是常數(shù)、變量、信號(hào)、端口、子程序或參數(shù)的名字。VHDL中的數(shù)據(jù)類型可以分成四大類: 標(biāo)量型(SCALAR TYPE):屬單元素的最基本的數(shù)據(jù)類型,通常用于描述一個(gè)單值數(shù)據(jù)對(duì)象
    發(fā)表于 03-30 15:59 ?11次下載

    Struct結(jié)構(gòu)數(shù)據(jù)類型

    Struct類型是一種由多個(gè)不同數(shù)據(jù)類型元素組成的數(shù)據(jù)結(jié)構(gòu),其元素可以是基本數(shù)據(jù)類型,也可以是Struct、數(shù)組等復(fù)雜數(shù)據(jù)類型以及PLC
    的頭像 發(fā)表于 07-25 17:02 ?2918次閱讀

    結(jié)構(gòu)數(shù)據(jù)類型(Struct)及應(yīng)用案例

    Struct數(shù)據(jù)類型使用非常靈活,隨時(shí)可以使用,但是相對(duì)于PLC數(shù)據(jù)類型 (UDT) 有以下缺點(diǎn),所以建議需要使用Struct類型時(shí),可以使用PLC數(shù)據(jù)類型(UDT)代替。
    的頭像 發(fā)表于 07-27 16:10 ?1722次閱讀

    結(jié)構(gòu)數(shù)據(jù)類型Struct介紹

    Struct類型是一種由多個(gè)不同數(shù)據(jù)類型元素組成的數(shù)據(jù)結(jié)構(gòu),其元素可以是基本數(shù)據(jù)類型,也可以是Struct、數(shù)組等復(fù)雜數(shù)據(jù)類型以及PLC
    的頭像 發(fā)表于 01-30 10:15 ?1851次閱讀

    什么是數(shù)據(jù)類型轉(zhuǎn)換

    常用的3種數(shù)據(jù)類型:1、Python數(shù)據(jù)類型第一種:字符串(str)。 2、Python數(shù)據(jù)類型第二種:整數(shù)(int)。 3、Python數(shù)據(jù)類型第三種:浮點(diǎn)數(shù)(float)。
    的頭像 發(fā)表于 02-23 15:21 ?1730次閱讀

    定義數(shù)據(jù)類型

    在運(yùn)算之前我們必須首先定義出數(shù)據(jù)類型,定義出腳本支持的數(shù)據(jù)類型,這是運(yùn)算的基礎(chǔ)。 這一小節(jié)我們將定義出數(shù)據(jù)類型,在這里我們暫時(shí)定義四個(gè)數(shù)據(jù)類型:
    的頭像 發(fā)表于 03-03 10:10 ?892次閱讀

    S71500-硬件數(shù)據(jù)類型介紹

    硬件數(shù)據(jù)類型:硬件數(shù)據(jù)類型由 CPU 提供??捎糜布?b class='flag-5'>數(shù)據(jù)類型的數(shù)目取決于 CPU。
    的頭像 發(fā)表于 05-16 09:21 ?5092次閱讀
    S71500-硬件<b class='flag-5'>數(shù)據(jù)類型</b><b class='flag-5'>介紹</b>

    GaussDB數(shù)據(jù)類型轉(zhuǎn)換介紹

    數(shù)據(jù)類型轉(zhuǎn)換在實(shí)際應(yīng)用中非常常見(jiàn)。GaussDB 作為一款企業(yè)級(jí)分布式關(guān)系型數(shù)據(jù)庫(kù),在實(shí)際業(yè)務(wù)場(chǎng)景使用中,也會(huì)避免不了數(shù)據(jù)類型的轉(zhuǎn)換。以下是一些數(shù)據(jù)
    的頭像 發(fā)表于 06-05 16:29 ?796次閱讀
    <b class='flag-5'>GaussDB</b><b class='flag-5'>數(shù)據(jù)類型</b>轉(zhuǎn)換<b class='flag-5'>介紹</b>

    MATLAB變量和數(shù)據(jù)類型的基本介紹

    在MATLAB中,變量和數(shù)據(jù)類型是非常重要的概念。
    的頭像 發(fā)表于 07-05 09:44 ?1735次閱讀

    淺談PLC定義數(shù)據(jù)類型的應(yīng)用

    PLC定義數(shù)據(jù)類型以下用一個(gè)例子介紹PLC定義數(shù)據(jù)類型的應(yīng)用,以便進(jìn)一步理解PLC定義數(shù)據(jù)類型
    的頭像 發(fā)表于 07-24 16:07 ?1258次閱讀
    淺談PLC定義<b class='flag-5'>數(shù)據(jù)類型</b>的應(yīng)用

    F型PLC數(shù)據(jù)類型與標(biāo)準(zhǔn)PLC數(shù)據(jù)類型(UDT)之間的差別在哪?

    可以像使用標(biāo)準(zhǔn) PLC 數(shù)據(jù)類型 (UDT) 那樣,聲明和使用 F 型 PLC 數(shù)據(jù)類型 (UDT) ??梢栽诎踩绦蛑幸约皹?biāo)準(zhǔn)用戶程序中使用 F 型 PLC 數(shù)據(jù)類型 (UDT) 。
    的頭像 發(fā)表于 08-27 09:54 ?1083次閱讀
    F型PLC<b class='flag-5'>數(shù)據(jù)類型</b>與標(biāo)準(zhǔn)PLC<b class='flag-5'>數(shù)據(jù)類型</b>(UDT)之間的差別在哪?

    Redis的數(shù)據(jù)類型有哪些

    Redis的數(shù)據(jù)類型有哪些?有五種常用數(shù)據(jù)類型:String、Hash、Set、List、SortedSet。以及三種特殊的數(shù)據(jù)類型:Bitmap、HyperLogLog、Geospatial
    的頭像 發(fā)表于 10-09 10:51 ?751次閱讀

    oracle的數(shù)據(jù)類型有哪些

    Oracle數(shù)據(jù)庫(kù)中有許多數(shù)據(jù)類型可供選擇,每種數(shù)據(jù)類型都有其各自的特點(diǎn)和適用場(chǎng)景。下面是對(duì)Oracle數(shù)據(jù)庫(kù)中最常用的數(shù)據(jù)類型的詳盡說(shuō)明,
    的頭像 發(fā)表于 12-05 16:45 ?2231次閱讀

    plc數(shù)據(jù)類型怎么理解和應(yīng)用

    PLC(可編程邏輯控制器)是一種工業(yè)自動(dòng)化設(shè)備,用于控制機(jī)械和工業(yè)過(guò)程。在PLC編程中,數(shù)據(jù)類型是非常重要的概念,因?yàn)樗鼪Q定了程序中數(shù)據(jù)的存儲(chǔ)和處理方式。正確理解和應(yīng)用PLC數(shù)據(jù)類型是編寫(xiě)有效、可靠
    的頭像 發(fā)表于 12-19 11:39 ?3899次閱讀