Типы таблиц sql. Типы данных SQL Server. Типы данных даты и времени

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

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

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

Группировка данных по типу появилась достаточно давно. Она была вызвана необходимостью структурирования всех объемов информации для обеспечения удобства их обработки. Сегодня в основе всех существующих типов данных лежат два базовых: символьный и числовой. На основе этих данных была разработана современная классификация, которая включает в себя указатели, целочисленный, логический, числовой с плавающей запятой и строковый тип информации. Все вышеперечисленной полностью охватывает классификация 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 нет типа. Он просто указывает в таблицах баз данных на пустое значение. По этой причине он вполне может быть скомбинирован с одним из представленных выше типов данных.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ENUM (a, b, c, etc.)

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

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

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

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

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

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

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

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

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

Последнее обновление: 12.07.2017

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

Язык T-SQL предоставляет множество различных типов. В зависимости от характера значений все их можно разделить на группы.

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

    BIT : хранит значение 0 или 1. Фактически является аналогом булевого типа в языках программирования. Занимает 1 байт.

    TINYINT : хранит числа от 0 до 255. Занимает 1 байт. Хорошо подходит для хранения небольших чисел.

    SMALLINT : хранит числа от –32 768 до 32 767. Занимает 2 байта

    INT : хранит числа от –2 147 483 648 до 2 147 483 647. Занимает 4 байта. Наиболее используемый тип для хранения чисел.

    BIGINT : хранит очень большие числа от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807, которые занимают в памяти 8 байт.

    DECIMAL : хранит числа c фиксированной точностью. Занимает от 5 до 17 байт в зависимости от количества чисел после запятой.

    Данный тип может принимать два параметра precision и scale: DECIMAL(precision, scale) .

    Параметр precision представляет максимальное количество цифр, которые может хранить число. Это значение должно находиться в диапазоне от 1 до 38. По умолчанию оно равно 18.

    Параметр scale представляет максимальное количество цифр, которые может содержать число после запятой. Это значение должно находиться в диапазоне от 0 до значения параметра precision. По умолчанию оно равно 0.

    NUMERIC : данный тип аналогичен типу DECIMAL.

    SMALLMONEY : хранит дробные значения от -214 748.3648 до 214 748.3647. Предназначено для хранения денежных величин. Занимает 4 байта. Эквивалентен типу DECIMAL(10,4) .

    MONEY : хранит дробные значения от -922 337 203 685 477.5808 до 922 337 203 685 477.5807. Представляет денежные величины и занимает 8 байт. Эквивалентен типу DECIMAL(19,4) .

    FLOAT : хранит числа от –1.79E+308 до 1.79E+308. Занимает от 4 до 8 байт в зависимости от дробной части.

    Может иметь форму опредеения в виде FLOAT(n) , где n представляет число бит, которые используются для хранения десятичной части числа (мантиссы). По умолчанию n = 53.

    REAL : хранит числа от –340E+38 to 3.40E+38. Занимает 4 байта. Эквивалентен типу FLOAT(24) .

Примеры числовых столбцов: Salary MONEY, TotalWeight DECIMAL(9,2), Age INT, Surplus FLOAT

Типы данных, представляющие дату и время

    DATE : хранит даты от 0001-01-01 (1 января 0001 года) до 9999-12-31 (31 декабря 9999 года). Занимает 3 байта.

    TIME : хранит время в диапазоне от 00:00:00.0000000 до 23:59:59.9999999. Занимает от 3 до 5 байт.

    Может иметь форму TIME(n) , где n представляет количество цифр от 0 до 7 в дробной части секунд.

    DATETIME : хранит даты и время от 01/01/1753 до 31/12/9999. Занимает 8 байт.

    DATETIME2 : хранит даты и время в диапазоне от 01/01/0001 00:00:00.0000000 до 31/12/9999 23:59:59.9999999. Занимает от 6 до 8 байт в зависимости от точности времени.

    Может иметь форму DATETIME2(n) , где n представляет количество цифр от 0 до 7 в дробной части секунд.

    SMALLDATETIME : хранит даты и время в диапазоне от 01/01/1900 до 06/06/2079, то есть ближайшие даты. Занимает от 4 байта.

    DATETIMEOFFSET : хранит даты и время в диапазоне от 0001-01-01 до 9999-12-31. Сохраняет детальную информацию о времени с точностью до 100 наносекунд. Занимает 10 байт.

