【clickhouse專欄】基礎數據類型說明

来源:https://www.cnblogs.com/zimug/archive/2022/06/12/16367406.html
-Advertisement-
Play Games

本文是clickhouse專欄第五篇,更多內容請關註本號歷史文章! 一、數據類型表 clickhouse內置了很多的column數據類型,可以通過查詢system.data_type_families這張表獲取版本的所有支持的數據類型。下文中第一列是欄位類型,第二列表示該類型的欄位類型是否區分大小寫 ...


本文是clickhouse專欄第五篇,更多內容請關註本號歷史文章!

一、數據類型表

clickhouse內置了很多的column數據類型,可以通過查詢system.data_type_families這張表獲取版本的所有支持的數據類型。下文中第一列是欄位類型,第二列表示該類型的欄位類型是否區分大小寫(1表示不區分大小寫,Date和date都是有效的數據類型名稱),第三類是該欄位類型的別名。

peer1 :) SELECT * FROM system.data_type_families;
┌─name────────────────────────────┬─case_insensitive─┬─alias_to────┐
│ Polygon                         │                0 │             │
│ Ring                            │                0 │             │
│ Point                           │                0 │             │
│ MultiPolygon                    │                0 │             │
│ IPv6                            │                0 │             │
│ IntervalSecond                  │                0 │             │
│ IPv4                            │                0 │             │
│ UInt32                          │                0 │             │
│ IntervalYear                    │                0 │             │
│ IntervalQuarter                 │                0 │             │
│ IntervalMonth                   │                0 │             │
│ Int64                           │                0 │             │
│ IntervalDay                     │                0 │             │
│ IntervalHour                    │                0 │             │
│ UInt256                         │                0 │             │
│ Int16                           │                0 │             │
│ LowCardinality                  │                0 │             │
│ AggregateFunction               │                0 │             │
│ Nothing                         │                0 │             │
│ Decimal256                      │                1 │             │
│ Tuple                           │                0 │             │
│ Array                           │                0 │             │
│ Enum16                          │                0 │             │
│ IntervalMinute                  │                0 │             │
│ FixedString                     │                0 │             │
│ String                          │                0 │             │
│ DateTime                        │                1 │             │
│ Map                             │                0 │             │
│ UUID                            │                0 │             │
│ Decimal64                       │                1 │             │
│ Nullable                        │                0 │             │
│ Enum                            │                0 │             │
│ Int32                           │                0 │             │
│ UInt8                           │                0 │             │
│ Date                            │                1 │             │
│ Decimal32                       │                1 │             │
│ UInt128                         │                0 │             │
│ Float64                         │                0 │             │
│ SimpleAggregateFunction         │                0 │             │
│ Nested                          │                0 │             │
│ DateTime64                      │                1 │             │
│ Int128                          │                0 │             │
│ Decimal128                      │                1 │             │
│ Int8                            │                0 │             │
│ Decimal                         │                1 │             │
│ Int256                          │                0 │             │
│ IntervalWeek                    │                0 │             │
│ UInt64                          │                0 │             │
│ Enum8                           │                0 │             │
│ DateTime32                      │                1 │             │
│ UInt16                          │                0 │             │
│ Float32                         │                0 │             │
│ INET6                           │                1 │ IPv6        │
│ INET4                           │                1 │ IPv4        │
│ BINARY                          │                1 │ FixedString │
│ NATIONAL CHAR VARYING           │                1 │ String      │
│ BINARY VARYING                  │                1 │ String      │
│ NCHAR LARGE OBJECT              │                1 │ String      │
│ NATIONAL CHARACTER VARYING      │                1 │ String      │
│ NATIONAL CHARACTER LARGE OBJECT │                1 │ String      │
│ NATIONAL CHARACTER              │                1 │ String      │
│ NATIONAL CHAR                   │                1 │ String      │
│ CHARACTER VARYING               │                1 │ String      │
│ LONGBLOB                        │                1 │ String      │
│ MEDIUMTEXT                      │                1 │ String      │
│ TEXT                            │                1 │ String      │
│ TINYBLOB                        │                1 │ String      │
│ VARCHAR2                        │                1 │ String      │
│ CHARACTER LARGE OBJECT          │                1 │ String      │
│ DOUBLE PRECISION                │                1 │ Float64     │
│ LONGTEXT                        │                1 │ String      │
│ NVARCHAR                        │                1 │ String      │
│ INT1 UNSIGNED                   │                1 │ UInt8       │
│ VARCHAR                         │                1 │ String      │
│ CHAR VARYING                    │                1 │ String      │
│ MEDIUMBLOB                      │                1 │ String      │
│ NCHAR                           │                1 │ String      │
│ CHAR                            │                1 │ String      │
│ SMALLINT UNSIGNED               │                1 │ UInt16      │
│ TIMESTAMP                       │                1 │ DateTime    │
│ FIXED                           │                1 │ Decimal     │
│ TINYTEXT                        │                1 │ String      │
│ NUMERIC                         │                1 │ Decimal     │
│ DEC                             │                1 │ Decimal     │
│ TINYINT UNSIGNED                │                1 │ UInt8       │
│ INTEGER UNSIGNED                │                1 │ UInt32      │
│ INT UNSIGNED                    │                1 │ UInt32      │
│ CLOB                            │                1 │ String      │
│ MEDIUMINT UNSIGNED              │                1 │ UInt32      │
│ BOOL                            │                1 │ Int8        │
│ SMALLINT                        │                1 │ Int16       │
│ INTEGER SIGNED                  │                1 │ Int32       │
│ NCHAR VARYING                   │                1 │ String      │
│ INT SIGNED                      │                1 │ Int32       │
│ TINYINT SIGNED                  │                1 │ Int8        │
│ BIGINT SIGNED                   │                1 │ Int64       │
│ BINARY LARGE OBJECT             │                1 │ String      │
│ SMALLINT SIGNED                 │                1 │ Int16       │
│ MEDIUMINT                       │                1 │ Int32       │
│ INTEGER                         │                1 │ Int32       │
│ INT1 SIGNED                     │                1 │ Int8        │
│ BIGINT UNSIGNED                 │                1 │ UInt64      │
│ BYTEA                           │                1 │ String      │
│ INT                             │                1 │ Int32       │
│ SINGLE                          │                1 │ Float32     │
│ FLOAT                           │                1 │ Float32     │
│ MEDIUMINT SIGNED                │                1 │ Int32       │
│ BOOLEAN                         │                1 │ Int8        │
│ DOUBLE                          │                1 │ Float64     │
│ INT1                            │                1 │ Int8        │
│ CHAR LARGE OBJECT               │                1 │ String      │
│ TINYINT                         │                1 │ Int8        │
│ BIGINT                          │                1 │ Int64       │
│ CHARACTER                       │                1 │ String      │
│ BYTE                            │                1 │ Int8        │
│ BLOB                            │                1 │ String      │
│ REAL                            │                1 │ Float32     │
└─────────────────────────────────┴──────────────────┴─────────────┘

