【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
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...