Типы данных SQL разделяются на три группы:
строковые ;
с плавающей точкой (дробные числа );
целые числа , дата и время .

  1. Типы данных SQL строковые
    Типы данных SQL Описание
    CHAR(size) Строки фиксированной длиной (могут содержать буквы, цифры и специальные символы). Фиксированный размер указан в скобках. Можно записать до 255 символов
    VARCHAR(size)
    TINYTEXT Может хранить не более 255 символов.
    TEXT
    BLOB Может хранить не более 65 535 символов.
    MEDIUMTEXT
    MEDIUMBLOB Может хранить не более 16 777 215 символов.
    LONGTEXT
    LONGBLOB Может хранить не более 4 294 967 295 символов.
    ENUM(x,y,z,etc.) Позволяет вводить список допустимых значений. Можно ввести до 65535 значений в SQL Тип данных ENUM список. Если при вставке значения не будет присутствовать в списке ENUM , то мы получим пустое значение.
    Ввести возможные значения можно в таком формате: ENUM ("X", "Y", "Z")
    SET SQL Тип данных SET напоминает ENUM за исключением того, что SET может содержать до 64 значений.
  2. Типы данных SQL с плавающей точкой (дробные числа) и целые числа
    Типы данных SQL Описание
    TINYINT(size) Может хранить числа от -128 до 127
    SMALLINT(size) Диапазон от -32 768 до 32 767
    MEDIUMINT(size) Диапазон от -8 388 608 до 8 388 607
    INT(size) Диапазон от -2 147 483 648 до 2 147 483 647
    BIGINT(size) Диапазон от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807
    FLOAT(size,d) Число с плавающей точкой небольшой точности.
    DOUBLE(size,d) Число с плавающей точкой двойной точности.
    DECIMAL(size,d) Дробное число, хранящееся в виде строки.
  3. Типы данных SQL — Дата и время

Типы данных MySQL

Типы данных MySQL разделяются на следующие типы:

  • Числовые типы данных
    Типы данных Байт От До
    TINYINT 1 -128 127
    SMALLINT 2 -32768 32767
    MEDIUMINT 3 -8388608 8388607
    INT 4 -2147483648 2147483647
    BIGINT 8 -9223372036854775808 9223372036854775807
  • Типы данных даты и времени
  • Символьные Типы данных

Типы данных Oracle

Типы данных Oracle

  • СНAR – фиксированные текстовые строки до 2000 байт. Значение типа CHAR дополняется до указанной длины пробелами.
  • VARCHAR 2 — текстовые строки переменной длины до 4000 байт.
  • NUMBER — числовые данные.
  • DECIMAL — числовые данные
  • DATE — используется для хранения дат.
  • RAW — используется для хранения двоичных данных до 2000 байт.
  • LONG — используется для хранения текстовых данных длиной до 2 ГБ
  • LONG RAW — используется для хранения двоичных данных до 2 ГБ
  • ROWID — используется для хранения идентификаторов ROWID базы данных Oracle в специальном формате (адреса строк таблицы).
  • BLOB — сохраняется до 4 ГБ двоичных данных. Данные этого типа хранятся вне таблицы, а в таблице Oracle находятся лишь указатели на объекты
  • CLOB , NCLOB — сохраняется до 4 ГБ текстовых данных. NCLOB – это тип данных NLS большой фиксированной длины (NLS означает National Language Set – набор для национальных языков – и используется для работы в Oracle на языках, отличных от английского. В английском для хранения одного символа нужен 1 байт, а в некоторых языках мира с наборами больших символов (японском, китайском, корейском), языках, где текст читается справа налево (арабский, иврит) для хранения одного символа требуется несколько байт). Данные этого типа хранятся вне таблицы, а в таблице находятся лишь указатели на объекты.
  • BFILE — сохраняется до 4 ГБ неструктурированных данных, причем в файлах операционной системы (внешние файлы).

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 разделяются на следующие группы:

  • Текстовый – максимально 255 байтов.
  • Мемо — до 64000 байтов.
  • Числовой — 1,2,4 или 8 байтов.Для числового типа размер поля м.б. следующим:
    • байт — целые числа от -0 до 255, занимает при хранении 1 байт
    • целое — целые числа от -32768 до 32767, занимает 2 байта
    • длинное целое — целые числа от -2147483648 до 2147483647, занимает 4 байта
    • с плавающей точкой — числа с точностью до 6 знаков от –3,4*1038 до 3,4*1038, занимает 4 байта
    • с плавающей точкой — числа с точностью от –1,797*10308 до 1,797*10308, занимает 8 байт
  • Дата-время — 8 байтов
  • Денежный — 8 байтов, данные о денежных суммах, хранящиеся с 4 знаками после запятой.
  • Счетчик — уникальное длинное целое, генерируемое Access при создании каждой новой записи — 4 байта.
  • Логический — логические данные 1бит.
  • Поле объекта OLE — до 1 гигабайта, картинки, диаграммы и другие объекты OLE из приложений Windows . Объекты OLE могут быть связанными или внедренными.
  • Гиперссылки — поле, в котором хранятся гиперссылки. Гиперссылка может быть либо типа UNC (стандартный формат для указания пути с включением сетевого сервера файлов), либо URL(адрес объекта, документа, страницы или объекта другого типа в Интернете или Интранете. Адрес URL определяет протокол для доступа и конечный адрес).
  • Мастер подстановок — поле, позволяющее выбрать значение из другой таблицы Accesss или из списка значений, используя поле со списком. Чаще всего используется для ключевых полей. Имеет тот же размер, что и первичный ключ, являющийся также и полем подстановок, обычно 4 байта. (Первичный ключ – одно или несколько полей, комбинация значений которых однозначно определяет каждую запись в таблице Accesss . Не допускает неопределенных.Null. значений, всегда должен иметь уникальный индекс. Служит для связывания таблицы с вторичными ключами других таблиц).

