No Image

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

СОДЕРЖАНИЕ
0 просмотров
11 марта 2020

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

Тип данных – что это?

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

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

Классификация типов данных

Группировка данных по их типу возникла давно и была вызвана необходимостью структурирования информации для более удобной обработки. В настоящее время основу существующих типов данных образуют два: символьный и числовой.

На их базе была разработана современная классификация, включающая в себя указатели, логический, целочисленный, числовой с плавающей точкой и строковый типы данных. SQLклассификация полностью охватывает все вышеперечисленное. Однако для некоторых современных СУБД существуют дополнительные надстройки. К ним относятся Oracle и MySQL.

Базовые типы данных

Использующиеся при создании атрибутов таблиц, отвечающих стандартам языка SQL, типы данных подразделяются на 4 класса:

  • строковые значения;
  • дроби;
  • целочиселенные значения;
  • значения даты и времени.

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

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

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

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

Аналогично предыдущему типу позволяет хранить строки длиной до 255 символов. Однако отличие от CHAR в том, что для хранения значения данного типа выделяется требуемое количество памяти. То есть для строки, состоящей из 5-ти символов, потребуется 6 байт памяти. В первом же случае память для значения будет выделена согласно указанному параметру.

Используется для хранения строковых данных размером до 255 символов.

Используется для хранения текстовой информации, размер которой не превышает 65 535 букв.

Рассматриваемый тип данных аналогичен типу ТЕХТ и позволяет сохранять в базе текстовую информацию, объем которой может достигать 65 535 знаков. Но на практике используется для хранения звуковых данных, рисунков, электронной документации и пр.

Был разработан на базе типа ТЕХТ, но позволяет хранить больше данных за счет увеличенного размера до 16 777 215 букв или символов.

Используется для сохранения в базе электронных документов, размер которых не превышает отметку в 16 777 215 знаков.

Функционально аналогичен предыдущим типам, но с увеличенным объемом памяти до 4 гигабайт.

Позволяет помещать в базу данные больших объемов (4 294 967 295 символа).

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

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

Таблица дробных типов данных

Дробные SQL типы данных используются для хранения чисел с плавающей точкой. На практике, как правило, задают различные финансовые показатели. В зависимости от необходимой точности применяют один из трех представленных:

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

Используется для хранения дробных чисел с двоичной точностью.

Хранение дробных значений в виде строк.

Например, в банковских расчетах точность дробной части достигает значение в 8-мь или 10-ть знаков. Первые два типа не могут быть задействованы в данной области.

Хранение финансовых показателей в виде строк значительно облегчает решение многих задач. Однако при решении финансовых вопросов или проведении различных операций SQL преобразование типов данных имеет огромное значение. Разработчики должны обязательно учитывать тип хранения и способы обработки, чтобы данные всегда оставались неизменными.

Читайте также:  Object of type nonetype has no len

Целочисленный тип данных

Целые числа – отдельная группа чисел, образующая один из основных классов. Целочисленные SQL типы данных основываются на использовании базового типа INTEGER с некоторым расширением его свойств.

Хранение целочисленных значений, образующих диапазон [-2 31 ; 2 31 -1]

Служит для хранения чисел в диапазоне от -128 до 127

Характеризуется увеличенным диапазоном хранимых значений в размере от -32 768 до 32 767

Используется для хранения чисел размерностью от -2 2 3 до 2 2 3 -1

Охватывает диапазон целочисленных значений, начиная с -2 63 и заканчивая 2 63 -1

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

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

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

При изучении основ SQL типы данных даты и времени представляют особый интерес.

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

Главное предназначение – хранение даты в формате ГОД-МЕСЯЦ-ДЕНЬ (“ГГГГ-MM-ДД” или "уууу-mm-dd" ). Обычно значения разделены через «-», однако в качестве разделителя может быть задействован любой символ, кроме цифр.

Позволяет заносить в ячейку таблицы временные значения. Все значения задаются форматом «hh:mm:ss»

Объединяет функции предыдущих двух типов. Формат хранения представлен следующим образом: «уууу-mm-dd hh:mm:ss».

Сохраняет дату и время, исчисляемое количеством секунд, прошедших начиная с полуночи 1.01.1970 года и до заданного значения.

Используется для хранения годовых значений в двух- или четырехзначном формате.

