Типы переменных sql. Язык SQL Типы данных SQL Типы данных

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

1) Строки постоянной длины
CHAR() – строка текста в формате, определенном разработчиком. Натуральное число задает строки.
На практике максимальное число символов бывает в диапазоне от 256 в MS SQL Server до 32767 в InterBase.
CHAR трактуется как CHAR(1)

2) Строки переменной длины
VARCHAR|CHAR VARYING [()] – строка текста переменной длины в формате, определенном разработчиком. Натуральное число задает максимальную строки, но в таблице отводится место только под реальную длину строки.

3) Особенности символьных типов ряда СУБД
В ряде СУБД, например, MS SQL Server, если CHAR допускает значение NULL, то от трактуется как VARCHAR.
В Oracle для полей типа VARCHAR2 можно зарезервировать в каждом блоке место для будущих обновлений поля, определив опцию PCTFREE.

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

1) Целые типы данных
INT – число без десятичной точки. Размер зависит от конкретного варианта реализации. Часто это 4 байта.
SMALLINT – совпадает с INT, но обычно меньше по размеру. Часто 2 байта.
BIGINT – совпадает с INT, но обычно больше по размеру. Это 4 или более байта.

2) Вещественные числа с фиксированной точкой
DEC|)] – десятичное число с фиксированной точкой.
Число имеет:
— общее число значащих десятичных разрядов,
— максимальное количество разрядов справа от десятичной точки.

3) Вещественные числа с плавающей точкой
FLOAT – число с плавающей точкой, представленное в экспоненциальной форме по основанию 10. Задается максимальная точность.
REAL – совпадает с FLOAT, но точность зависит от варианта реализации.
DOUBE – совпадает с REAL, но точность может быть больше в конкретной реализации.

1.3. Даты и типы времени

DATE – дата в формате yyyy-mm-dd (ISO), mm/dd/yyyy (ANSI).
TIME – время в формате hh.mm.ss (ISO), hh:mm am/pm (ANSI).
INTERVAL – дата и время в формате yyyy-mm-dd-hh.mm.ss.nnnnn (ISO). (часто TIMESTAMP).

Примечание:
Типы даты и времени могут задаваться в виде строковых литералов.
Дата: ‘yyyy-mm-dd’, время: ‘hh.mm.ss’,
Интервал: ‘yyyy-mm-dd-hh.mm.ss.n…n’.

1.4. Логический тип

BOOLEAN – логическое значение (TRUE, FALSE, UNKNOWN).
Для правильного понимания таблицы истинности в трехзначной логике (3VL) можно условно считать, что FALSE — 0, TRUE -1, а UNKNOWN – 0.5.
Тогда:
— Оператор AND возвращает наименьшее.
— Оператор OR – наибольшее из исходных значений.
— NOT UNKNOWN = UNKNOWN.

2. Коллекции

Коллекции фактически нарушают первую нормальную форму (1NF).

2.1. Массив

[()] ARRAY – набор однотипных значений.

Примечание:
Массивы были введены в SQL:99.
Пример:
Так, определение WeekDays Varchar(10) ARRAY позволяет хранить название всех семи дней недели в одном поле.
Ряд СУБД допускают даже многомерные массивы. Так в InterBase возможно до 16 изменений, Clarion – 4.

2.2. Мультимножество

[()] MULTISET – неограниченный набор однотипных значений, допускающий дубликаты.
Значения создаются конструктором – специальными функциями.

Примечание:
Мультимножества были введены в SQL:2003.

2.3. Анонимный строковый тип

ROW ([()] , …) – набор разнотипных значений, включая вложенные.
Опции могут задавать порядок сортировки полей строкового типа и ряд других установок.

Пример:
Так, определив Address ROW(State Char(6), City Varchar(30), Street Varchar(50)) позволяет хранить подробный адрес в одном поле.

3. Типы LOB

CLOB (Character Large Object) – ведут себя во многом подобно символьным строкам, но их запрещено использовать:
— В ограничениях Primary Key, Unique, Foreign Key.
— В сравнениях, отличных от чистых равенств или неравенств, в разделах Order By и Group By.
BLOB (Binary Large Object) – поток байт в формате, в котором пользователь сможет их записать в колонку БД.

3.1. Проблемы использования LOB

1) Проблемы хранения
Хранение LOB прямо в таблицах вместе с другими данными нарушает работу оптимизатора, основанную на использовании страниц данных, размер которых соответствует размеру дисковых страниц.
Поэтому LOB хранятся в отдельных областях (сегментах) дисковой памяти.

2) Проблемы обновления
Поскольку размер LOB объектов может достигать десятков и сотен мегабайт, то их невозможно хранить в буферах целиком. Поэтому данные типа LOB обрабатываются по частям, например, группами страниц. В операторах INSERT и UPDATE для обработки по частям используются специальные технологии, позволяющие многократно вызывать одну и ту же API-функцию для одного поля. Аналогично и при считывании данных операторами SELECT и FETCH.

3) Проблемы выполнения транзакций
Для поддержки транзакций большинство СУБД ведет журнал транзакций, в котором записываются копии данных до и после модификаций.
Однако из-за больших размеров LOB не записываются в журнал.

4) Проблемы пересылки по сети
Часто клиент и сервер работают на разных компьютерах, и пересылка LOB по сети может прервать работу всех, кто пользуется сетью в данных момент.

4. Разные типы

4.1. Locator

Уникальное двоичное (четырехбитное) значение (в ООП – дескриптор), сохраняемое в БД.
Описывается в главной программе и действует до конца транзакции.
Предназначен для манипуляции LOB-значениями (или массивами) на стороне клиента. Вместо LOB клиенту посылается ссылка на него.
Можно объявить: LOC: Integer AS LOCATOR.

4.2. XML

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

4.3. Datalink

Datalinks являются частью SQL/MED 9075-9:2003.
Datalink представляет собой особый тип SQL предназначен для хранения URL-адресов в БД, а также ряд функций, которые могут быть использованы в SQL запросах.
С особенностями и поддерживаемыми функциями можно ознакомится на сайте:
Wiki.postgresql.org/wiki/DATALINK

Используются в DB2, Oracle – для хранения данных во внешнем файле BFile.

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

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

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

Описание

Строковые типы

Строка символов постоянной длины

CHAR (количество_символов)

Строка символов переменной длины

VARCHAR (количество_символов)

Большая строка символов переменной длины

Большой двоичный

объект переменной

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

Целое число

Целое число. Количество разрядов больше или равно INTEGER

Целое число. Количество разрядов

меньше или равно INTEGER

Число с фиксированной запятой

(количество_разрядов – общее число знаков, масштаб - знаков после запятой)

{NUMERIC | DECIMAL | DEC} (кол-во разрядов, масштаб)

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

Число с плавающей запятой

Число с плавающей запятой. Количество разрядов больше или равно REAL

DOUBLE PRECISION

Число с плавающей запятой

FLOAT (кол-во разрядов)

Временные типы

Дата. Содержит год, месяц и день

Временная отметка. Содержит год, месяц, день, час, минуты и секунды

TIMESTAMP (масштаб)

Время. Содержит час, минуты и секунды (масштаб - количество

знаков в дробной части секунд). Возможно указание временной зоны

TIME (масштаб)

Временной промежуток.

Логический тип

Принимает логические значения

      1. Литералы

Литералы – это простейшие выражения, являющиеся значениями соответствующих типов. Каждый тип данных имеет способ представления литералов своего типа. В SQL имеются следующие литералы:

    символьных строк (пример: "Символьная строка"),

    двоичных строк (пример: X"1AFFD561"),

    чисел (примеры: 27 -863 0.173 .8582 -9572.5619 11.54Е7 .94Е194 93Е-12 -29.629Е27),

    временные (DATE "2005-12-07" TIME "HH:MI:SS" TIMESTAMP "YYYY-MM-DD HH:MI:SS"),

    логические (TRUE, FALSE, UNKNOWN).

      1. Операторы и выражения

Операторы - это конструкции языка, указывающие операции над элементами данных и возвращающие в качестве результата новое значение. Элементы данных, используемые в операторах, называются операндами или аргументами. Операторы представляются в виде специальных символов или ключевых слов. Например, оператор умножения представляется звездочкой (*), а оператор проверки на неопределенное значение - ключевым словом IS NULL.

Есть два основных вида операторов. Унарные имеют только один операнд и обычно представляются в следующем формате:

операнд оператор

Бинарные оперируют двумя операндами и представляются таким образом:

операнд оператор операнд

Кроме того, существуют специальные операторы, использующие более двух операндов. Тип оператора определяется типом используемых аргументов и типом возвращаемого результата. Имеются операторы следующих типов:

    строковые (||);

    арифметические;

    логические;

    предикаты сравнения;

    специальные предикаты;

    операторы над множествами (таблицами).

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

Интересное отступление, касающееся дат на SQL Server: SQL Server поддерживает даты начиная с 1753 года. Вы не можете хранить более ранние даты ни в одном типе данных базы SQL Server. Почему? Причина в том, что англоговорящий мир начал использовать григорианский календарь в 1753 году (до сентября 1753 года использовался юлианский календарь), а преобразование дат юлианского календаря в григорианский могло оказаться весьма сложным.

BIGINT (тип данных SQL 2003: BIGINT)

Хранит целые числа со знаком и без знака в диапазоне от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807. Занимает 8 байт. Смотрите тип INT, где указаны правила свойства IDENTITY, также применимые к типу BIGINT.

BINARY[(n)](тип данных SQL 2003: BLOB)

Хранит двоичное значение фиксированной длины от 1 до 8000 байт. Значение типа BINARY занимает n + 4 байта.

BIT (тип данных SQL 2003: BOOLEAN)

Хранит значения 1, 0 или NULL, которое обозначает «unknown». В одном байте может храниться до 8 значений из столбцов типа BIT таблицы. В еще одном байте можно разместить дополнительные 8 значений типа BIT. Столбцы типа BIT нельзя индексировать.

CHAR[(n)], CHARACTER[(n)] (тип данных SQL 2003: CHARACTER(n))

Хранит символьные данные фиксированной длины от 1 до 8000 символов. Все неиспользованное место по умолчанию заполняется пробелами. (Автоматическое заполнение пробелами можно отключить.) Тип занимает п байт.

CURSOR (тип данных SQL 2003: отсутствует)

Специальный тип данных, используемый для описания курсора в форме переменной или параметра хранимой процедуры OUTPUT. Тип нельзя использовать в инструкции CREATE TABLE. Тип CURSOR может принимать значение NULL.

DATETIME (тип данных SQL 2003: TIMESTAMP)

Хранит значение даты и времени в диапазоне с 01-01-1753 00:00:00 до 31-12-9999 23:59:59. Для хранения требуется 8 байт.

DECIMAL (p. s). DEC (p, s), NUMERIC (p, s) (тип данных SQL 2003: 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 (тип данных SQL 2003: отсутствует) Синоним FLOAT(53).

FLOAT[(n)] (тип данных SQL 2003: FLOAT, FLOAT(п))

Хранит значения с плавающей точкой в диапазоне от-1.79Е + 308 до 1.79Е + 308. Точность, определяемая параметром п, может изменяться в пределах от 1 до 53. Для хранения 7 цифр (и - от 1 до 24) требуется 4 байта. Значения, превышающие 7 цифр, занимают 8 байт.

IMAGE (тип данных SQL 2003: BLOB)

Хранит двоичное значение переменной длины до 2 147 483 647 байт. Этот тип данных часто используется для хранения графики, звука и файлов, таких, как документы Microsoft Word и электронные таблицы Microsoft Excel. Значениями типа IMAGE нельзя свободно манипулировать. Столбцы типа IMAGE и ТОТимеют множество ограничений на способы использования. Смотрите описание типа TEXT, где приведен список команд и функций, которые применимы и к типу IMAGE.

INT (тип данных SQL 2003: INTEGER)

Хранит целые числа со знаком или без знака в диапазоне от -2 147 483 648 до 2 147 483 647. Занимает 4 байта. Все целочисленные типы данных, а также типы, хранящие десятичные дроби, поддерживают свойство IDENTITY, identity - это автоматически инкрементируемый идентификатор строки. Обращайтесь к разделу «Инструкция CREATE/ALTERTABLE».

MONEY (тип данных SQL 2003: отсутствует)

Хранит денежные значения в диапазоне от -922337203685477.5808 до 922337203685477.5807. Значение занимает 8 байт.

NCHAR(n), NATIONAL CHAR(n), NATIONAL CHARACTER) (тип данных SQL 2003: NATIONAL СИARACTER(n))

Хранит данные формата UNICODE фиксированной длины до 4000 символов. Для хранения требуется n*2 байт.

NTEXT, NATIONAL TEXT(тип данных SQL 2003: NCLOB)

Хранит фрагменты текста в формате UNICODE длиной до 1 073 741 823 символа. Смотрите описание типа TEXT, где приведен список команд и функций, которые применимы и к типу NTEXT.

Синоним типа DECIMAL. Смотрите описание типа INT, где приведены правила, относящиеся к свойству IDENTITY.

NVARCHAR(n), NATIONAL CHAR VARYING(n), NATIONAL CHARACTER VARYING(n) (тип данных SQL 2003: NATIONAL CHARACTER VARYING(n))

Хранит UNICODE-данные переменной длины до 4000 символов. Занимаемое место вычисляется как удвоенное значение длины всех символов, вставленных в поле (число символов * 2). В SQL Server системный параметр SET ANSI_PADDING] для полей NCHAR и NVARCHAR всегда установлен (ON).

REAL, FLOAT(24)(mun данных SQL 2003: REAL)

Хранит значения с плавающей точкой в диапазоне -3.40Е+38 до 3.40Е+38. Занимает 4 байта. Тип REAL функционально эквивалентен типу FLOAT(24).

ROWVERSION (тип данных SQL 2003: отсутствует)

Уникальное число, хранимое в базе данных, которое обновляется всякий раз, когда обновляется строка, В более ранних версиях называется TIMESTAMP.

SMALLDATETIME (тип данных SQL 2003: отсутствует)

Хранит дату и время в диапазоне от "01-01-1900 00:00" до "06-06-2079 23:59" с точностью до минуты. (Минуты округляются до меньшего значения, если значение секунд 29.998 и менее, в противном случае они округляются до большего значения.) Значение занимает 4 байта.

SMALLINT (тип данных SQL 2003: SMALLINT)

Хранит целые числа со знаком или без знака в диапазоне от -32 768 до 32 767. Занимает 2 байта. Смотрите описание типа INT, где приведены правила, относящиеся к свойству IDENTITY, которые также применимы и к этому типу.

SMALLMONEY (тип данных SQL 2003: отсутствует)

Хранит денежные значения в диапазоне от 214748.3648 до -214748.3647. Значения занимают 4 байта.

SQL VARIANT (тип данных SQL 2003: отсутствует)

Хранит значения, относящиеся к другим поддерживаемым SQL Server типам данных, за исключением типов TEXT, NTEXT, ROWVERSION и других значений типа SQL_VARIANT. Может хранить до 8016 байт данных, поддерживаются значения NULL и DEFAULT. Тип SQL_VARIANTиспользуется в столбцах, параметрах, переменных и возвращаемых функциями и хранимыми процедур, ми значениях.

TABLE (тип данных SQL 2003: отсутствует)

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

TEXT (тип данных SQL 2003: CLOB)

Хранит очень большие фрагменты текста длиной до 2 147 483 647 символов. Значениями типа ТЕХТн IMAGE часто гораздо труднее манипулировать, чем, скажем, значениями типа VARCHAR. Например, нельзя создавать индекс по столбцу типа TEXT или IMAGE. Значениями типа TEXT можно манипулировать при помощи функций DATALENGTH, PATINDEX, SUBSTRING. TEXTPTR и ТЕХ-TVALID, а также команд READTEXT, SET TEXTSIZE, UPDATETEXT и WR1TETEXT.

TIMESTAMP (тип данных SQL 2003: TIMESTAMP)

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

Хранит целые числа без знака в диапазоне от 0 до 255 и занимает 1 байт. Смотрите описание типа /Л/Г, где приведены правила, относящиеся к свойству IDENTITY, которые также применимы и к этому типу.

UNIQUEIDENTIFIER (тип данных SQL 2003: отсутствует)

Представляет собой значение, уникальное для всех баз данных и всех серверов. Представлено в виде хххххххх-хххх-хххх-хххх-хххххххххххх, в котором каждый «х» представляет собой шестнадцатеричное число в диапазоне 0-9 или а - f. Единственными операциями, которые можно производить над значениями этого типа, являются сравнение и проверка на NULL. В столбцах этого типа можно использовать ограничения и свойства, за исключением свойства IDENTITY.

VARBINARY[(п)] (тип данных SQL 2003: BLOB)

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

VARCHARf[(n)], CHAR VARYING [(п)], CHARACTER VARYING f(n)J (тип данных SQL 2003: CHARACTER VARYING [(n)]

Хранит символьные данные фиксированной длины размером от 1 до 8000 символов. Занимаемое место равно реальному размеру введенного значения в байтах, а не значению п.

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

2.3.1 Типы char и varchar.

Являются символьными типами данных фиксированной или переменной длины.

char [ (n) ] - символьные данные фиксированной длины, не в Юникоде, с длиной n байт. Значение n должно находиться в интервале от 1 до 8000. Размер хранения данных этого типа равен n байт. Синонимом по стандарту ISO для типа char является character.

varchar [ (n | max) ] - символьные данные переменной длины, не в Юникоде; n может иметь значение от 1 до 8 000; max означает, что максимальный размер хранения равен 2^31-1 байт. Размер хранения равен фактической длине данных плюс два байта. Введенные данные могут иметь длину 0 символов. Синонимами по стандарту ISO для типа varchar являются типы char varying или character varying.

Данные char или varchar могут быть отдельным знаком или строкой максимальной длиной в 8000 символов для данных char и до 2^31 символов для данных varchar.

Типы данных varchar могут принимать две формы. Данные varchar могут быть указанной максимальной длины в знаках, например varchar(6) свидетельствует о том, что в этом типе данных может храниться максимум шесть символов или он может иметь вид varchar(max), увеличивающий максимальное число символов, которые могут храниться в этом типе данных, до 2^31.

Символьные константы должны быть заключены в одинарные (") или двойные кавычки ("). Рекомендуется заключение символьных констант в одинарные кавычки. Заключение символьных констант в двойные кавычки иногда не допускается, если параметру QUOTED IDENTIFIER присвоено значение ON.

Данный пример кода Transact-SQL присваивает символьной переменной значение:

DECLARE @MyCharVar CHAR(25)

SET @MyCharVar = "Ricardo Adocicados"

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

Например:

SET @MyCharVar = "O""Leary"

Если данные, подлежащие хранению, длиннее, чем допустимое число символов, они усекаются. Например, если столбец определен как char(10) и в нем сохраняется значение "Это действительно очень длинная символьная строка", то SQL Server усекает символьную строку до "Это действ".

Тип данных char становится типом данных с фиксированной длиной, если указано предложение NOT NULL. Если в столбец char с предложением NOT NULL вставляется значение короче, чем длина столбца, это значение заполняется вправо при помощи пробелов до размера столбца. Например, если столбец определен как char(10) и в нем должно быть сохранено значение "музыка", SQL Server сохраняет данные в виде "музыка____", где "_" обозначает пробел.

2.3.2 Типы данных nchar и nvarchar.

Это - символьные типы данных, имеющие постоянную длину (nchar), или переменную длину (nvarchar), содержащие данные в Юникоде и использующие набор символов UCS-2.

nchar [ (n) ] - символьные данные в Юникоде длиной в n символов. Аргумент n должен иметь значение от 1 до 4000. Размер хранилища вдвое больше n байт. Синонимами по стандарту ISO для типа nchar являются типы national char и national character.

nvarchar [ (n | max) ] - символьные данные в Юникоде переменной длины. Аргумент n может принимать значение от 1 до 4 000. Аргумент max указывает, что максимальный размер хранилища равен 2^31-1 (2 147 483 647) байт. Размер хранилища в байтах вдвое больше числа введенных символов + 2 байта. Введенные данные могут иметь длину в 0 символов. Синонимами по стандарту ISO для типа nvarchar являются типы national char varying и national character varying.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: