Основные типы данных в ClickHouse

Содержание

Целочисленные типы

Int8, TINYINT, BOOL, BOOLEAN или INT1

Целое число со знаком с возможными значениями от -128 до 127.

Int16, SMALLINT или INT2

Целое число со знаком с возможными значениями от -32768 до 32767.

Int32, INT, INT4 или INTEGER

Целое число со знаком с возможными значениями от -2147483648 до 2147483647.

Int64 или BIGINT

Целое число со знаком с возможными значениями от -9223372036854775808 до 9223372036854775807.

Int128

Целое число со знаком с возможными значениями от -170141183460469231731687303715884105728 до 170141183460469231731687303715884105727.

Int256

Целое число со знаком с возможными значениями от -57896044618658097711785492504343953926634992332820282019728792003956564819968 до 57896044618658097711785492504343953926634992332820282019728792003956564819967.

UInt8

Целое число без знака с возможными значениями от 0 до 255.

UInt16

Целое число без знака с возможными значениями от 0 до 65535.

UInt32

Целое число без знака с возможными значениями от 0 до 4294967295.

UInt64

Целое число без знака с возможными значениями от 0 до 18446744073709551615.

UInt128

Целое число без знака с возможными значениями от 0 до 340282366920938463463374607431768211455.

UInt256

Целое число без знака с возможными значениями от 0 до 115792089237316195423570985008687907853269984665640564039457584007913129639935.

Типы с фиксированной запятой

Decimal32

Число с фиксированной запятой. Максимальное количество цифр в числе - от 1 до 9. В круглых скобках после типа указывается количество цифр после запятой D.

Decimal64

Число с фиксированной запятой. Максимальное количество цифр в числе - от 1 до 18. В круглых скобках после типа указывается количество цифр после запятой D.

Decimal128

Число с фиксированной запятой. Максимальное количество цифр в числе - от 1 до 38. В круглых скобках после типа указывается количество цифр после запятой D.

Decimal256

Число с фиксированной запятой. Максимальное количество цифр в числе - от 1 до 76. В круглых скобках после типа указывается количество цифр после запятой D.

Decimal

Число с фиксированной запятой. В круглых скобках вслед за типом через запятую указываются общее количество цифр M и количество цифр после запятой D. М может принимать значения от 1 до 76, а D может принимать значения от 0 до M.

Этот тип, в зависимости от значения M, является синонимом для одного из описанных выше типов:

  • От 1 до 9 - Decimal32(D),
  • От 10 до 18 - Decimal64(D),
  • От 19 до 38 - Decimal128(D),
  • От 39 до 76 - Decimal256(D),

Типы с плавающей запятой

Float32 или FLOAT

32-битное число с плавающей запятой, хранятся в формате IEEE 754.

Float64 или DOUBLE

64-битное число с плавающей запятой, хранятся в формате IEEE 754.

Типы для дат и времени

Date

Дата хранится в виде Uint16, содержит число дней, прошедших от 1 января 1970 года. Максимальное значение - до 2105 года включительно.

Date32

Дата хранится в виде Int32, содержит число дней, прошедших от 1 января 1970 года. Отрицательные значения представляют даты до 1 января 1970 года.

DateTime

Отметка времени. Отметка времени сохраняется всегда в часовом поясе, который был указан в круглых скобках после типа, а если он не был указан - в часовом поясе, настроенном на сервере. Может принимать значения от 1970-01-01 00:00:00 до 2106-02-07 06:28:15 с точностью в 1 секунду.

DateTime64

Отметка времени с указанной точностью. В круглых скобках после типа можно указать количеством цифр после запятой в секундах D от 0 до 9, а через запятую от значения D можно также указать часовой пояс. По умолчанию, если точность не указана, используется значение 3 - сохранение с точностью до миллисекунд. Отметка времени сохраняется всегда в часовом поясе, который был указан в круглых скобках после типа, а если он не был указан - в часовом поясе, настроенном на сервере. Может принимать значения от 1900-01-01 00:00:00 до 2299-12-31 23:59:59.99999999 (для максимального значения точность не больше 8 цифр после запятой).

При вставке числового значения оно интерпретируется, как отметка времени в часовом поясе UTC. При извлечении будет интерпретировано с учётом часового пояса поля или сервера.

Двоичные типы

String

Последовательность байт произвольной длины. Для измерения длины последовательности в байтах предназначена функция length.

FixedString

Последовательность байт фиксированной длины. При попытке записать в поле с таким типом последовательность байт короче указанной, вставляемая последовательность байт дополнятеся до необходимой длины нулевыми байтами справа. При сравнении дополнять значения короче нужно добавлять нулевые байты самостоятельно.

Текстовые типы

В ClickHouse нет текстовых полей. Для хранения строк используются поля типа String. Для измерения длины строки в кодировке UTF8 предназначена функция lengthUTF8.

Другие типы

bool

Хранится на диске как UInt8, для значений 1 и 0 предусмотрены псевдонимы true и false соответственно.

Enum8('value1', 'value2', ...)

Одно из перечисленных значений: value1, value2. Хранится как Int8. Числовые значения можно указывать явным образом:

Enum8('value1' = 1, 'value2' = 2)

Enum16('value1', 'value2', ...)

Одно из перечисленных значений: value1, value2. Хранится как Int16. Числовые значения можно указывать явным образом:

Enum16('value1' = 1, 'value2' = 2)

Enum('value1', 'value2', ...)

Одно из перечисленных значений: value1, value2. В зависимости от количества значений, хранится либо как Enum8, либо как Enum16. Числовые значения можно указывать явным образом:

Enum('value1' = 1, 'value2' = 2)

Использованные материалы