Что ещё необходимо знать?

Все эти типы данных детально систематизированы компанией Microsoft. SQL типы данных ею разработаны более подробно.

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

Специальный указатель – NULL

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

Указатель NULL не имеет типа, а просто указывает на пустое значение в таблицах баз данных. Поэтому он может быть скомбинированным с любым из вышеперечисленных типов.

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

MySQL предоставляет следующие типы данных, которые можно разбить на ряд групп.

Символьные типы

CHAR : представляет стоку фиксированной длины.

Длина хранимой строки указыватся в скобках, например, CHAR(10) – строка из десяти символов. И если в таблицу в данный столбец сохраняется строка из 6 символов (то есть меньше установленной длины в 10 символов), то строка дополняется 4 проблеми и в итоге все равно будет занимать 10 символов

VARCHAR : представляет стоку переменной длины.

Длина хранимой строки также указыватся в скобках, например, VARCHAR(10) . Однако в отличие от CHAR хранимая строка будет занимать именно столько места, скольо необходимо. Например, если определеная длина в 10 символов, но в столбец сохраняется строка в 6 символов, то хранимая строка так и будет занимать 6 символов плюс дополнительный байт, который хранит длину строки.

Начиная с MySQL 5.6 типы CHAR и VARCHAR по умолчанию используют кодировку UTF-8, которая позволяет использовать до 3 байт для хранения символа в заивисимости от языка ( для многих европейских языков по 1 байту на символ, для ряда восточно-европейских и ближневосточных – 2 байта, а для китайского, яполнского, корейского – по 3 байта на символ).

Ряд дополнительных типов данных представляют текст неопределенной длины:

TINYTEXT : представляет текст длиной до 255 байт.

TEXT : представляет текст длиной до 65 КБ.

MEDIUMTEXT : представляет текст длиной до 16 МБ

Читайте также:  Как зайти под другим айпи

LARGETEXT : представляет текст длиной до 4 ГБ

Числовые типы

TINYINT : представляет целые числа от -127 до 128, занимает 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.

Например, в определении следующего столбца:

Число 5 – precision , а число 2 – scale , поэтому данный столбец может хранить значения из диапазона от -999.99 до 999.99.

Размер данных в байтах для DECIMAL зависит от хранимого значения.

Данный тип также имеет псевдонимы NUMERIC , DEC , FIXED .

FLOAT : хранит дробные числа с плавающей точкой одинарной точности от -3.4028 * 10 38 до 3.4028 * 10 38 , занимает 4 байта

Может принимать форму FLOAT(M,D) , где M – общее количество цифр, а D – количество цифр после запятой

DOUBLE : хранит дробные числа с плавающей точкой двойной точности от -1.7976 * 10 308 до 1.7976 * 10 308 , занимает 8 байт. Также может принимать форму DOUBLE(M,D) , где M – общее количество цифр, а D – количество цифр после запятой.

Данный тип также имеет псевдонимы REAL и DOUBLE PRECISION , которые можно использовать вместо DOUBLE.

Типы для работы с датой и временем

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". Некоторые из принимаемых форматов:

В таком формате двузначные числа от 00 до 69 воспринимаются как даты в диапазоне 2000-2069. А числа от 70 до 99 как диапазон чисел 1970 – 1999.

Для времени тип Time использует 24-часовой формат. Он может принимать время в различных форматах:

hh:mi – 3:21 (хранимое значение 03:21:00 )

Примеры значений для типов DATETIME и TIMESTAMP:

2018-05-25 (хранимое значение 2018-05-25 00:00:00 )

Составные типы

ENUM : хранит одно значение из списка допустимых значений. Занимает 1-2 байта

SET : может хранить несколько значений (до 64 значений) из некоторого списка допустимых значений. Занимает 1-8 байт.

Бинарные типы

TINYBLOB : хранит бинарные данные в виде строки длиной до 255 байт.

BLOB : хранит бинарные данные в виде строки длиной до 65 КБ.

MEDIUMBLOB : хранит бинарные данные в виде строки длиной до 16 МБ

LARGEBLOB : хранит бинарные данные в виде строки длиной до 4 ГБ

ОБЛАСТЬ ПРИМЕНЕНИЯ: SQL Server База данных SQL Azure Azure Synapse Analytics (хранилище данных SQL) Parallel Data Warehouse APPLIES TO: SQL Server Azure SQL Database Azure Synapse Analytics (SQL DW) Parallel Data Warehouse