Распространенные форматы дат:

    yyyy-mm-dd - 2017-07-12

    dd/mm/yyyy - 12/07/2017

    mm-dd-yy - 07-12-17

    В таком формате двузначные числа от 00 до 49 воспринимаются как даты в диапазоне 2000-2049. А числа от 50 до 90 как диапазон чисел 1950 - 1999.

    Month dd, yyyy - July 12, 2017

Распространенные форматы времени:

  • hh:mi am/pm - 1:21 pm

    hh:mi:ss - 1:21:34

    hh:mi:ss:mmm - 1:21:34:12

    hh:mi:ss:nnnnnnn - 1:21:34:1234567

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

    CHAR : хранит строку длиной от 1 до 8 000 символов. На каждый символ выделяет по 1 байту. Не подходит для многих языков, так как хранит символы не в кодировке Unicode.

    Количество символов, которое может хранить столбец, передается в скобках. Например, для столбца с типом CHAR(10) будет выделено 10 байт. И если мы сохраним в столбце строку менее 10 символов, то она будет дополнена пробелами.

    VARCHAR : хранит строку. На каждый символ выделяется 1 байт. Можно указать конкретную длину для столбца - от 1 до 8 000 символов, например, VARCHAR(10) . Если строка должна иметь больше 8000 символов, то задается размер MAX, а на хранение строки может выделяться до 2 Гб: VARCHAR(MAX) .

    Не подходит для многих языков, так как хранит символы не в кодировке Unicode.

    В отличие от типа CHAR если в столбец с типом VARCHAR(10) будет сохранена строка в 5 символов, то в столце будет сохранено именно пять символов.

    NCHAR : хранит строку в кодировке Unicode длиной от 1 до 4 000 символов. На каждый символ выделяется 2 байта. Например, NCHAR(15)

    NVARCHAR : хранит строку в кодировке Unicode. На каждый символ выделяется 2 байта.Можно задать конкретный размер от 1 до 4 000 символов: . Если строка должна иметь больше 4000 символов, то задается размер MAX, а на хранение строки может выделяться до 2 Гб.

Еще два типа TEXT и NTEXT являются устаревшими и поэтому их не рекомендуется использовать. Вместо них применяются VARCHAR и NVARCHAR соответственно.

Примеры определения строковых столбцов:

Email VARCHAR(30), Comment NVARCHAR(MAX)

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

    BINARY : хранит бинарные данные в виде последовательности от 1 до 8 000 байт.

    VARBINARY : хранит бинарные данные в виде последовательности от 1 до 8 000 байт, либо до 2^31–1 байт при использовании значения MAX (VARBINARY(MAX)).

Еще один бинарный тип - тип IMAGE является устаревшим, и вместо него рекомендуется применять тип VARBINARY.

Остальные типы данных

    UNIQUEIDENTIFIER : уникальный идентификатор GUID (по сути строка с уникальным значением), который занимает 16 байт.

    TIMESTAMP : некоторое число, которое хранит номер версии строки в таблице. Занимает 8 байт.

    CURSOR : представляет набор строк.

    HIERARCHYID : представляет позицию в иерархии.

    SQL_VARIANT : может хранить данные любого другого типа данных T-SQL.

    XML : хранит документы XML или фрагменты документов XML. Занимает в памяти до 2 Гб.

    TABLE : представляет определение таблицы.

    GEOGRAPHY : хранит географические данные, такие как широта и долгота.

    GEOMETRY : хранит координаты местонахождения на плоскости.

ОПРЕДЕЛЕНИЕ СТРУКТУРЫ ДАННЫХ

Вопросы:

1. Типы данных языка SQL, определенные стандартом.. 1

2. Типы данных, используемые в SQL-сервере. 3

3. Выражения и переменные. 5

4. Управляющие конструкции SQL.. 6

5. Основные объекты структуры базы данных SQL-сервера. 7

Типы данных языка SQL, определенные стандартом

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

В языке SQL имеется шесть скалярных типов данных, определенных стандартом. Их краткое описание представлено в таблице.

Символьные данные

Символьные данные состоят из последовательности символов, входящих в определенный создателями СУБД набор символов. Поскольку наборы символов являются специфическими для различных диалектов языка SQL, перечень символов, которые могут входить в состав значений данных символьного типа, также зависит от конкретной реализации. Чаще всего используются наборы символов ASCII и EBCDIC. Для определения данных символьного типа используется следующий формат:

<символьный_тип>::=

{ CHARACTER [ VARYING][длина] | [длина]}

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

Битовые данные

Битовый тип данных используется для определения битовых строк, т.е. последовательности двоичных цифр (битов), каждая из которых может иметь значение либо 0, либо 1 . Данные битового типа определяются при помощи следующего формата:

<битовый_тип>::=

BIT [длина]

Точные числа

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

<фиксированный_тип>::=

{NUMERIC[точность[,масштаб]]|{DECIMAL|DEC}

[точность[, масштаб]]

| {INTEGER |INT}| SMALLINT}

Типы NUMERIC и DECIMAL предназначены для хранения чисел в десятичном формате. По умолчанию длина дробной части равна нулю, а принимаемая по умолчанию точность зависит от реализации. Тип INTEGER (INT) используется для хранения больших положительных или отрицательных целых чисел. Тип SMALLINT – для хранения небольших положительных или отрицательных целых чисел; в этом случае расход внешней памяти существенно сокращается.

Округленные числа

Тип округленных чисел применяется для описания данных, которые нельзя точно представить в компьютере, в частности действительных чисел. Округленные числа или числа с плавающей точкой представляются в научной нотации, при которой число записывается с помощью мантиссы, умноженной на определенную степень десяти (порядок), например: 10Е3, +5.2Е6, -0.2Е-4 . Для определения данныхвещественного типа используется формат:

<вещественный_тип>::=

{ FLOAT [точность]| REAL |

DOUBLE PRECISION}

Параметр точность задает количество значащих цифр мантиссы. Точность типов REAL и DOUBLE PRECISION зависит от конкретной реализации.

Дата и время

Тип данных "дата/время" используется для определения моментов времени с некоторой установленной точностью. Стандарт SQL поддерживает следующий формат:

<тип_даты/времени>::=

{DATE | TIME[точность]|

TIMESTAMP[точность]}

Тип данных DATE используется для хранения календарных дат, включающих поля YEAR (год), MONTH (месяц) и DAY (день). Тип данныхTIME – для хранения отметок времени, включающих поля HOUR (часы), MINUTE (минуты) и SECOND (секунды). Тип данных TIMESTAMP– для совместного хранения даты и времени. Параметр точность задает количество дробных десятичных знаков, определяющих точность сохранения значения в поле SECOND. Если этот параметр опускается, по умолчанию его значение для столбцов типа TIME принимается равным нулю (т.е. сохраняются целые секунды), тогда как для полей типа TIMESTAMP он принимается равным 6. Наличие ключевого слова WITH TIME ZONE определяет использование полей TIMEZONE HOUR и TIMEZONE MINUTE, тем самым задаются час и минуты сдвига зонального времени по отношению к универсальному координатному времени (Гринвичскому времени).

Данные типа INTERVAL используются для представления периодов времени.

Понятие домена

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

Стандарт SQL позволяет определить домен с помощью следующего оператора:

<определение_домена>::=

CREATE DOMAIN имя_домена

тип_данных

