Перейти к содержимому

Какие типы данных используются в sql

  • автор:

Типы данных SQL

Каждая СУБД определяет собственные типы SQL. Каждый драйвер ODBC предоставляет только те типы данных SQL, которые определяют связанные СУБД. Сведения о том, как драйвер сопоставляет типы СУБД SQL с идентификаторами типов SQL, определяемыми ODBC, и как драйвер сопоставляет типы СУБД SQL с собственными идентификаторами типов SQL для конкретного драйвера, возвращается через вызов SQLGetTypeInfo. Драйвер также возвращает типы данных SQL при описании типов данных столбцов и параметров с помощью вызовов SQLColAttribute, SQLColumns, SQLDescribeCol, SQLDescribeParam, SQLProcedureColumns и SQLSpecialColumns.

Типы данных SQL содержатся в полях дескриптора реализации SQL_DESC_ CONCISE_TYPE, SQL_DESC_TYPE и SQL_DESC_DATETIME_INTERVAL_CODE. Характеристики типов данных SQL содержатся в полях SQL_DESC_PRECISION, SQL_DESC_SCALE, SQL_DESC_LENGTH и SQL_DESC_OCTET_LENGTH дескрипторов реализации. Дополнительные сведения см . в разделе «Идентификаторы типов данных» и «Дескрипторы » далее в этом приложении.

Указанный драйвер и источник данных не обязательно поддерживают все типы данных SQL, определенные в этом приложении. Поддержка драйвера для типов данных SQL зависит от уровня SQL-92, с которым соответствует драйвер. Чтобы определить уровень грамматики SQL-92, поддерживаемой драйвером, приложение вызывает SQLGetInfo с типом сведений SQL_SQL_CONFORMANCE. Кроме того, указанный драйвер и источник данных могут поддерживать дополнительные типы данных SQL для конкретного драйвера. Чтобы определить, какие типы данных поддерживает драйвер, приложение вызывает SQLGetTypeInfo. Сведения о типах данных SQL для конкретного драйвера см. в документации по драйверу. Сведения о типах данных в определенном источнике данных см. в документации по источнику данных.

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

В следующей таблице перечислены допустимые идентификаторы типов SQL для всех типов данных SQL. В таблице также перечислены имя и описание соответствующего типа данных из SQL-92 (если он существует).

[1] Это значение, возвращаемое в столбце DATA_TYPE вызовом SQLGetTypeInfo.

[2] Это значение, возвращаемое в столбце NAME и CREATE PARAMS путем вызова SQLGetTypeInfo. Столбец NAME возвращает обозначение, например CHAR, тогда как столбец CREATE PARAMS возвращает разделенный запятыми список параметров создания, таких как точность, масштабирование и длина.

[3] Приложение использует SQLGetTypeInfo или SQLColAttribute , чтобы определить, является ли определенный тип данных или определенный столбец в результирующем наборе неназначен.

[4] SQL_DECIMAL и SQL_NUMERIC типы данных отличаются только в их точности. Точность ДЕСЯТИЧНЫХ(p,s ) — это определяемая реализацией десятичная точность, которая не меньше p, в то время как точность числовых чисел (p,) точно равна p.

[5] В зависимости от реализации точность SQL_FLOAT может быть либо 24, либо 53: если она равна 24, тип данных SQL_FLOAT совпадает с SQL_REAL; Если значение равно 53, тип данных SQL_FLOAT совпадает с SQL_DOUBLE.

[6] В ODBC 3.x типы данных даты, времени и метки времени SQL SQL_TYPE_DATE, SQL_TYPE_TIME и SQL_TYPE_TIMESTAMP соответственно; в ODBC 2.x типы данных SQL_DATE, SQL_TIME и SQL_TIMESTAMP.

[7] Дополнительные сведения о типах данных SQL интервала см . в разделе «Типы данных интервала» далее в этом приложении.

[8] Тип данных SQL_BIT отличается от типа BIT в SQL-92.

[9] Этот тип данных не имеет соответствующего типа данных в SQL-92.

В этом разделе приведен следующий пример.

Типы данных SQL

Символьные типы данных — содержат буквы, цифры и специальные символы.

CHAR или CHAR(n) — символьные строки фиксированной длины. Длина строки определяется параметром n . CHAR без параметра соответсвует CHAR(1) . Для хранения таких данных всегда отводится n байт вне зависимости от реальной длины строки.

VARCHAR(n) — символьная строка переменной длины. Для хранения данных этого типа отводится число байт, соответствующее реальной длине строки.