Читайте также:  Требования к интернет провайдерам

В SQL Server SQL Server у каждого столбца, локальной переменной, выражения и параметра есть определенный тип данных. In SQL Server SQL Server , each column, local variable, expression, and parameter has a related data type. Тип данных — атрибут, определяющий, какого рода данные могут храниться в объекте: целые числа, символы, данные денежного типа, метки времени и даты, двоичные строки и так далее. A data type is an attribute that specifies the type of data that the object can hold: integer data, character data, monetary data, date and time data, binary strings, and so on.

SQL Server SQL Server предоставляет набор системных типов данных, определяющих все типы данных, которые могут использоваться в SQL Server SQL Server . supplies a set of system data types that define all the types of data that can be used with SQL Server SQL Server . В Transact-SQL Transact-SQL или Microsoft Microsoft .NET Framework .NET Framework можно также определять собственные типы данных. You can also define your own data types in Transact-SQL Transact-SQL or the Microsoft Microsoft .NET Framework .NET Framework . Псевдонимы типов данных основываются на системных типах. Alias data types are based on the system-supplied data types. Дополнительные сведения о псевдонимах типов данных см. в статье CREATE TYPE (Transact-SQL). For more information about alias data types, see CREATE TYPE (Transact-SQL). Определяемые пользователем типы данных обладают свойствами, зависящими от методов и операторов класса, который создается для них на одном из языков программирования, которые поддерживаются .NET Framework .NET Framework . User-defined types obtain their characteristics from the methods and operators of a >.NET Framework .NET Framework .

При объединении одним оператором двух выражений с разными типами данных, параметрами сортировки, точностями, масштабами или длинами, результат определяется следующим образом. When two expressions that have different data types, collations, precision, scale, or length are combined by an operator, the characteristics of result are determined by the following:

  • Тип данных результата определяется применением правил очередности типов данных к входным выражениям. The data type of the result is determined by applying the rules of data type precedence to the data types of the input expressions. Дополнительные сведения см. в разделе Приоритет типов данных (Transact-SQL). For more information, see Data Type Precedence (Transact-SQL).
  • Параметры сортировки результата определяются правилами очередности параметров сортировки, если тип данных результата — char, varchar, text, nchar, nvarchar или ntext. The collation of the result is determined by the rules of collation precedence when the result data type is char, varchar, text, nchar, nvarchar, or ntext. Дополнительные сведения см. в статье Очередность параметров сортировки (Transact-SQL). For more information, see Collation Precedence (Transact-SQL).
  • Точность, масштаб и длина результата зависят от точности, масштаба и длины входных выражений. The precision, scale, and length of the result depend on the precision, scale, and length of the input expressions. Дополнительные сведения см. в разделе Точность, масштаб и длина (Transact-SQL). For more information, see Precision, Scale, and Length (Transact-SQL).

SQL Server SQL Server предоставляет синонимы типов данных для совместимости со стандартом ISO. provides data type synonyms for ISO compatibility. Дополнительные сведения см. в статье Синонимы типов данных (Transact-SQL). For more information, see Data Type Synonyms (Transact-SQL).

Категории типов данных Data type categories

Типы данных в SQL Server SQL Server объединены в следующие категории: Data types in SQL Server SQL Server are organized into the following categories:

Точные числа Exact numerics Символьные строки в Юникоде Unicode character strings
Приблизительные числа Approximate numerics Двоичные данные Binary strings
Дата и время Date and time Прочие типы данных Other data types
Символьные строки Character strings

В зависимости от параметров хранения, некоторые типы данных в SQL Server SQL Server относятся к следующим группам: In SQL Server SQL Server , based on their storage characteristics, some data types are designated as belonging to the following groups:

Типы данных больших значений: varchar(max) и nvarchar(max) Large value data types: varchar(max), and nvarchar(max)

Типы данных больших объектов: text, ntext, image, varbinary(max) и xml Large object data types: text, ntext, image, varbinary(max), and xml

Хранимая процедура sp_help возвращает -1 в качестве значения длины для типов данных большого объема и xml. sp_help returns -1 as the length for the large-value and xml data types.

Комментировать
0 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector