Стоимость какой тип данных
При определении таблицы для всех ее столбцов необходимо указать тип данных. Тип данных определяет диапазон значений, которые могут храниться в столбце, сколько они будут занимать места в памяти. PostgreSQL поддерживает богатую палитру различных типов данных, среди которые условно можно разделить на подгруппы: числовые, символьные, логические, дата и время, бинарные и ряд других.
Числовые типы данных
- serial : представляет автоинкрементирующееся числовое значение, которое занимает 4 байта и может хранить числа от 1 до 2147483647. Значение данного типа образуется путем автоинкремента значения предыдущей строки. Поэтому, как правило, данный тип используется для определения идентификаторов строки.
- smallserial : представляет автоинкрементирующееся числовое значение, которое занимает 2 байта и может хранить числа от 1 до 32767. Аналог типа serial для небольших чисел.
- bigserial : представляет автоинкрементирующееся числовое значение, которое занимает 8 байт и может хранить числа от 1 до 9223372036854775807. Аналог типа serial для больших чисел.
- smallint : хранит числа от -32768 до +32767. Занимает 2 байта. Имеет псевдоним int2 .
- integer : хранит числа от -2147483648 до +2147483647. Занимает 4 байта. Имеет псевдонимы int и int4 .
- bigint : хранит числа от -9223372036854775808 до +9223372036854775807. Занимает 8 байт. Имеет псевдоним int8 .
- numeric : хранит числа с фиксированной точностью, которые могут иметь до 131072 знаков в целой части и до 16383 знаков после запятой. Данный тип может принимать два параметра precision и scale: numeric(precision, scale) . Параметр precision указывает на максимальное количество цифр, которые может хранить число. Параметр scale представляет максимальное количество цифр, которые может содержать число после запятой. Это значение должно находиться в диапазоне от 0 до значения параметра precision. По умолчанию оно равно 0. Например, для числа 23.5141 precision равно 6, а scale — 4.
- decimal : хранит числа с фиксированной точностью, которые могут иметь до 131072 знаков в целой части и до 16383 знаков в дробной части. То же самое, что и numeric .
- real : хранит числа с плавающей точкой из диапазона от 1E-37 до 1E+37. Занимает 4 байта. Имеет псевдоним float4 .
- double precision : хранит числа с плавающей точкой из диапазона от 1E-307 до 1E+308. Занимает 8 байт. Имеет псевдоним float8 .
Id SERIAL, TotalWeight NUMERIC(9,2), Age INTEGER, Surplus REAL
Типы для работы с валютой (денежными единицами)
Для работы с денежными единицами определен тип money , который может принимать значения в диапазоне от -92233720368547758.08 до +92233720368547758.07 и занимает 8 байт.
Символьные типы
- character(n) : представляет строку из фиксированного количества символов. С помощью параметра задается задается количество символов в строке. Имеет псевдоним char(n) .
- character varying(n) : представляет строку из переменной длины. С помощью параметра задается задается максимальное количество символов в строке. Имеет псевдоним varchar(n) .
- text : представляет текст произвольной длины.
Бинарные данные
Для хранения бинарных данных определен тип bytea . Он хранит данные в виде бинарных строк, которые представляют последовательность октетов или байт.
Типы для работы с датами и временем
- timestamp : хранит дату и время. Занимает 8 байт. Для дат самое нижнее значение — 4713 г до н.э., самое верхнее значение — 294276 г н.э.
- timestamp with time zone : то же самое, что и timestamp , только добавляет данные о часовом поясе.
- date : представляет дату от 4713 г. до н.э. до 5874897 г н.э. Занимает 4 байта.
- time : хранит время с точностью до 1 микросекунды без указания часового пояса. Принимает значения от 00:00:00 до 24:00:00. Занимает 8 байт.
- time with time zone : хранит время с точностью до 1 микросекунды с указанием часового пояса. Принимает значения от 00:00:00+1459 до 24:00:00-1459. Занимает 12 байт.
- interval : представляет временной интервал. Занимает 16 байт.
Распространенные форматы дат:
- yyyy-mm-dd — 1999-01-08
- Month dd, yyyy — January 8, 1999
- mm/dd/yyyy — 1/8/1999
Распространенные форматы времени:
- hh:mi — 13:21
- hh:mi am/pm — 1:21 pm
- hh:mi:ss — 1:21:34
Логический тип
Тип boolean может хранить одно из двух значений: true или false.
Вместо true можно указывать следующие значения: TRUE, ‘t’, ‘true’, ‘y’, ‘yes’, ‘on’, ‘1’.
Вместо false можно указывать следующие значения: FALSE, ‘f’, ‘false’, ‘n’, ‘no’, ‘off’, ‘0’.
Типы для представления интернет-адресов
- cidr : интернет-адрес в формате IPv4 и IPv6. Например, 192.168.0.1 . Занимает от 7 до 19 байт.
- inet : интернет-адрес в формате cidr/y , где cidr это адрес в формате IPv4 или IPv6, а /y — количество бит в адресе (если этот параметр не указан, то используется 34 для IPv4, 128 для IPv6). Например, 192.168.0.1/24 или 2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128 . Занимает от 7 до 19 байт.
- macaddr : хранит MAC-адрес. Занимает 6 байт.
- macaddr8 : хранит MAC-адрес в формате EUI-64. Занимает 8 байт.
Геометрические типы
- point : представляет точку на плоскости в формате (x,y) . Занимает 16 байт.
- line : представляет линию неопределенной длины в формате . Занимает 32 байта.
- lseg : представляет отрезок в формате ((x1,y1),(x2,y2)) . Занимает 32 байта.
- box : представляет прямоугольник в формате ((x1,y1),(x2,y2)) . Занимает 32 байта.
- path : представляет набор содиненных точек. В формате ((x1,y1). ) путь является закрытым (первая и последняя точка соединяются линией) и фактически представляет многоугольник. В формате [(x1,y1). ] путь является открытым Занимает 16+16n байт.
- polygon : представляет многоугольник в формате ((x1,y1). ) . Занимает 40+16n байт.
- circle : представляет окружность в формате . Занимает 24 байта.
Остальные типы данных
- json : хранит данные json в текстовом виде.
- jsonb : хранит данные json в бинарном формате.
- uuid : хранит универсальный уникальный идентификатор (UUID), например, a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 . Занимает 32 байта.
- xml : хранит даные в формате XML.
Десятичный тип данных
Вероятно, самым интересным среди всех числовых типов данных в C# является тип decimal , который предназначен для применения в финансовых расчетах. Этот тип имеет разрядность 128 бит для представления числовых значений в пределах от 1E-28 до 7,9E+28. Вам, вероятно, известно, что для обычных арифметических вычислений с плавающей точкой характерны ошибки округления десятичных значений. Эти ошибки исключаются при использовании типа decimal , который позволяет представить числа с точностью до 28 (а иногда и 29) десятичных разрядов. Благодаря тому, что этот тип данных способен представлять десятичные значения без ошибок округления, он особенно удобен для расчетов, связанных с финансами.
Ниже приведен пример программы, в которой тип decimal используется в конкретном финансовом расчете. В этой программе цена со скидкой рассчитывается на основании исходной цены и скидки в процентах.
// Использовать тип decimal для расчета скидки. using System; class UseDecimal < static void Main() < decimal price; decimal discount; decimal discounted_price; // Рассчитать цену со скидкой, price = 19.95m; discount = 0.15m; // норма скидки составляет 15% discounted_price = price - (price * discount); Console.WriteLine("Цена со скидкой: $" + discounted_price); >>
Результат выполнения этой программы выглядит следующим образом.
Цена со скидкой: $16.9575
Обратите внимание на то, что значения констант типа decimal в приведенном выше примере программы указываются с суффиксом m . Дело в том, что без суффикса m эти значения интерпретировались бы как стандартные константы с плавающей точкой, которые несовместимы с типом данных decimal . Тем не менее переменной типа decimal можно присвоить целое значение без суффикса m , например 10.
Рассмотрим еще один пример применения типа decimal . В этом примере рассчитывается будущая стоимость капиталовложений с фиксированной нормой прибыли в течение ряда лет.
/* Применить тип decimal для расчета будущей стоимости капиталовложений. */ using System; class FutVal < static void Main() < decimal amount; decimal rate_of_return; int years, i; amount = 1000.0M; rate_of_return = 0.07M; years = 10; Console.WriteLine("Первоначальные капиталовложения: $" + amount); Console.WriteLine("Норма прибыли: " + rate_of_return); Console.WriteLine("В течение " + years + " лет"); for (i = 0; i < years; i++) amount = amount + (amount * rate_of_return); Console.WriteLine("Будущая стоимость равна $" + amount); >>
Вот как выглядит результат выполнения этой программы.
Первоначальные капиталовложения: $1000 Норма прибыли: 0.07 В течение 10 лет Будущая стоимость равна $1967.151357289565322490000
Обратите внимание на то, что результат выполнения приведенной выше программы представлен с точностью до целого ряда десятичных разрядов, т.е. с явным избытком по сравнению с тем, что обычно требуется! Далее будет показано, как подобный результат приводится к более «привлекательному» виду.
Стоимость какой тип данных
При определении столбцов таблицы для них необходимо указать тип данных. Каждый столбец должен иметь тип данных. Тип данных определяет, какие значения могут храниться в столбце, сколько они будут занимать места в памяти.
MySQL предоставляет следующие типы данных, которые можно разбить на ряд групп.
Символьные типы
- CHAR : представляет строку фиксированной длины. Длина хранимой строки указывается в скобках, например, CHAR(10) — строка из десяти символов. И если в таблицу в данный столбец сохраняется строка из 6 символов (то есть меньше установленной длины в 10 символов), то строка дополняется 4 пробелами и в итоге все равно будет занимать 10 символов Тип CHAR может хранить до 255 байт.
- VARCHAR : представляет строку переменной длины. Длина хранимой строки также указыватся в скобках, например, VARCHAR(10) . Однако в отличие от CHAR хранимая строка будет занимать именно столько места, сколько необходимо. Например, если определенная длина в 10 символов, но в столбец сохраняется строка в 6 символов, то хранимая строка так и будет занимать 6 символов плюс дополнительный байт, который хранит длину строки. Всего тип VARCHAR может хранить до 65535 байт.
Начиная с MySQL 5.6 типы CHAR и VARCHAR по умолчанию используют кодировку UTF-8, которая позволяет использовать до 3 байт для хранения символа в зависимости от языка ( для многих европейских языков по 1 байту на символ, для ряда восточно-европейских и ближневосточных — 2 байта, а для китайского, японского, корейского — по 3 байта на символ).
Ряд дополнительных типов данных представляют текст неопределенной длины:
- TINYTEXT : представляет текст длиной до 255 байт.
- TEXT : представляет текст длиной до 65 КБ.
- MEDIUMTEXT : представляет текст длиной до 16 МБ
- LONGTEXT : представляет текст длиной до 4 ГБ
Числовые типы
- TINYINT : представляет целые числа от -128 до 127, занимает 1 байт
- BOOL : фактически не представляет отдельный тип, а является лишь псевдонимом для типа TINYINT(1) и может хранить два значения 0 и 1. Однако данный тип может также в качестве значения принимать встроенные константы TRUE (представляет число 1) и FALSE (предоставляет число 0). Также имеет псевдоним BOOLEAN .
- TINYINT UNSIGNED : представляет целые числа от 0 до 255, занимает 1 байт
- SMALLINT : представляет целые числа от -32768 до 32767, занимает 2 байтa
- SMALLINT UNSIGNED : представляет целые числа от 0 до 65535, занимает 2 байтa
- MEDIUMINT : представляет целые числа от -8388608 до 8388607, занимает 3 байта
- MEDIUMINT UNSIGNED : представляет целые числа от 0 до 16777215, занимает 3 байта
- INT : представляет целые числа от -2147483648 до 2147483647, занимает 4 байта
- INT UNSIGNED : представляет целые числа от 0 до 4294967295, занимает 4 байта
- BIGINT : представляет целые числа от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807, занимает 8 байт
- BIGINT UNSIGNED : представляет целые числа от 0 до 18 446 744 073 709 551 615, занимает 8 байт
- DECIMAL : хранит числа с фиксированной точностью. Данный тип может принимать два параметра precision и scale : DECIMAL(precision, scale) . Параметр precision представляет максимальное количество цифр, которые может хранить число. Это значение должно находиться в диапазоне от 1 до 65. Параметр scale представляет максимальное количество цифр, которые может содержать число после запятой. Это значение должно находиться в диапазоне от 0 до значения параметра precision. По умолчанию оно равно 0. Например, в определении следующего столбца:
salary DECIMAL(5,2)
Типы для работы с датой и временем
- DATE : хранит даты с 1 января 1000 года до 31 деабря 9999 года (c «1000-01-01» до «9999-12-31»). По умолчанию для хранения используется формат yyyy-mm-dd. Занимает 3 байта.
- TIME : хранит время от -838:59:59 до 838:59:59. По умолчанию для хранения времени применяется формат «hh:mm:ss». Занимает 3 байта.
- DATETIME : объединяет время и дату, диапазон дат и времени — с 1 января 1000 года по 31 декабря 9999 года (с «1000-01-01 00:00:00» до «9999-12-31 23:59:59»). Для хранения по умолчанию используется формат «yyyy-mm-dd hh:mm:ss». Занимает 8 байт
- TIMESTAMP : также хранит дату и время, но в другом диапазоне: от «1970-01-01 00:00:01» UTC до «2038-01-19 03:14:07» UTC. Занимает 4 байта
- YEAR : хранит год в виде 4 цифр. Диапазон доступных значений от 1901 до 2155. Занимает 1 байт.
Тип Date может принимать даты в различных форматах, однако непосредственно для хранения в самой бд даты приводятся к формату «yyyy-mm-dd». Некоторые из принимаемых форматов:
- yyyy-mm-dd — 2018-05-25
- yyyy-m-dd — 2018-5-25
- yy-m-dd — 18-05-25 В таком формате двузначные числа от 00 до 69 воспринимаются как даты в диапазоне 2000-2069. А числа от 70 до 99 как диапазон чисел 1970 — 1999.
- yyyymmdd — 20180525
- yyyy.mm.dd — 2018.05.25
Для времени тип Time использует 24-часовой формат. Он может принимать время в различных форматах:
- hh:mi — 3:21 (хранимое значение 03:21:00 )
- hh:mi:ss — 19:21:34
- hhmiss — 192134
Примеры значений для типов DATETIME и TIMESTAMP:
- 2018-05-25 19:21:34
- 2018-05-25 (хранимое значение 2018-05-25 00:00:00 )
Составные типы
- ENUM : хранит одно значение из списка допустимых значений. Занимает 1-2 байта
- SET : может хранить несколько значений (до 64 значений) из некоторого списка допустимых значений. Занимает 1-8 байт.
Бинарные типы
- TINYBLOB : хранит бинарные данные в виде строки длиной до 255 байт.
- BLOB : хранит бинарные данные в виде строки длиной до 65 КБ.
- MEDIUMBLOB : хранит бинарные данные в виде строки длиной до 16 МБ
- LONGBLOB : хранит бинарные данные в виде строки длиной до 4 ГБ
Поддерживаемые типы данных из баз данных
Подключения к базам данных поддерживаются в Insights in ArcGIS Enterprise и Insights desktop .
В следующей таблице перечислены типы данных для каждой поддерживаемой базы данных, и приводится соответствие типов полей Esri для каждого типа. Типы полей, перечисленные как неподдерживаемые, не будут отображаться в таблицах базы данных в Insights .
Типы данных Google BigQuery
Примечание:
BigQuery поддерживает только типы данных GEOGRAPHY, использующие пространственную привязку 4326 (World Geodetic System 1984).