Целые типы данных — поддерживают только целые числа (дробные части и десятичные точки не допускаются). Над этими типами разрешается выполнять арифметические операции и применять к ним агрегирующие функции (определение максимального, минимального, среднего и суммарного значения столбца реляционной таблицы).

INTEGER или INT — целое, для хранения которого отводится, как правило, 4 байта. (Замечание: число байт, отводимое для хранения того или иного числового типа данных зависит от используемой СУБД и аппаратной платформы, здесь приводятся наиболее «типичные» значения)
Интервал значений от — 2147483647 до + 2147483648
SMALLINT — короткое целое (2 байта), интервал значений от — 32767 до +32768

Вещественные типы данных — описывают числа с дробной частью.
FLOAT и SMALLFLOAT — числа с плавающей точкой (для хранения отводится обычно 8 и 4 байта соответсвенно).
DECIMAL(p) — тип данных аналогичный FLOAT с числом значащих цифр p .
DECIMAL(p,n) — аналогично предыдущему, p — общее количество десятичных цифр, n — количество цифр после десятичной запятой.

Денежные типы данных — описывают, естественно, денежные величины. Если в ваша система такого типа данных не поддерживает, то используйте DECIMAL(p,n) .

MONEY(p,n) — все аналогично типу DECIMAL(p,n) . Вводится только потому, что некоторые СУБД предусматривают для него специальные методы форматирования.

Дата и время — используются для хранения даты, времени и их комбинаций. Большинство СУБД умеет определять интервал между двумя датами, а также уменьшать или увеличивать дату на определенное количество времени.

DATE — тип данных для хранения даты.

TIME — тип данных для хранения времени.

INTERVAL — тип данных для хранения верменного интервала.

DATETIME — тип данных для хранения моментов времени (год + месяц + день + часы + минуты + секунды + доли секунд).

Двоичные типы данных — позволяют хранить данные любого объема в двоичном коде (оцифрованные изображения, исполняемые файлы и т.д.). Определения этих типов наиболее сильно различаются от системы к системе, часто используются ключевые слова:
BINARY
BYTE
BLOB

Последовательные типы данных — используются для представления возрастающих числовых последовательностей.
SERIAL — тип данных на основе INTEGER , позволяющий сформировать уникальное значение (например, для первичного ключа). При добавлении записи СУБД автоматически присваивает полю данного типа значение, получаемое из возрастающей последовательности целых чисел.

В заключение следует сказать, что для всех типов данных имеется общее значение NULL — «не определено». Это значение имеет каждый элемент столбца до тех пор, пока в него не будут введены данные. При создании таблицы можно явно указать СУБД могут ли элементы того или иного столбца иметь значения NULL (это не допустимо, например, для столбца, являющего первичным ключом).

SQL — Урок 2. Типы данных

Этот урок носит больше теоретический характер, но пропустить его нельзя. В дальнейшем вы сможете возвращаться к нему, как к справочному уроку, сейчас же просто ознакомьтесь. В прошлом уроке говорилось, что MySQL поддерживает числовые, строковые, календарные данные и данные типа NULL. Рассмотрим их по очереди.

Числовые типы данных

Тип данных Объем памяти Диапазон Описание
TINYINT (M) 1 байт от -128 до 127 или от 0 до 255 Целое число. Может быть объявлено положительным с помощью ключевого слова UNSIGNED, тогда элементам столбца нельзя будет присвоить отрицательное значение. Необязательный параметр М — количество отводимых под число символов. Необязательный атрибут ZEROFILL позволяет свободные позиции по умолчанию заполнить нулями.

TINYINT — хранит любое число в диапазоне от -128 до 127.

TINYINT UNSIGNED — хранит любое число в диапазоне от 0 до 255.

TINYINT (2) — предполагается, что значения будут двузначными, но по факту будет хранить и трехзначные.

SMALLINT — хранит любое число в диапазоне от -32768 до 32767.

SMALLINT UNSIGNED — хранит любое число в диапазоне от 0 до 65535.

SMALLINT (4) — предполагается, что значения будут четырехзначные, но по факту будет хранить и пятизначные.

MEDIUMINT — хранит любое число в диапазоне от -8388608 до 8388608.

MEDIUMINT UNSIGNED — хранит любое число в диапазоне от 0 до 16777215.

MEDIUMINT (4) — предполагается, что значения будут четырехзначные, но по факту будет хранить и семизначные.

INT — хранит любое число в диапазоне от -2147683648 до 2147683648.