二、基礎數據類型

clickhouse和傳統的資料庫一樣,提供了基礎的數據類型,這一部分就簡單的介紹一下,相信學過編程語言的同學對這一部分並不陌生。

整數類型

整數類型,IntN隨著N的增大,整型數值的範圍擴大。U表示unsigned無符號,無符號就是沒有負數符號,只能存儲大於等於0的樹。

  • 有符號整型(IntN):Int8、Int16、Int32、Int64、Int128、Int256。數值範圍是【-2^(N-1) ~ 2^(N-1)-1】,比如:Int8(-128到127)
  • 無符號整型(UIntN):UInt8、UInt16、UInt32、UInt64、UInt128、UInt256。數值範圍是【0 ~ 2^N-1】,比如:UInt8(0到255)

浮點類型

  • 單精度浮點數Float32,學過C、java、mysql的朋友把它當作float數據類型使用即可。從小數點後第8位起會發生精度丟失

  • 雙精度浮點數Float64,學過C、java、mysql的朋友把它當作double數據類型使用即可。從小數點後第17位起會發生精度丟失

Decimal類型

有的時候Float32、Float64無法滿足計算精度的要求,我們就需要使用Decimal數據類型。ClickHouse 提供了 Decimal32、Decimal64 和 Decimal128 三種精度的Decimal。
在定義表欄位的類型時,可以通過兩種形式聲明:簡寫方式有 Decimal32(S)、Decimal64(S)、Decimal128(S) 三種,原生方式為 Decimal(P, S),表示該定點數的整數位加上小數位的總長度最大為 P,其中小數位長度最多為 S。

