Символьные типы данных
- CHAR[(n)] - cтроки фиксированной длины, где n - число символов в строке;
- VARCHAR[(n)] - строки переменной длины, где n - максимальное число символов в строке;
- TEXT - строки потенциально неограниченного размера (до 2 Гб текста в строке).
В данном случае 1? n? 255. Символьные столбцы, допускающие пустые значения (NULL), хранятся как столбцы переменной длины.
Примеры определений столбцов и типов данных:
name VARCHAR(40)
state CHAR(2)
description CHAR(50) NULL
Двоичные типы данных
- BINARY(n) - двоичные строки фиксированной длины, где n - число двоичных символов в строке;
- VARBINARY(n) - двоичные строки переменной длины, где n - максимальное число двоичных символов в строке;
- IMAGE - большие двоичные строки (изображения до 2 Гб в строке).
В данном случае 1? n? 255.
Пример задания двоичного столбца:
bin_column BINARY(4) NOT NULL
Типы данных даты
SQL Server поддерживает два типа обозначения даты и времени при хранении: DATETIME и SMALLDATETIME. Последний менее точный и охватывает меньший диапазон дат, но зато позволяет экономить место на диске.
|
|
SQL Server поддерживает различные форматы ввода даты. По умолчанию он работает с датами в формате xx/yy/zz как с последовательностями месяц/день/год. Точность представления времени при использовании DATETIME - 3 миллисекунды, а при использовании SMALLDATETIME - 1 минута. Пример:
Формат ввода: 4/15/99
Значение DATETIME: Apr 15 1999 12:00:00:000 AM
Значение SMALLDATETIME: Apr 15 1999 12:00 AM
Логический тип данных
SQL Server поддерживает логический тип данных BIT для столбцов флагов, имеющих значение 1 или 0.
Числовые типы данных
Числовые типы данных разбиваются на четыре основные категории:
- целые, включающие INT, SMALLINT и TINYINT.
- данные с плавающей точкой, включающие FLOAT и REAL.
- данные с фиксированной точкой - NUMERIC и DECIMAL
- денежные типы данных - MONEY и SMALLMONEY.
Целые типы данных
Характеристика | INT | SMALLINT | TINYINT |
Минимальное значение | -2 | 0 | |
Максимальное значение | 255 | ||
Объем памяти | 4 байта | 2 байта | 1 байт |
Типы данных с плавающей точкой
Характеристика | FLOAT | REAL |
Минимальное значение | ± 2.23E-308 | ± 1.18E-38 |
Максимальное значение | ± 1.79E308 | ± 3.40E38 |
Точность | до 15 значащих цифр | до 7 значащих цифр |
Объем памяти | 8 байтов | 4 байта |
Спецификатор типа FLOAT имеет вид FLOAT[(p)], где p - точность.
Точные числовые типы данных
Эти типы данных вводится описателями DECIMAL[(p,s)] и NUMERIC[(p,s)], где p - точность, s - масштаб. Они являются синонимами и взаимозаменяемы, но только NUMERIC может использоваться в комбинации со столбцами IDENTITY. Точность - это число значащих цифр, масштаб - число цифр после десятичной точки.
Пример: NUMERIC(7,2).
Если опущен масштаб, то он полагается равным нулю, а если опущена точность, то ее значение по умолчанию определяется в реализации.
|
|
Денежные типы данных
Характеристика | MONEY | SMALLMONEY |
Диапазон | 922337203685477.5808 | 214748.3647 |
Размер памяти | 8 байтов | 4 байта |
Создание таблицы
Оператор создания таблицы имеет следующий синтаксис:
<оператор создания таблицы>::= CREATE TABLE <имя таблицы> (<элемент таблицы>[{,<элемент таблицы>}...])
<элемент таблицы>::=<определение столбца> | <определение ограничения целостности>
Каждая таблица БД имеет простое и квалифицированное (уточненное) имена. В качестве квалификатора имени выступает “идентификатор полномочий”.
Квалифицированное имя таблицы имеет вид: <идентификатор полномочий>.<простое имя>
Определение столбца
<определение столбца>::= <имя столбца><тип данных>[<раздел умолчания>] [{<ограничение целостности столбца>}...]
<раздел умолчания>::= DEFAULT {<литерал> | USER | NULL}
<ограничение целостности столбца>::= NOT NULL[<спецификация уникальности>] | <спецификация ссылок> | CHECK (<условие поиска>)
В разделе умолчания указывается значение, которое должно быть помещено в строку, заносимую в данную таблицу, если значение данного столбца явно не указано. Значение по умолчанию может быть: 1) литеральная константа, соответствующая типу столбца; 2) символьная строка, содержащая имя текущего пользователя (USER); 3) неопределенное значение (NULL).
Если значение столбца по умолчанию не специфицировано, и в разделе ограничений целостности столбца указано NOT NULL (т.е. наличие неопределенных значений запрещено), то попытка занести в таблицу строку с неспецифицированным значением данного столбца приведет к ошибке.
Если ограничение NOT NULL не указано, и раздел умолчаний отсутствует, то неявно порождается раздел умолчаний DEFAULT NULL.
Ограничения целостности столбца в принципе сходны с ограничениями целостности таблицы и рассмотрены ниже.