Типы данных SQL Server

Microsoft SQL Server SQL 2003. Также SQL Server поддерживает дополнительные типы данных , используемые для однозначной идентификации строк данных в таблице и на многих серверах, например UNIQUEIDENTIFIER , что соответствует аппаратной философии «роста в ширину», исповедуемой Microsoft (т. е. внедрение базы на множестве серверов на платформах Intel), вместо «роста в высоту» (т. е. внедрение на одном огромном мощном UNIX-сервере или Windows Data Center Server).

Типы данных , используемые в SQL Server:

  • BIGINT (тип данных SQL2003: B1GINT)
    Хранит целые числа со знаком и без знака в диапазоне от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807. Занимает 8 байт. См. тип INT , где указаны правила свойства IDENTITY , также применимые к типу BIGINT .
  • BINARY[(n)] (тип данных SQL2003: BLOB)
    Хранит двоичное значение фиксированной длины от 1 до 8000 байт. Значение типа BINARY занимает п + 4 байта.
  • BIT (тип данных SQL2003: BOOLEAN)
    Хранит значения 1, 0 или NULL, которое обозначает «unknown». В одном байте может храниться до 8 значений из столбцов типа BIT таблицы. В еще одном байте можно разместить дополнительные 8 значений типа BIT Столбцы типа BIT нельзя индексировать.
  • CHAR[(n)] , CHARACTER[(n)] (тип данных SQL2003: CHARACTER[(n)])
    Хранит символьные данные фиксированной длины от 1 до 8000 символов. Все неиспользованное место по умолчанию заполняется пробелами. (Автоматическое заполнение пробелами можно отключить.) Тип занимает n байт.
  • CURSOR (тип данных SQL2003: отсутствует)
    Специальный тип данных, используемый для описания курсора в форме переменной или параметра хранимой процедуры OUTPUT. Тип нельзя использовать в инструкции CREATE TABLE. Тип CURSOR может принимать значение NULL.
  • DATETIME (тип данных SQL2003: TIMESTAMP)
    Хранит значение даты и времени в диапазоне с 01-01-1753 00:00:00 до 31-12-9999 23:59:59. Для хранения требуется 8 байт.
  • DECIMAL (p. s) , DEC (p. s) , NUMERIC (p, s) (тип данных SQL2003: DECIMAL (p, s) , NUMERIC (p. s))
    Хранит десятичные дроби длиной до 38 цифр. Значения р и s определяют, соответственно, точность и масштаб. Масштаб по умолчанию равен 0. Занимаемое значением место определяется используемой точностью.
    При точности 1-9 используется 5 байт.
    При точности 10-19 используется 9 байт.
    При точности 20-28 используется 13 байт.
    При точности 29-39 используется 17 байт.
    См. тип INT, где указаны правила свойства IDENTITY, также применимые к типу DECIMAL .
  • DOUBLE PRECISION (тип данных SQL2003: отсутствует)
    Синоним FLOAT(53) .
  • FLOAT[(n)] (тип данных SQL2003: FLOAT , FLOAT (n))
    Хранит значения с плавающей точкой в диапазоне от-1.79Е + 308 до 1.79Е + 308. Точность, определяемая параметром и, может изменяться в пределах от 1 до 53. Для хранения 7 цифр (n — от 1 до 24) требуется 4 байта. Значения, превышающие 7 цифр, занимают 8 байт.
  • IMAGE (тип данных SQL2003: BLOB)
    Хранит двоичное значение переменной длины до 2 147 483 647 байт. Этот тип данных часто используется для хранения графики, звука и файлов, таких, как документы MS Word и электронные таблицы MS Excel. Значениями типа IMAGE нельзя свободно манипулировать. Столбцы типа IMAGE и TEXT имеют множество ограничений на способы использования. См. описание типа TEXT, где приведен список команд и функций, которые применимы и к типу IMAGE.
  • INT (тип данных SQL2003: INTEGER)
    Хранит целые числа со знаком или без знака в диапазоне от -2 147 483 648 до 2 147 483 647. Занимает 4 байта. Все целочисленные типы данных, а также типы, хранящие десятичные дроби, поддерживают свойство IDENTITY, identity — это автоматически инкрементируемый идентификатор строки. Обращайтесь к разделу «Инструкция CREATE/ALTER TABLE » главы 3.
  • MONEY (тип данных SQL2003: отсутствует)
    Хранит денежные значения в диапазоне от -922337203685477.5808 до 922337203685477.5807. Значение занимает 8 байт.
  • NCHAR(n) , NATIONAL CHAR(n) , NATIONAL CHARACTER(n) (тип данных SQL2003: NATIONAL СНАRACTER(n))
    Хранит данные формата UNICODE фиксированной длины до 4000 символов. Для хранения требуется n*2 байт.
  • NTEXT , NATIONAL TEXT (тип данных SQL2003: NCLOB)
    Хранит фрагменты текста в формате UNICODE длиной до 1 073 741 823 символа. См. описание типа TEXT, где приведен список команд и функций, которые применимы и к типу NTEXT
  • NUMERIC(p, s) (тип данных SQL2003: DECIMAL (p, s))
    Синоним типа DECIMAL. См. описание типа INT, где приведены правила, относящиеся к свойству IDENTITY.
  • NVARCHAR(n) , NATIONAL CHAR VARYING(n) , NATIONAL CHARACTER VARYING(n) (тип данных SQL2003: NATIONAL CHARACTER VARYING(n))
    Хранит UNICODE-данные переменной длины до 4000 символов.
    Занимаемое место вычисляется как удвоенное значение длины всех символов, вставленных в поле (число символов * 2).
    В SQL Server системный параметр SET ANSI_PADDINGX для полей NCHAR и NVARCHAR всегда установлен (ON).
  • REAL , FLOAT(24) (тип данных SQL2003: REAL)
    Хранит значения с плавающей точкой в диапазоне -3.40Е+38 до 3.40Е+38. Зани¬мает 4 байта. Тип REAL функционально эквивалентен типу FLOAT(24).
  • ROWVERSION (тип данных SQL2003: отсутствует)
    Уникальное число, хранимое в базе данных, которое обновляется всякий раз, когда обновляется строка, В более ранних версиях называется TIMESTAMP.
  • SMALLDATETIME (тип данных SQL2003: отсутствует)
    Хранит дату и время в диапазоне от ’01-01-1900 00:00′ до ’06-06-2079 23:59′ с точностью до минуты. (Минуты округляются до меньшего значения, если значе-ние секунд 29.998 и менее, в противном случае они округляются до большего значения.) Значение занимает 4 байта.
  • SMALLINT (тип данных SQL2003: SMALLINT)
    Хранит целые числа со знаком или без знака в диапазоне от -32 768 до 32 767. Занимает 2 байта. См. описание типа INT, где приведены правила, относящиеся к свойству IDENTITY, которые также применимы и к этому типу.
  • SMALLMONEY (тип данных SQL2003: отсутствует)
    Хранит денежные значения в диапазоне от 214748.3648 до -214748.3647. Значе-ния занимают 4 байта.
  • SQLVARIANT (тип данных SQL2003: отсутствует)
    Хранит значения, относящиеся к другим поддерживаемым SQL Server типам данных, за исключением типов TEXT, NTEXT, ROWVERSION и других значений типа SQL VARIANT. Может хранить до 8016 байт данных, поддерживаются значения NULL и DEFAULT. Тип SQL VARIANT используется в столбцах, параметрах, переменных и возвращаемых функциями и хранимыми процедур, ми значениях.
  • TABLE (тип данных SQL2003: отсутствует)
    Специальный тип, хранящий получившийся в результате работы последнего про¬цесса набор данных. Используется исключительно для процедурной обработки и не может применяться в инструкциях CREATE TABLE. Этот тип данных умень¬шает необходимость создания временных таблиц во многих приложениях. Может уменьшить необходимость перекомпиляций процедур, ускоряя, таким образом, выполнение хранимых процедур и пользовательских функций.
  • TEXT (тип данных SQL2003: CLOB)
    Хранит очень большие фрагменты текста длиной до 2 147 483 647 символов. Значениями типа ТЕХТн IMAGE часто гораздо труднее манипулировать, чем, скажем, значениями типа VARCHAR. Например, нельзя создавать индекс по столбцу типа TEXT или IMAGE. Значениями типа TEXT можно манипулировать при помощи функций DATALENGTH, PATINDEX, SUBSTRING, TEXTPTR и ТЕХTVALID, а также команд READTEXT,SET TEXTSIZE, UPDATETEXT и WRITETEXT.
  • TIMESTAMP (тип данных SQL2003: TIMESTAMP)
    Хранит автоматически генерируемое двоичное число, обеспечивающее уникальность в текущей базе данных и, следовательно, отличающееся от типа данных TIMESTAMP стандарта ANSI. Тип TIMESTAMP занимает 8 байт. В настоящее время вместо TIMESTAMP для однозначной идентификации строк лучше применять значения типа ROWVERSION.
  • TINYINT
    Хранит целые числа без знака в диапазоне от 0 до 255 и занимает 1 байт. См. описание типа INT , где приведены правила, относящиеся к свойству IDENTITY , которые также применимы и к этому типу.
  • UNIQUEIDENTIFIER (тип данных SQL2003: отсутствует)
    Представляет собой значение, уникальное для всех баз данных и всех серверов. Представлено в виде хххххххх-хххх-хххх-хххх-хххххххххххх, в котором каждый «х» представляет собой шестнадцатеричное число в диапазоне 0-9 или а — f. Единственными операциями, которые можно производить над значениями этого типа, являются сравнение и проверка на NULL. В столбцах этого типа можно использо¬вать ограничения и свойства, за исключением свойства IDENTITY.
  • VARBINARY[(n)] (тип данных SQL2003: BLOB)
    Представляет собой двоичное значение переменной длины, до 8000 байт. Занимаемое место соответствует размеру вставленных данных плюс 4 байта.
  • VARCHARf(n)] , CHAR VARYING [(n)] , CHARACTER VARYING [(n)] (тип данных SQL2003: CHARACTER VARYING (n))
    Хранит символьные данные фиксированной длины размером от 1 до 8000 символов. Занимаемое место равно реальному размеру введенного значения в байтах, а не значению n.

Типы данных PostgreSQL

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

  • BJGSERJAL
  • BIT (тип данных SQL2003: BIT)
    Битовая строка фиксированной длины.
  • BIT VARYING(n) varbit(n) (тип данных SQL2003: BIT VARYING)
    Обозначает битовую строку переменной длины в n бит.
  • BOOL , BOOLEAN (тип данных SQL2003: BOOLEAN)
    Хранит логическое булево значение (true/false/unknown). Рекомендуемыми значе-ниями являются ключевые слова TRUE и FALSE, хотя PostgreSQL допускает применение нескольких литеральных значений для «true»: TRUE, t, true, у, yes и 1. Допус¬тимыми значениями для «false» являются: FALSE, f, false, n, no и 0.
  • BOX ((xl, у I), (x2, y2)) (тип данных SQL2003: отсутствует)
    Хранит значения, определяющие прямоугольную область на плоскости. Значения занимают 32 байта и представлены в виде ((xl, yl), (х2, у2)), что соответствует противоположным углам прямоугольника (правый верхний и левый нижний соот-ветственно). Внешние скобки являются необязательными.
  • BYTEA (тип данных SQL2003: BINARY LARGE OBJECT)
    Сырые, двоичные данные, используемые, например, для хранения графики, звука и документов. Для хранения этого типа требуется 4 байта плюс реальный размер битовой строки.
  • CHAR(n) , СНАRA CTER(n) (тип данных SQL2003: CHARACTER(n))
    Содержит символьную строку фиксированной длины, дополняемую пробелами до длины n. Попытка вставить значение, превышающее по длине n, приводит к ошибке (если только лишние символы не представляют собой пробелы, которые в таком случае обрезаются так, чтобы длина составила п символов).
  • CIDR(x.x.x.xZy) (тип данных SQL2003: отсутствует)
    Описывает адрес сети или хоста в формате версии 4 протокола IP Адрес занимает 12 байт. Допустимыми значениями являются любые допускаемые протоколом IPv4 сетевые адреса. В типе CIDR данные представлены в форме х.х.х.х/у, где х.х.х.х — IP-адрес, а у — количество бит сетевой маски. В CIDR не допускается использование ненулевых битов справа от нулевого бита сетевой маски.
  • CIRCLE х, у, r (тип данных SQL2003: отсутствует)
    Описывает окружность на плоскости. Значения занимаю!’ 24 байта и представлены в форме х, у, r. Значения* и у представляют собой координаты центра окружности, а r — длину ее радиуса. Значения х, у и r при желании можно ограничить скобками или фигурными скобками.
  • DATE (тип данных SQL2003: DATE)
    Хранит календарную дату (год, день и месяц) без времени суток. Занимает 4 байта. Даты должны быть в диапазоне от 4713 до п. э. до 32767 и. э. Предел разрешения для типа DATE, естественно, один день.
  • DATETIME (тип данных SQL2003: T1MESTAMP)
    Хранит календарную дату с указанием времени суток.
  • DECIMAL [(p, s)], NUMERIC [(p. s)] (тип данных SQL2003: DECIMAL (PRECISION SCALE), NUMERIC (x, p))
    Хранит точные числовые значения с точностью (р), равной 9, и масштабом (s), равным нулю, без верхнего предела.
  • FLOAT4, REAL (тип данных SQL2003: FLOAT(p))
    Хранит значения с плавающей точкой с точностью, равной 8 или менее, и 6 знаками после занятой.
  • FLOAT8, DOUBLE PRECISION (тип данных SQL2003: FLOAT(p), 7
  • INET (х.х.х.х/у)
    Хранит адрес сети или хоста в формате версии 4 протокола IP. Адрес занимает 12 байт. Допустимыми значениями являются любые допускаемые протоколом IPv4 сетевые адреса, х.х.х.х — IP-адрес, у — количество бит сетевой маски. По умолчанию сетевая маска равна 32. В отличие от CIDR, в INET допускается использование ненулевых битов справа от сетевой маски.
  • SMALLINT (тип данных SQL2003: SMALLINT)
    Хранит двухбайтные целые числа со знаком и без знака в диапазоне от -32 768 до 32 767. Синоним — INT72.
  • INTEGER (тип данных SQL2003: INTEGER)
    Хранит 4-байтпые целые числа со знаком или без знака в диапазоне от -2 147 483 648 до 2 147 483 647. Синоним — 1NT4.
  • INT8 (тип данных SQL2003: отсутствует)
    Хранит 8-байтные целые числа со знаком или без знака в диапазоне от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807.
  • INTERVAL(p) (тип данных SQL2003: отсутствует)
    Хранит общеупотребимые значения интервалов времени в диапазоне от -178 000 000 до 178 000 000 лет. Занимает 12 байт. Самым низким разрешением типа INTERVAL является микросекунда. Этот тип хранения даты отличается от стандарта ANSI, который требует указывать спецификатор интервала, например INTERVAL YEAR ТО MONTH.
  • LINE ((xl, у I), (x2, y2)) (тип данных SQL2003: отсутствует)
    Хранит информацию о прямой линии на плоскости, без конечных точек. Значения занимают 32 байта и представлены в виде ((xl, yl), (х2, у2)), что обозначает начальную и конечную точку линии. Скобки в синтаксисе типа LINE являются необязательными.
  • LSEG ((xl, yl), (х2, у2)) (тип данных SQL2003: отсутствует)
    Хранит отрезок прямой линии (line segment, LSEG) на плоскости, с конечными точками. Значения занимают 32 байта и представлены в виде ((xl, yl), (х2, у2)). Скобки в синтаксисе типа LSEG являются необязательными. Для интересующих-ся: «отрезок» — это то, что большинство людей обычно называют линией. Например, линии на игровом поле в действительности являются отрезками.
  • MACADDR (тип данных SQL2003: отсутствует)
    Может хранить значение МАС-адреса сетевой карты компьютера. Занимает 6 байт.
    Тип MACADDR допускает несколько форм адреса, соответствующих промышленным
    стандартам, например:
    08002В:010203
    08002В-010203
    0800.2В01.0203
    08-00-2В-01-02-03
    08:00:2В:01:02:03
  • MONEY, DECIMAL(9,2) (тип данных SQL2003: отсутствует)
    Хранит денежные значения в формате США в диапазоне от -21474836.48 до 21474836.47.
  • NUMERIC [(p, s)], DECIMAL[(p, s)] (тип данных SQL2003: отсутствует)
    Хранит точные числовые данные с точностью (р) и масштабом (s).
  • OID (тип данных SQL2003: отсутствует)
    Хранит уникальные идентификаторы объектов.
  • PATH ((xl, у I), … п), Path ((xl, yl), … n) (тип данных SQL2003: отсутствует)
    Описывает открытый или закрытый геометрический контур на плоскости. Значения представлены в виде ((xl, yl), … п) и занимают 4 + 32и байт. Каждая пара значений (х, у) соответствует точке контура. Контуры бывают либо открытыми, когда первая и последняя точка не совпадают, или закрытыми, когда первая и послед¬няя точка совпадают. Для обозначения закрытых контуров выражение заключают в круглые скобки, а для обозначения открытых — в квадратные.
  • POINT (х, у) (тип данных SQL2003: отсутствует)
    Хранит значение, описывающее геометрическую точку на плоскости. Занимает 16 байт. Значения представлены в виде (х, у). Точка является основой других двухмерных пространственных типов данных, поддерживаемых в PostgreSQL. Скобки в синтаксисе этого типа являются необязательными.
  • POLYGONE ((x1,y1), … n) (тип данных SQL2003: отсутствует)
    Хранит значение, описывающее закрытый геометрический контур на плоскости. Занимает 4 + 32n байт. Значения представлены в виде ((xl, yl), … n). По сути тип POLYGONE эквивалентен типу, используемому для хранения закрытого контура.
  • SERIAL, SER1AL4 (тип данных SQL2003: отсутствует)
    Хранит автоматически инкрементируемое, уникальное целое значение ID, приме¬няемое для индексирования и перекрестных ссылок. Этот тип хранит до 4 байт данных (диапазон чисел от 1 до 2 147 483 647). Таблицы, определенные с этим типом данных, нельзя удалять напрямую. Сначала нужно подать команду DROP SEQUENCE, а только после этого подавать команду DROP TABLE.
  • SER1AL8, BIGSERIAL (тип данных SQL2003: отсутствует)
    Хранит автоматически инкрементируемое, уникальное целое значение ID, применяемое для индексирования и перекрестных ссылок. Этот тип хранит до 8 байт данных (диапазон чисел от 1 до 9 223 372 036 854 775 807). Таблицы, определенные с этим типом данных, нельзя удалять напрямую. Сначала нужно подать команду DROP SEQUENCE, а только после этого подавать команду DROP TABLE.
  • TEXT (тип данных SQL2003: CLOB)
    Хранит большой массив символьных строк переменной длины до 1 гигабайта. PostgreSQL автоматически сжимает строки типа TEXT, поэтому место, занимаемое на диске, может быть меньше, чем размер строк.
  • TIME [(p)] (тип данных SQL2003: TIME) Хранит время суток либо без учета часового пояса (используется 8 байт), либо с учетом часового пояса, в котором находится сервер базы данных (используется 12 байт). Допустимый диапазон значений: 00:00:00.00 — 23:59:59.99. Наименьшее значение — 1 микросекунда. Заметьте, что в большинстве систем UNIX информация о часовом поясе доступна только для дат с 1902 по 2038 год.
  • TIMESPAN (тип данных SQL2003: отсутствует)
    Хранит значение, представляющее собой конкретный промежуток времени. Наи¬более похожим на тип TIMESPAN в стандарте ANSI является тип INTERVAL.
  • TIMESTAMP [(р)] (тип данных SQL2003: TIMESTAMP )
    Хранил дату и время с учетом и без учета часового пояса сервера базы данных. Допустимый диапазон значений — от 4713 до н. э. до 1 465 001 н. э. Одно значение типа TIMESTAMP занимает 8 байт. Самое наименьшее значение — 1 микросекунда. Заметьте, что в большинстве систем UNIX информация о часовом поясе доступна только для дат с 1902 по 2038 год.
  • TIMETZ (тип данных SQL2003: TIME WITH TIMEZONE)
    Хранит значение времени суток с учетом часового пояса.
  • VARCHAR(n) , CHARACTER VARYLNG(n) (тип данных SQL2003: CHARACTER VARYING(n))
    Хранит символьные строки переменной длины длиной до п. Заключительные пробелы не сохраняются.

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

Типы данных SQL

Каждый столбец в таблице базы данных должен иметь имя и тип данных.

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

Список типов данных MySQL

В MySQL существует три основных типа данных: текст, число и дата.

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

Тип Описание
CHAR(size) Удерживает строку фиксированной длины (может содержать буквы, цифры и специальные символы). Фиксированный размер указан в скобках. Может хранить до 255 символов
VARCHAR(size) Удерживает строку переменной длины (может содержать буквы, цифры и специальные символы). Максимальный размер указан в скобках. Может хранить до 255 символов. Если вы ставите большее значение, чем 255, оно будет преобразовано в тип TEXT
TINYTEXT Удерживает строку длиной не более 255 символов
TEXT Удерживает строку с максимальной длиной 65535 символов
BLOB Для BLOB (Binary Large OBjects). Сохраняет до 65535 байт данных
MEDIUMTEXT Удерживает строку с максимальной длиной 16,777,215 символов
MEDIUMBLOB Для BLOB (Binary Large OBjects). Удерживает до 16 777 215 байт данных
LONGTEXT Удерживает строку с максимальной длиной 4 294 967 295 символов
LONGBLOB Для BLOB (Binary Large OBjects). Сохраняет до 4 294 967 295 байтов данных
ENUM(a,b,c,etc.)

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

Вы вводите возможные значения в этом формате: ENUM ("a", "b", "c")

SET Подобно ENUM, за исключением того, что SET может содержать до 64 элементов списка и может хранить несколько вариантов

Типы числовых данных

Тип Описание
TINYINT(size) От -128 до 127. От 0 до 255 UNSIGNED *. Максимальное количество цифр может быть указано в круглых скобках
SMALLINT(size) -32768 до 32767 нормально. 0 до 65535 UNSIGNED*. Максимальное количество цифр может быть указано в скобках
MEDIUMINT(size) -8388608 до 8388607 normal. 0 до 16777215 UNSIGNED*. Максимальное количество цифр может быть указано в скобках
INT(size) -2147483648 до 2147483647 normal. 0 до 4294967295 UNSIGNED*. Максимальное количество цифр может быть указано в скобках
BIGINT(size) -9223372036854775808 до 9223372036854775807 normal. 0 до 18446744073709551615 UNSIGNED *. Максимальное количество цифр может быть указано в скобках
FLOAT(size,d) Небольшое число с плавающей запятой. Максимальное количество цифр может быть указано в параметре размера. Максимальное количество цифр справа от десятичной точки указано в параметре d
DOUBLE(size,d) Большое число с плавающей запятой. Максимальное количество цифр может быть указано в параметре размера. Максимальное количество цифр справа от десятичной точки указано в параметре d
DECIMAL(size,d) DOUBLE хранится как строка, позволяющая фиксированную десятичную точку. Максимальное количество цифр может быть указано в параметре размера. Максимальное количество цифр справа от десятичной точки указано в параметре d

UNSIGNED - дополнительный параметр целочисленного типа. Обычно целое число переходит от отрицательного к положительному. Добавление атрибута UNSIGNED будет перемещать этот диапазон вверх так, чтобы он начинался с нуля вместо отрицательного числа.

Для начала разберём что такое «типы данных».
Типы данных определяют: какие значения могут храниться в столбце и сколько они будут занимать места в памяти. При создании таблицы для всех ее столбцов необходимо указать определенный тип данных.
Основные используемые в SQL типы можно условно разделить на несколько категорий:

  • Целочисленные типы;
  • Дробные типы;
  • Символьные типы;
  • Денежные типы;
  • Временные типы(дата/время);

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

Дробные типы данных

Символьный тип данных

Тип данных Описание
CHAR(size) Используется для хранения строк. Параметр в скобках позволяет фиксировать длину хранимой строки. Максимальный размер в байтах, который можно задать для строки, – 255.
VARCHAR (size) Аналогично предыдущему типу позволяет хранить строки длиной до 255 символов. Однако отличие от CHAR в том, что для хранения значения данного типа выделяется требуемое количество памяти. То есть для строки, состоящей из 5-ти символов, потребуется 6 байт памяти. В первом же случае память для значения будет выделена согласно указанному параметру.
NCHAR(size) Строковые данные постоянной длины в Юникоде. n определяет длину строки и должно иметь значение от 1 до 4000. Размер при хранении составляет удвоенное значение size в байтах. Рекомендуется использовать nchar, если размеры элементов данных в столбцах предполагаются сходные.
NVARCHAR
(size| max)
Строковые данные переменной длины в Юникоде. Size определяет длину строки и может иметь значение от 1 до 4000. Значение max указывает, что максимальный размер при хранении составляет 2^31-1 символов (2 ГБ). Рекомендуется использовать nvarchar, если размеры элементов данных в столбцах предполагаются различные.
TEXT Данные переменной длины не в Юникоде в кодовой странице сервера и с максимальной длиной строки 2^31-1 (2 147 483 647).
NTEXT Данные переменной длины в кодировке Юникод с максимальной длиной строки 2^30 - 1 (1 073 741 823) байт.

Денежный тип данных

Временные типы(дата/время)

Тип данных Описание
DATE Главное предназначение - хранение даты в формате ГОД-МЕСЯЦ-ДЕНЬ (“ГГГГ-MM-ДД” или "уууу-mm-dd").
TIME Позволяет заносить в ячейку таблицы временные значения. Все значения задаются форматом «hh:mm:ss».
DATETIME Объединяет функции предыдущих двух типов. Формат хранения представлен следующим образом: «уууу-mm-dd hh:mm:ss».
TIMESTAMP Сохраняет дату и время, исчисляемое количеством секунд, прошедших начиная с полуночи 1.01.1970 года и до заданного значения.

Примеры использования типов данных

Рассмотрим на примере, как использовать типы данных в SQL.

An example of using data types

MySQL

CREATE TABLE Checks(id INT NOT NULL, Name VARCHAR (50) NOT NULL, DataToDay DATE NOT NULL, Cost FLOAT NOT NULL);

id является счётчиком(она хранит в себе индивидуальный номер чека), следовательно принадлежит к целочисленному типу данных, поэтому делаем её INT или же INTEGER. NOT NULL говорит о том, что переменная не может быть пустой.
В Name будем хранить название товара. Так как столбец будет хранить символы используем VARCHAR . После указания типа выделяем память, под название(в нашем случаи это (50) ).
Следующие столбцы таблицы создаются по аналогии.

Типы данных SQL разделяются на три группы:
- строковые ;
- с плавающей точкой (дробные числа );
- целые числа , дата и время .

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

Типы данных SQL Описание
CHAR(size) Строки фиксированной длиной (могут содержать буквы, цифры и специальные символы). Фиксированный размер указан в скобках. Можно записать до 255 символов
VARCHAR(size)
TINYTEXT Может хранить не более 255 символов.
TEXT
BLOB Может хранить не более 65 535 символов.
MEDIUMTEXT
MEDIUMBLOB Может хранить не более 16 777 215 символов.
LONGTEXT
LONGBLOB Может хранить не более 4 294 967 295 символов.
ENUM(x,y,z,etc.) Позволяет вводить список допустимых значений. Можно ввести до 65535 значений вSQL Тип данных ENUM список. Если при вставке значения не будет присутствовать в списке ENUM , то мы получим пустое значение. Ввести возможные значения можно в таком формате: ENUM ("X", "Y", "Z")
SET SQL Тип данных SET напоминает ENUM за исключением того, что SET может содержать до 64 значений.

Типы данных SQL с плавающей точкой (дробные числа) и целые числа

Типы данных SQL - Дата и время

Создание таблицы в базе данных производится командой CREATE TABLE .

Синтаксис:

CREATE TABLE tbl_name [(create_definition,...)]

tbl_name - Задает имя таблицы, которая будет создана в текущей базе данных. Если никакая база данных на момен вызова команды CREATE TABLE не была принята текущей, то возникнет ошибка выполнения команды.

IF NOT EXISTS - Если указан этот параметр и производится попытка создать таблицу с дублирующим именем (т.е. таблица с таким именем в текущей БД уже есть), то таблица создана не будет и сообщение об ошибке не появиться. В противном случае таблица также создана не будет, но команда вызовет ошибку.

create_definition - Определяет внутреннюю структуру создаваемой таблицы (названия и типы полей, ключи, индексы и т.д.)

Возможные синтаксисы create_definition :

col_name type

PRIMARY KEY (index_col_name,...)

KEY (index_col_name,...)

INDEX (index_col_name,...)

UNIQUE (index_col_name,...)

FOREIGN KEY (index_col_name,...)

col_name - Задает имя столбца в создаваемой таблице.

Type - Задает тип данных для столбца col_name .

Возможные значения параметра type :

§ INT[(length)]

§ BIGINT[(length)]

§ DOUBLE[(length,decimals)]

§ FLOAT[(length,decimals)]

§ DECIMAL(length,decimals)

§ CHAR(length)

§ VARCHAR(length)

- Указывавет, может ли данных столбец содержать значение NULL или нет. Если не указано, то по умолчанию принимается NULL (т.е. может содержать NULL).

- Задает значение по умолчанию для данного столбца. При вставке новой записи в таблицу командой INSERT если значение для поля col_name явно указано не было, то устанавливается значение default_value .

- При вставке новой записи в таблицу поле с этим атрибутом автоматически получит числовое значение, на 1 больше самого большого значения для этого поля в текущий момент времени. Данная возможность обычно используется для генерирования уникальных идентификаторов строк. Столбец, для которого применяется атрибут AUTO_INCREMENT , должен иметь целочисленный тип. В таблице может быть только один столбец с атрибутом AUTO_INCREMENT . Так же этот столбец должен быть проиндексирован. Отсчет последовательности чисел для AUTO_INCREMENT начинается с 1. Это могут быть только положительные числа.

Следующий пример создает таблицу users с 3 полями, где первое поле - уникальный идентификатор записи, второе поле - имя пользователя, а третье поле - его возраст:

create table Water_Area(

id int auto_increment,

name varchar(70),

constraint pk_Water_Area primary key nonclustered(id))

create table Station(

id_Water_Area int not null,

name varchar(20) not null,

Latitude float(4) null,

Longitude float(4) null,

coordinates varchar(40) null,

coordinates_modern varchar(30) null,

comment varchar(70) null

constraint pk_Station primary key nonclustered(id))

Удаление таблицы.

Для удаления таблицы служит команда DROP TABLE.

DROP TABLE tbl_name [, tbl_name,...]

tbl_name - Имя удаляемой таблицы.

IF EXISTS – Если указан этот параметр, то при попытке удаления несущестующей таблицы ошибки не возникнет. В противном случае возникнет ошибка выполнения команды.

RESTRICT и CASCADE Не несут никакой функциональности. Оставлены для упрощения переноса программы.

Drop table Station

Модификация таблиц.

Для модификации служит команда Alter Table.

Синтаксис:

ALTER TABLE TableName1ADD | ALTER FieldName1FieldType [(nFieldWidth [, nPrecision])] ]] | FieldName]