參考下麵的SQL及輸出結果進行理解和學習

 SELECT
      toDecimal64(2, 3) AS x,   --數值為2,精度為3,所以2.000
      toTypeName(x) AS xtype,
      toDecimal32(2, 2) AS y,   --數值為2,精度為2,所以2.00
      toTypeName(y) as ytype,
      x + y AS a,  --2.000 + 2.00,加減法取最大精度。所以4.000
      toTypeName(a) AS atype,
      x * y AS b,  --2.000*2.00,乘法的精度值相加(2+3=5)。所以4.00000
      toTypeName(b) AS btype,
      x / y AS c, --2.000/2.00,被除數2.000精度是3,結果精度等於被除數精度。所以1.000
      toTypeName(c) AS ctype;

下圖為上面的SQL的執行結果

普通String類型

clickhouse 中的String類型並沒有長度限制,所以它可以代替傳統關係型資料庫中的所有以字元形式存在的數據類型,如:CHAR、VARCHAR、CLOB 等等。

FixedString類型

FixedString(N)表示固定長度為N的數據類型,可以使用toFixedString函數將String轉換成FixedString。下文中的SQL雖然zimug長度是5,但使用FixedString(6)長度為6,實際存儲內容是zimug\0

peer1 :)   select toFixedString('zimug', 6), length(toFixedString('zimug', 6));

┌─toFixedString('zimug', 6)─┬─length(toFixedString('zimug', 6))─┐
│ zimug                     │                                 6 │
└───────────────────────────┴───────────────────────────────────┘

UUID

UUID是比較常見的數據唯一值,ClickHouse把它作為一種數據類型。UUID數據格式如:6fb875ae-75b9-4643-a146-5a1de7c717b4,使用方式如下:

使用示例如下:

-- 建表時創建UUID數據類型欄位
CREATE TABLE test_uuid (id UUID, content String) ENGINE=TinyLog;
-- 向表中插入數據
INSERT INTO test_uuid SELECT generateUUIDv4(), 'test uuid 1';
-- 插入的時候不為UUID賦值,UUID欄位使用0填充

INSERT INTO test_uuid (content) VALUES ('test uuid 2');   

日期類型

日期數據類型有三種:DateTime、DateTime64和Date,並且支持使用字元串的方式insert寫入日期格式。另外還有一種日期類型TIMESTAMP ,其使用方法和DateTime類型一摸一樣,只是對DateTime數據類型起了一個別名。

  • DateTime精確到秒,如:'2022-06-12 06:06:06'
  • DateTime64精確到亞秒,如:'2022-06-12 06:06:06.000'
  • Date不包含時間信息,精確到天,如:'2022-06-12'

布爾類型

ClickHouse布爾數據類型BOOLEAN 。其實際存儲就是使用UInt8 類型,取值限製為0或 1。

推薦閱讀

限於博文篇幅,更多精彩內容我就不一一列舉了,推薦閱讀
《原創精品視頻及配套文檔:springboot-已錄製97節(免費)》
等等等等


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

-Advertisement-
Play Games
更多相關文章
  • 目錄 一.簡介 二.效果演示 三.源碼下載 四.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...
  • synchronized,synchronized下的 i+=2 和 i++ i++執行結果居然不一樣,位元組碼分析 ...
  • 原型 gtkmm void set_size_request(int width = -1, int height = -1); gtk void gtk_widget_set_size_request ( GtkWidget* widget, int width, int height ) 描述 ...
  • Java-SpringBoot-使用多態給項目解耦 提及 今天在打算維護一下智慧社區這個項目的時候,想到項目是使用Satoken這個開箱即用的授權和認證的組件,因為在項目開啟的時候對SpringSecurity並不熟悉,而Satoken類似傻瓜式的,導入依賴進去,配置一下獲取許可權和角色的方法即可使用 ...
  • 一、Mybatis的使用 創建maven工程。 添加maven依賴 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> ...
  • scrapy爬蟲框架 簡介 通過實戰快速入門scrapy爬蟲框架 scrapy爬蟲框架入門簡介 下載scrapy pip install scrapy 創建項目 scrapy startproject spiderTest1 創建爬蟲 cd .\spiderTest1 scrapy genspide ...
  • 線上問題年年有,今年特別多。記幾次線上慘痛的踩坑記錄,希望大家以史為鑒。 1. 包裝類型自動解箱導致空指針異常 public int getId() { Integer id = null; return id; } 如果調用上面的方法會發生什麼?id是Integer類型,而方法的返回值int類型, ...
  • 排版雖然只是繪圖中的輔助功能,但是好的排版能夠提高圖形的表現力。 讓人一眼看出圖形要表達的內容和數據,而不用去費力的睜大眼睛去圖中查找。 如果說 matplotlib的坐標系統,各種基礎元素,包括柱狀圖,折線圖,散點圖等它的硬實力, 那麼,排版就是 matplotlib 的軟實力,結合排版,能讓分析 ...
一周排行
    -Advertisement-
    Play Games
  • public static void GetRegistData() { string name = "huishuangzhu"; //搜索到註冊表根目錄 RegistryKey hkml = Registry.ClassesRoot; //搜索到註冊表根目錄下的XXX文件夾。 RegistryK ...
  • 用acme.sh自動部署功能變數名稱證書 安裝ACME 目前使用量最大的免費SSL證書就是Let’s Encrypt,自2018-03開始,Let’s Encrypt官方發佈上線了免費的SSL泛功能變數名稱證書,目前通過DNS方式獲取比較快,國內可以通過鵝雲的DNSPod功能變數名稱API或者貓雲功能變數名稱API自動簽發Let’ ...
  • 經常看到有群友調侃“為什麼搞Java的總在學習JVM調優?那是因為Java爛!我們.NET就不需要搞這些!”真的是這樣嗎?今天我就用一個案例來分析一下。 昨天,一位學生問了我一個問題:他建了一個預設的ASP.NET Core Web API的項目,也就是那個WeatherForecast的預設項目模 ...
  • 1、環境搭建 1.1 依賴 <!-- nacos註冊中心 註解 @EnableDiscoveryClient --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba- ...
  • ULID:Universally Unique Lexicographically Sortable Identifier(通用唯一詞典分類標識符) UUID:Universally Unique Identifier(通用唯一標識符) 為什麼不選擇UUID UUID 目前有 5 個版本: 版本1: ...
  • 虛基類/抽象類 抽象類:有純虛函數的類 虛繼承 通過修飾繼承方式, 如代碼2是虛繼承,被虛繼承的類稱為虛基類 虛繼承派生類的記憶體佈局方式 先是vbptr => 派生類的數據 =>基類的數據 , 對比代碼1和代碼2,發現原本基類數據在前面,派生類數據在後面,但是在虛繼承的時候 基類數據方式放到了後面, ...
  • 下麵給出 Kafka 一些重要概念,讓大家對 Kafka 有個整體的認識和感知,後面還會詳細的解析每一個概念的作用以及更深入的原理 • Producer:消息生產者,向 Kafka Broker 發消息的客戶端。 • Consumer:消息消費者,從 Kafka Broker 取消息的客戶端。 • ...
  • 前面介紹了對稱加密演算法,本文將介紹密碼學中另一類重要應用:消息摘要(Digest),什麼是消息摘要?簡單的定義是:對一份數據,進行一個單向的Hash函數,生成一個固定長度的Hash值,這個值就是這份數據的摘要,也稱為指紋。 ...
  • 弟弟最近要考試,臨時抱佛腳在網上找了一堆學習資料複習,這不剛就來找我了,說PDF上有水印,影響閱讀效果,到時候考不好就怪資料不行,氣的我差點當場想把他揍一頓! 算了,弟弟長大了,看在打不過他的份上,就不打他了~ 稍加思索,我想起了Python不是可以去水印?說搞就搞! 去除水印原理 去除方法: 用 ...
  • 作者:陳昌浩 1 導讀 if…else…在代碼中經常使用,聽說可以通過Java 8的Function介面來消滅if…else…!Function介面是什麼?如果通過Function介面介面消滅if…else…呢?讓我們一起來探索一下吧。 2 Function介面 Function介面就是一個有且僅有 ...