INT UNSIGNED — хранит любое число в диапазоне от 0 до 4294967295.

INT (4) — предполагается, что значения будут четырехзначные, но по факту будет хранить максимально возможные.

BIGINT — хранит любое число в диапазоне от -2 63 до 2 63 -1.

BIGINT UNSIGNED — хранит любое число в диапазоне от 0 до 2 64 .

BIGINT (4) — предполагается, что значения будут четырехзначные, но по факту будет хранить максимально возможные.

Необходимо понимать, чем больше диапазон значений у типа данных, тем больше памяти он занимает. Поэтому, если предполагается, что значения в столбце не будут превышать 100, то используйте тип TINYINT. Если при этом все значения будут положительными, то используйте атрибут UNSIGNED. Правильный выбор типа данных позволяет сэкономить место для хранения этих данных.

Строковые типы данных

Тип данных Объем памяти Максимальный размер Описание
CHAR (M) M символов М символов Позволяет хранить строку фиксированной длины М. Значение М — от 0 до 65535.

Календарные типы данных

Тип данных Объем памяти Диапазон Описание
DATE 3 байта от ‘1000-01-01’ до ‘9999-12-31’ Предназначен для хранения даты. В качестве первого значения указывается год в формате «YYYY», через дефис — месяц в формате «ММ», а затем день в формате «DD». В качестве разделителя может выступать не только дефис, а любой символ отличный от цифры.
TIME 3 байта от ‘-838:59:59’ до ‘838:59:59’ Предназначен для хранения времени суток. Значение вводится и хранится в привычном формате — hh:mm:ss, где hh — часы, mm — минуты, ss — секунды. В качестве разделителя может выступать любой символ отличный от цифры.
DATATIME 8 байт от ‘1000-01-01 00:00:00’ до ‘9999-12-31 23:59:59’ Предназначен для хранения и даты и времени суток. Значение вводится и хранится в формате — YYYY-MM-DD hh:mm:ss. В качестве разделителей могут выступать любые символы отличные от цифры.
TIMESTAMP 4 байта от ‘1970-01-01 00:00:00’ до ‘2037-12-31 23:59:59’ Предназначен для хранения даты и времени суток в виде количества секунд, прошедших с полуночи 1 января 1970 года (начало эпохи UNIX).
YEAR (M) 1 байт от 1970 до 2069 для М=2 и от 1901 до 2155 для М=4 Предназначен для хранения года. М — задает формат года. Например, YEAR (2) — 70, а YEAR (4) — 1970. Если параметр М не указан, то по умолчанию считается, что он равен 4.

Тип данных NULL

Вообще-то это лишь условно можно назвать типом данных. По сути это скорее указатель возможности отсутствия значения. Например, когда вы регистрируетесь на каком-либо сайте, вам предлагается заполнить форму, в которой присутствуют, как обязательные, так и необязательные поля. Понятно, что регистрация пользователя невозможна без указания логина и пароля, а вот дату рождения и пол пользователь может указать по желанию. Для того, чтобы хранить такую информацию в БД и используют два значения:

NOT NULL (значение не может отсутствовать) для полей логин и пароль,

NULL (значение может отсутствовать) для полей дата рождения и пол.

По умолчанию всем столбцам присваивается тип NOT NULL, поэтому его можно явно не указывать.

create table users (login varchar(20), password varchar(15), sex enum(‘man’, ‘woman’) NULL, date_birth date NULL);

Таким образом, мы создаем таблицу с 4 столбцами: логин (не более 20 символов) обязательное, пароль (не более 15 символов) обязательное, пол (мужской или женский) не обязательное, дата рождения (тип дата) необязательное.

Все, на этом урок, посвященный типам данных, закончен. У вас, возможно, остались вопросы, но они исчезнут по мере освоения дальнейшего материала, т.к. на практике все становится более понятно, чем в теории.

Научись программировать на Python прямо сейчас!

  • Научись программировать на Python прямо сейчас
  • Бесплатный курс

Если этот сайт оказался вам полезен, пожалуйста, посмотрите другие наши статьи и разделы.

Типы данных SQL Server, поддерживаемые в ArcGIS

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

В первом столбце в следующей таблице перечислены типы данных ArcGIS. Во втором столбце перечислены типы данных SQL Server , создаваемые ArcGIS. В третьем столбце показано, какие другие типы данных SQL Server (если они имеются) сопоставляются типам данных ArcGIS при просмотре таблицы, созданной вне ArcGIS (не зарегистрированной в базе геоданных). В последнем столбце при необходимости предоставляется дополнительная информация.

Большое целое (Big integer)

binary, image, timestamp, varbinary(n)

datetime2(n), datetime, smalldatetime

decimal, float, money, smallmoney

Точность (p) и масштаб (s), указанные в ArcGIS, могут повлиять на тип полученных данных, создаваемых в базе данных. Для получения более подробной информации см. раздел Типы данных полей ArcGIS.

Точность (p) и масштаб (s), указанные в ArcGIS, могут повлиять на тип полученных данных, создаваемых в базе данных. Для получения более подробной информации см. раздел Типы данных полей ArcGIS.

Укажите, следует ли использовать тип пространственных данных geometry или geography при создании класса пространственных объектов.

  • CircularString
  • CompoundCurve
  • CurvePolygon
  • GeometryCollection
Примечание:
  • SDEBINARY
  • WKB_GEOMETRY

Нельзя создать классы пространственных объектов, которые использовали бы эти типы хранилищ. В настоящее время можно просматривать классы пространственных объектов, использующие эти типы геометрии хранилищ, но эта функциональность будет удалена в будущем релизе. Используйте инструмент геообработки Изменить условия хранения , чтобы перенести классы пространственных объектов на поддерживаемые типы данных для обеспечения дальнейшего доступа к данным.

Если имеются сжатые двоичные данные, они хранятся в базе данных как тип данных INT.

Поддерживается только в базах геоданных.

Тип растровых данных ArcGIS поддерживается только в базах геоданных.

В корпоративных базах геоданных в SQL Server в базовой таблице создается целочисленное поле, а поля BLOB в связанных растровых таблицах хранят данные изображений.

int(4) when created in an enterprise geodatabase

integer with identity property when created in a database

Тип данных ArcGIS ObjectID соответствует столбцу с идентификаторами записей (ID) таблицы (или класса объектов). В таблице может быть только один такой тип.

varchar, nvarchar, varchar(max), nvarchar(max)

Сдвиг метки времени

метка времени со сдвигом часового пояса

Текстовые типы данных в SQL Server

Если вы создаете поле varchar или varchar(max) в базе данных SQL Server , то оно будет сопоставлено с типом данных ArcGIS TEXT при просмотре в ArcGIS. Если вы создаете текстовое поле в базе данных SQL Server из ArcGIS, используется nvarchar или nvarchar(max).

В случае если параметр конфигурации UNICODE_STRING в многопользовательской базе геоданных SQL Server равен FALSE, а длина текстового поля – 7999 символов и менее, используется varchar.

Если параметр конфигурации UNICODE_STRING имеет значение FALSE, а длина текстового поля больше или равна 8000 символов, используется varchar(max).

Если параметр конфигурации UNICODE_STRING имеет значение TRUE, а длина текстового поля меньше или равна 3 999 знаков, используется nvarchar.

Если параметр конфигурации UNICODE_STRING имеет значение TRUE, а длина текстового поля больше или равна 4 000 символов, используется nvarchar(max).

Геометрические типы данных в SQL Server

Как указано в таблице, ArcGIS Pro создает и может работать в SQL Server с двумя типами геометрических данных: Esri SQL Server Geometry и SQL Server Geography.

SQL Server Geometry

Здесь представлено краткое описание типа Microsoft Geometry. Более подробные сведения о типе Geometry и его использовании можно найти в документации к Microsoft SQL Server .

  • Тип Microsoft Geometry поддерживает любую систему координат X/Y.
  • Для отображения и пространственных сравнений используются вычисления на плоскости (Евклидовы) и прямолинейная интерполяция между вершинами.
  • Соответствует спецификации Open Geospatial Consortium (OGC) Simple Features for SQL версии 1.1.9 и совместимо с ISO-стандартом SQL MM.

SQL Server Geography

Здесь представлено краткое описание типа Microsoft Geography. Более подробные сведения о типе Geography и его использовании можно найти в документации к Microsoft SQL Server .

  • Тип Geography поддерживает многие стандартные географические системы координат, например, широта-долгота GPS. Microsoft требует использования SRID и географических систем координат, заданных в словаре данных SQL Server .
  • Для вычислений и пространственных сравнений используются модель эллипсоида (круглая Земля) и интерполяция отрезков линий между вершинами Great Elliptic.
  • Тип Geography использует глобальный (на сфере) экстент слоя. Координаты данных не могут выходить за пределы глобального экстента.

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

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