[ DEFAULT значение]

[ CHECK (допустимые_значения)]

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

Удаление доменов из базы данных выполняется с помощью оператора:

DROP DOMAIN имя_домена [ RESTRICT |

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

Альтернативой доменам в среде SQL Server являются пользовательские типы данных.

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

Системные типы данных

Один из основных моментов процесса создания таблицы – определение типов данных для ее полей. Тип данных поля таблицы определяет тип информации, которая будет размещаться в этом поле. Понятие типа данных в SQL Server полностью адекватно понятию типа данных в современных языках программирования. SQL-сервер поддерживает большое число различных типов данных: текстовые, числовые, двоичные (см. таблицу).

Приведем краткий обзор типов данных SQL Server.

Для хранения символьной информации используются символьные типы данных , к которым относятся CHAR (длина), VARCHAR (длина),NCHAR (длина), NVARCHAR (длина). Последние два предназначены для хранения символов Unicode. Максимальное значение длины ограничено 8000 знаками (4000 – для символов Unicode).

Хранение символьных данных большого объема (до 2 Гб) осуществляется при помощи текстовых типов данных TEXT и NTEXT.

К целочисленным типам данных относятся INT (INTEGER), SMALLINT, TINYINT, BIGINT. Для хранения данных целочисленного типаиспользуется, соответственно, 4 байта (диапазон от -231 до 231-1), 2 байта (диапазон от -215 до 215-1), 1 байт (диапазон от 0 до255) или 8 байт (диапазон от -263 до 263-1). Объекты и выражения целочисленного типа могут применяться в любых математических операциях.

Числа, в составе которых есть десятичная точка, называются нецелочисленными. Нецелочисленные данные разделяются на два типа – десятичные и приблизительные .

К десятичным типам данных относятся типы DECIMAL [(точность[,масштаб])] или DEC и NUMERIC [(точность[,масштаб])]. Типы данных DECIMAL и NUMERIC позволяют самостоятельно определить формат точности числа с плавающей запятой. Параметр точностьуказывает максимальное количество цифр вводимых данных этого типа (до и после десятичной точки в сумме), а параметр масштаб – максимальное количество цифр, расположенных после десятичной точки. В обычном режиме сервер позволяет вводить не более 28 цифр, используемых в типах DECIMAL и NUMERIC (от 2 до 17 байт).

К приблизительным типам данных относятся FLOAT (точность до 15 цифр, 8 байт) и REAL (точность до 7 цифр, 4 байта). Эти типы представляют данные в формате с плавающей запятой, т.е. для представления чисел используется мантисса и порядок, что обеспечивает одинаковую точность вычислений независимо от того, насколько мало или велико значение.

Для хранения информации о дате и времени предназначены такие типы данных, как DATETIME и SMALLDATETIME, использующие для представления даты и времени 8 и 4 байта соответственно.

Типы данных MONEY и SMALLMONEY делают возможным хранение информации денежного типа; они обеспечивают точность значений до 4 знаков после запятой и используют 8 и 4 байта соответственно.

Тип данных BIT позволяет хранить один бит, который принимает значения 0 или 1.

В среде SQL Server реализован ряд специальных типов данных .

Тип данных TIMESTAMP применяется в качестве индикатора изменения версии строки в пределах базы данных.

Тип данных UNIQUEIDENTIFIER используется для хранения глобальных уникальных идентификационных номеров.

Тип данных SYSNAME предназначен для идентификаторов объектов.

Тип данных SQL_VARIANT позволяет хранить значения любого из поддерживаемых SQL Server типов данных за исключением TEXT, NTEXT, IMAGE и TIMESTAMP.

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

Тип данных CURSOR нужен для работы с такими объектами, как курсоры, и может быть востребован только для переменных и параметров хранимых процедур. Курсоры SQL Server представляют собой механизм обмена данными между сервером и клиентом. Курсор позволяет клиентским приложениям работать не с полным набором данных, а лишь с одной или несколькими строками.