Команда ALTER TABLE изменяет определение таблицы одним из следующих способов:

Добавляет столбец

Добавляет ограничение целостности

Переопределяет столбец (тип данных, размер, умалчиваемое значение)

Удаляет столбец

Модифицирует характеристики памяти или иные параметры

Включает, выключает или удаляет ограничение целостности или триггер.

alter table Station

unique(id_Water_Area, name)

alter table Station

add constraint fk_Station_Relation_Water_Area foreign key (id_Water_Area) references Water_Area (id)

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

Что такое тип данных?

Сегодня существует сразу несколько определений, которые объясняют сущность понятия «тип данных». Каждое из них имеет один общий смысл. Условно тип данных можно обозначить как группу данных, характеризуемую ее значениями – числовыми, символьными и так далее– а также операциями, которые могут применяться по отношению к рассматриваемым значениям. Сфера использования различных типов данных очень многогранна. Данные могут использоваться не только для хранения информации, но также и при программировании для решения поставленных задач. При разработке программ большое распространение получила практика использования собственных типов данных с определенным набором операций. В основе пользовательской информации всегда лежат основные типы данных. Стандарт SQL основан на использовании наиболее распространенных типов информации, однако с рядом определенных дополнений.

Типы данных: классификация

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

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

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

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

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

— CHAR (size) – данный тип используется для хранения строк. Указанный в скобках параметр позволяет фиксировать длину хранимой строки. Для строки можно задать максимальный размер в байтах – 255.

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

— TINY TEXT- данный тип применяется для хранения текстовой информации, объем которой не превышает 65535 символов.

— BLOB – этот тип аналогичен типу TEXT. Он позволяет сохранять в базе текстовую информацию, объем которой может составлять до 65 535 знаков. Однако на практике данный тип может использоваться для хранения рисунков, звуковой информации, электронных документов и прочего.

— MEDIUM TEXT – данный тип был разработан на основе типа TEXT. За счет увеличенного до 16777 215 символов размера данный тип позволяет хранить больше данных.

— MEDIU MBLOB – применяется для хранения в базе электронных документов, размер которых не превышает 16777215 символов.

— LONG TEXT – по функциональным возможностям аналогичен предыдущим типам данных, однако имеет объем памяти, увеличенный до4 Гб.

— LONG BLOB–дает возможность размещать в базе данных данные большого объема – 4294967295 символов.

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

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

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

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

FLOAT (sized) – применяется для хранения дробных чисел указываемой точности – d;

— DOUBLE (sized) – применяется для хранения дробей с двоичной точностью;

— DECIMAL (size, d) – применяется для хранения дробных значений в виде строк. Применяется в банковских расчетах, где точность дробной части может достигать 8-ми или 10-ти знаков.

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

Данные целочисленного типа

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

  • INT (size) – отвечает за хранение целочисленных данных в диапазоне [-231;231-1].
  • TINYINT (size) – применяется для хранения чисел в диапазоне от -128 до 127.
  • SMALLINT (size) – характеризуется несколько увеличенным диапазоном хранимых данных от -32768 до 32767.
  • MEDIUMINT (size) – применяется для хранения чисел размерностью от -223 до 223-1.
  • BIGINT (size) – охватывает диапазон целочисленных значений от -263 до 263-1.

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

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

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

  • DATE – основное предназначение данного типа заключается в хранении даты в формате «год-месяц-день». Значения обычно разделяются через «-». Однако иногда в качестве разделителя могут быть задействованы любые символы, за исключением цифр.
  • TIME – дает возможность заносить временные значения в ячейку таблицы. Значения задаются форматом «hh:mm:ss».
  • DATE TIME – этот тип объединяет в себе функции двух предыдущих. Формат хранения данных в этом случае выглядит следующим образом «yyyy-mm-dd: hh:mm:ss».
  • TIME STAMP – данный тип сохраняет дату и время, исчисляемые количеством секунд, которые прошли начиная с полуночи 01.01.1970 года до заданного значения.
  • YEAR (M) – применяется для хранения годовых значений в двух- или четырехзначном формате.

Что еще следует знать? Все представленные выше типы данных были систематизированы компанией Microsoft. Ей также более подробно были разработаны типы данных SQL. Так, к примеру, формой было расписано, какой объем памяти выделяется при использовании каждого типа данных. После изучения всей имеющейся информации разработчикам должно стать проще спроектировать структуру базы и таблиц исходя из аппаратных возможностей сервера.

NULL- специальный указатель

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