какие типы данных используются в sql
Система управления базами данных SQLite. Изучаем язык запросов SQL и реляционные базы данных на примере библиотекой SQLite3. Курс для начинающих.
Часть 6: Типы данных в SQL
Здравствуйте, уважаемые посетители сайта ZametkiNaPolyah.ru. Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. В данной публикации мы рассмотрим типы данных в SQL. Хочу обратить ваше внимание на то, что различные СУБД поддерживает различный набор типов данных, поэтому это публикация включает в себя самые часто встречающиеся типы данных в SQL реализации различных СУБД.
Типы данных в SQL важно знать, чтобы правильно и грамотно проектировать базы данных, правильно выбранный типа данных в SQL может очень сильно облегчить работу другим разработчикам. Поэтому не советую вам пропускать раздел о типах данных и всегда, когда вы знакомитесь с новой СУБД, обращать внимание на типы данных, которые поддерживает программа и на то, как она эти типы данных обрабатывает.
Типы данных в SQL
Рассмотрим типы данных, которые есть в языке SQL. У каждого столбца таблицы (у атрибута) должен быть тип данных для значений, которые хранятся в столбце. Тип данных для столбца определяется при создании таблицы, а еще лучше, когда он определяется на этапе проектирования баз данных.
Язык SQL делит данные на пять типов:
Давайте посмотрим, что включает в себя каждый из типов данных SQL и какие значения они позволяют нам хранить.
Целочисленный тип данных SQL
Целочисленный тип данных в SQL довольно таки широкий и зависит от реализации СУБД, снизу в таблицы лишь некоторые типичные примеры целочисленного типа данных SQL.
Еще раз повторюсь, что набор целочисленных типов данных в SQL зависит целиком и полностью от СУБД.
Вещественный тип данных SQL
Вещественный тип данных SQL, как и целочисленный тип данных, целиком и полностью зависит от реализации СУБД.
Тип | от | до |
float | -1.79E + 308 | 1.79E + 308 |
real | -3.40E + 38 | 3.40E + 38 |
Тип данных даты и времени
Обычно в различных СУБД дата и время — это отдельно выделенный тип данных
Тип данных SQL | от | до |
datetime | Jan 1, 1753 | Dec 31, 9999 |
smalldatetime | Jan 1, 1900 | Jun 6, 2079 |
date | Сохраняет дату как June 30, 1991 | |
time | Сохраняет время как 12:30 P.M. |
Строковый тип данных SQL
Строковых типов данных в SQL может быть гораздо больше, смотрите спецификацию своей СУБД, чтобы узнать какой тип данных может быть использован для строковых значений.
Строковый тип данных SQL в кодировке юникод
Да, некоторые СУБД выделяют строковый тип данных в кодировке юникод, поскольку в строках с кодировкой юникод на запись одного символа тратится, как минимум, 8 байт, поэтому мы и выделяем строковый тип данных в SQL с кодировкой юникод.
Бинарный тип данных в SQL
Бинарный тип данных в SQL используется для хранения информации в бинарном виде (в виде последовательности байт).
Тип данных SQL | Описание |
binary | Максимальная длина 8,000 байт (все значения в столбце имеют фиксированный размер, указанный при объявлении столбца). Обратите внимание: единицы измерения типа данных binary — байты. |
varbinary | Максимальная длина 8,000 байт (все значения в столбце имеют различный размер в зависимости от количества символов, но не более того размера, что был указан при объявлении столбца). Обратите внимание: единицы измерения типа данных varbinary — байты. |
varbinary (max) | Максимальная длина 231 байт. Обратите внимание: единицы измерения типа данных varbinary (max) — байты. |
image | Максимальная длина 2,147,483,647 байт (все значения в столбце имеют различный размер в зависимости от количества символов, но не более того размера, что был указан при объявлении столбца). Обратите внимание: единицы измерения типа данных image — байты. |
Хочу обратить ваше внимание на то, что каждая СУБД поддерживает свой набор типов данных и размерностей, мы рассмотрели базовые типы данных языка SQL, в следующей теме мы рассмотрим типы данных, которые поддерживает SQLite3.
Знаковые и без знаковые типы данных в SQL
Хочу обратить ваше внимание на то, что в некоторых СУБД числовые типы данных могут делиться на знаковые и без знаковые типы данных. И это совершенно разные типы данных.
Например, если у вас в одной таблице хранится id INTEGER UNSIGNED, а в другой id_table1 INTEGER SIGNED, то связь между таблицами по этим двум столбцам вы реализовать не сможете, так как у них разные типы данных. Будьте внимательны и всегда читайте описания типов данных, когда начинаете использовать новую СУБД.
Типы данных 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 (если он существует).
Типы данных SQL
Область применения: Access 2013, Office 2013
Типы данных SQL ядра СУБД Microsoft Access состоят из 13 первичных типов данных, определяемых обработчиком баз данных Microsoft Jet и несколькими допустимыми синонимами, подходящими для этих типов данных.
В приведенной ниже таблице перечислены первичные типы данных. Синонимы определены в Зарезервированных словах SQL ядра СУБД Microsoft Access.
1 байт на каждый символ
В поле этого типа может храниться любой тип данных. Нет перевода данных (например, в текст). То, как данные входят в двоичное поле, определяет, как они будут выглядеть в качестве выходных.
Значения «Да» и «Нет» и поля, содержащие только одно из двух значений.
Целое число от 0 до 255.
Масштаб целого числа от 922 337 203 685 477,5808 до 922 337 203 685 477,5807.
DATETIME (см. DOUBLE)
Значение даты и времени между годами от 100 до 9999.
Уникальный идентификационный номер, используемый с удаленными вызовами процедур.
Значение с плавающей запятой одинарной точности с диапазоном от –3,402823E38 до –1,401298E-45 для отрицательных значений, от 1,401298E-45 до 3,402823E38 для положительных значений, а также 0.
Значение с плавающей запятой двойной точности с диапазоном от –1,79769313486232E308 до –4,94065645841247E-324 для отрицательных значений, от 4,94065645841247E-324 до 1,79769313486232E308 для положительных значений, а также 0.
Короткое целое число в диапазоне от –32 768 до 32 767 (см. примечания).
Длинное целое число в диапазоне от –2 147 483 648 до 2 147 483 647 (см. примечания).
Тип точных числовых данных, содержащих значения от 1028 – 1 до –1028 – 1. Можно задать два параметра: precision (в диапазоне от 1 до 28) и scale (в диапазоне от 0 до заданного значения параметра precision). По умолчанию значения параметров precision и scale равны 18 и 0, соответственно.
2 байта на каждый символ (см. «Примечания»)
Значение от 0 до 2,14 гигабайт.
В соответствии с требованием
Значение от 0 до 2,14 гигабайт. Используется для объектов OLE.
2 байта на каждый символ (см. «Примечания»)
Значение от 0 до 255 символов.
Типы данных SQL
Типы данных SQL
Типы данных SQL разделяются на три группы:
— строковые;
— с плавающей точкой (дробные числа);
— целые числа, дата и время.
Типы данных MySQL
Типы данных MySQL разделяются на следующие типы:
Типы данных Oracle
Типы данных Oracle разделяются на следующие группы:
ANSI SQL стандарт распознает только текст и число, в то время как большинство коммерческих программ используют другие специальные типы, такие как DATЕ и TIME — фактически почти стандартные типы. Некоторые пакеты также поддерживают такие типы, как, например, MONEY и BINARY. Типы данных, распознаваемые с помощью ANSI, состоят из строк символов и различных типов чисел, которые могут классифицироваться как точные числа и приблизительные числа.
CHARACTER(length) определяет спецификацию строк символов, где length задает длину строк заданного типа. Значения этого типа должны быть заключены в одиночные кавычки. Большинство реализаций поддерживают строки переменной длины для типов данных VARCHAR и LONG VARCHAR (или просто LONG).
В то время, как поле типа CHAR всегда может распределить память для максимального числа символов, которое может сохраняться в поле, поле VARCHAR при любом количестве символов может распределить только определенное количество памяти, чтобы сохранить фактическое содержание поля, хотя SQL может установить некоторое дополнительное пространство памяти, чтобы следить за текущей длиной поля. Поле VARCHAR может быть любой длины, включая реализационно-определяемый максимум. Этот максимум может меняться от 254 до 2048 символов для VARCHAR и до 16000 символов для LONG. LONG обычно используется для текста пояснительного характера или для данных, которые не могут легко сжиматься в простые значения полей; VARCHAR может использоваться для любой текстовой строки, чья длина может меняться.
Извлечение и модифицирование полей VARCHAR — более сложный, и, следовательно, более медленный процесс, чем извлечение и модифицирование полей CHAR. Кроме того, некоторое количество памяти VARCHAR, остается всегда неиспользованной для гарантии вмещения всей длины строки. При использовании таких типов следует предусматривать возможность полей к объединению с другими полями.
Точные числовые типы — это числа, с десятичной точкой или без десятичной точки, которые могут представляться в виде [+|-] [. ] и специфицироваться как:
DECIMAL(precision [, scale]) — аргумент размера имеет две части: точность и масштаб. Масштаб не может превышать точность. Точность указывает сколько значащих цифр имеет число. Масштаб указывает максимальное число цифр справа от десятичной точки. Масштаб = нулю делает поле эквивалентом целого числа.
NUMERIC(precision [, scale]) — такое же как DECIMAL за исключением того, что максимальное десятичное не может превышать аргумента точности
INTEGER — число без десятичной точки. Эквивалентно DECIMAL, но без цифр справа от десятичной точки, т.е. с масштабом равным 0. Аргумент размера не используется (он автоматически устанавливается в реализационно-зависимое значение).
SMALLINT — такое же как INTEGER, за исключением того, что, в зависимости от реализации, размер по умолчанию может ( или не может ) быть меньше чем INTEGER.
Приблизительные числовые типы — это числа в показательной (экспоненциальной по основанию 10) записи, представляемые как Е и специфицирущиеся следующим образом:
FLOAT[(precision)] — число с плавающей запятой. Аргумент размера состоит из одного числа, определяющего минимальную точность.
REAL — такое же как FLOAT, за исключением того, что никакого аргумента размера не используется. Точность устанавливается реализационно-зависимой по умолчанию.
DOUBLE PRECISION — такое же как REAL, за исключением того, что реализационно-определяемая точность для DOUBLE PRECISION должна превышать реализационно-определяемую точность REAL.
Типы данных Access
Типы данных Access разделяются на следующие группы:
Типы данных SQL Server
Типы данных, используемые в SQL Server:
Типы данных PostgreSQL
База данных PostgreSQL поддерживает большинство типов данных SQL2003 плюс огромный набор типов для хранения пространственных и геометрических данных. PostgreSQL может похвастаться богатым набором операторов и функций, специально предназначенных для геометрических типов данных. Сюда входят такие средства, как поворот, поиск пересечений и масштабирование. В PostgreSQL также есть поддержка дополнительных версий существующих типов данных, которые характерны тем, что занимают меньше места на диске, чем соответствующие исходные версии. Например, в PostgreSQL предлагается несколько вариантов типа INTEGER для хранения больших и небольших чисел, соответственно занимающих больше или меньше места.
Вы должны войти, чтобы оставить комментарий.
Типы данных Transact-SQL
Все значения в столбце должны быть одного типа данных. (Единственным исключением из этого правила являются значения типа данных SQL_VARIANT.) Используемые в Transact-SQL типы данных можно разбить на следующие категории:
временные типы (даты и/или времени);
прочие типы данных.
Все эти категории данных рассматриваются далее в последующих разделах.
Числовые типы данных
Как и следовало ожидать по их названию, числовые типы данных применяются для представления чисел. Эти типы и их краткое описание приводятся в таблице ниже:
Тип данных | Описание | |||||
---|---|---|---|---|---|---|
INTEGER |
Тип данных | Описание | ||
---|---|---|---|
CHAR[(n)] |
Тип данных | Описание |
---|---|
BINARY[(n)] |