Стоимость какой тип данных
Перейти к содержимому

Стоимость какой тип данных

  • автор:

Стоимость какой тип данных

При определении таблицы для всех ее столбцов необходимо указать тип данных. Тип данных определяет диапазон значений, которые могут храниться в столбце, сколько они будут занимать места в памяти. 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 в ArcGIS Enterprise

Подключения к базам данных поддерживаются в Insights in ArcGIS Enterprise и Insights desktop .

В следующей таблице перечислены типы данных для каждой поддерживаемой базы данных, и приводится соответствие типов полей Esri для каждого типа. Типы полей, перечисленные как неподдерживаемые, не будут отображаться в таблицах базы данных в Insights .

Типы данных Google BigQuery

Примечание:

BigQuery поддерживает только типы данных GEOGRAPHY, использующие пространственную привязку 4326 (World Geodetic System 1984).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *