Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Определение типов данных

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

 

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

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

• столбцов таблиц и представлений;

• параметров хранимых процедур;

• переменных;

• функций Transact-SQL, которые возвращают одно или несколько значений определенного типа;

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

Один из первых этапов конструирования таблицы — назначение каждому ее столбцу типа данных. SQL Server поддерживает набор системных типов данных, которые определяют все типы данных, разрешенные к использованию в SQL Server. Эти типы позволяют обеспечивать целостность данных, поскольку вводимые или изменяемые данные столбца должны соответствовать типу, изначально заданному в операторе C REATE TABLE. Например, нельзя хранить фамилию в столбце, для которого определен тип данных datetime, поскольку в такой столбец можно ввести только допустимые даты.

При назначении объекту типа данных определяются четыре атрибута этого объекта:

• вид данных, которые могут содержаться в объекте — например, символьные, целочисленные или двоичные;

• длина или размер хранимого значения — длина типов данных image, binary и varbinary определяется в байтах. Длина любого числового типа данных — это число байт, необходимое для хранения числа знаков, разрешенного для этого типа данных. Длина символьных типов данных, в том числе в кодировке Unicode, определяется в символах;

• точность числа (только для числовых типов данных) — количество знаков, которыми представлено число. Например, объект типа smallint может хранить не более пяти знаков, поэтому его точность равна пяти;

• точность дробной части числа (только для числовых типов данных) — количество десятичных знаков после запятой. Например, у объекта типа int нет дробной части, поэтому точность его дробной части равна нулю. У объекта типа money может быть до четырех знаков после запятой, поэтому точность его дробной части равна четырем.

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

Категория типа данных Описание Базовый тип данных Описание
Двоичные Двоичные данные, хранящие строки бит. Данные состоят из шестнадцатеричных чисел. Например, десятичное число 244 соответствует шестнадцатеричному F4 binary Данные одинакового фиксированного размера {до 8 кб)
varbinary Данные с различным числом шестнадцатеричных знаков (до 8 кб)
image Данные переменной длины, размер которых превышает 8 кб
Символьные Символьные данные, состоящие из любых комбинаций букв, символов и цифр, Например, комбинации “1kuku2” и “<0*&(%B99nhjkJ” считаются допустимыми символьными данными char У данных должен быть один и тот же фиксированный размер (до 8 кб}
varchar Число символов может быть различно, но общая длина не должна превышать 8 кб
text Данные из ASCII-символов, размер может превышать 8 кб
Дата и время Данные, состоящие из допустимых комбинаций времени даты. Не существует отдельных типов данных для хранения только времени или только даты datetime Даты из диапазона I января 1753 г. — 31 декабря 9999 г. (для хранения одного значения требуется 8 байт)
smalldatetime Даты из диапазона 1 января 1900 г. — 6 июня 2079 г. (для хранения одного значения требуется 4 байта)
Десятичные Данные, которые сохраняются до наименьшего значащего разряда decimal Данные длиной до 38 знаков, все знаки могут относиться к дробной части. Этот тип данных хранит точное, а не приближенное представление числа
numeric В SQL Server этот тип данных является эквивалентом decimal
С плавающей запятой Приближенные числовые данные (с плавающей запятой), точность определяется возможностями двоичной системы счисления float Числа из интервала от -1.79Е+308 до 1,79Е+308
real Числа с плавающей запятой из интервала от ‑3.40Е+38 до 3.40Е+38
Целочисленные Целочисленные данные, состоящие из отрицательных и положительных целых чисел bigint Числа из интервала от ‑2^63 до 2^63-1 Размер — 8 байт
int Число из интервала от ‑2147483648 до 2147483647 (для хранения необходимо по 4 байта на одно значение)
smallint Только числа из интервала от ‑32768 до 32767 (для хранения необходимо по 2 байта на одно значение)
tinyint Только числа из интервала 0 — 255 (для хранения необходимо по 1 байту на одно значение)
Денежные Финансовые данные, представляют положительные или отрицательные денежные суммы money Суммы от ‑922337203685477,5808 до +922337203685477,5807 (для хранения требуется 8 байт)
smallmoney Денежная сумма из интервала от ‑234748,3648 до 214748,3647 (для хранения требуется 4 байта)
Специальные Специальные данные, не попадающие ни в одну другую категорию данных bit Данные, состоящие из пар 1 и 0. Используются для представления пар TRUE и FALSE, а также YES и NO
cursor Этот тип данных используется для переменных и выходных параметров хранимых процедур, которые содержат ссылку на курсор. Любые переменные с этим типом данных допускают пустые значения
timestamp Данные этого типа используются для указания последовательности выполнения SQL Server операций над строками. Представлены возрастающим числом в двоичном формате
uniquedentifier Данные, состоящие из 16-байтовых шестнадцатеричных чисел, указывающие глобально уникальный идентификатор (GUID). С помощью GUID можно сделать строку уникальной, т. е. отличающейся от множества других
SQL_variant Могут хранить значения любых поддерживаемых SQL Server типов, кроме text, ntext, timestamp, image и sql_variant
table Этот тип используется для хранения результирующего набора, предназначенного для дальнейшей обработки. Может использоваться только для определения локальных переменных типа table или в качестве типа значения, возвращаемого пользовательской функцией
Unicode С помощью типов данных Unicode можно хранить в столбцах любые символы, определенные стандартом Unicode, куда входят все символы, определенные в разнообразных наборах символов. Для хранения типов данных Unicode требуется в два раза больше места по сравнению с типами, отличными от Unicode nchar Данные, имеющие одинаковый фиксированный размер (до 4000 символов Unicode)
nvarchar Данные, состоящие из различного числа символов Unicode (до 4000)
ntext Данные, размер которых превышает 4000 символов Unicode

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

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

У некоторых базовых типов данных есть синонимы (например, rowversion — это синоним timestamp, a national character varying — синоним nvarchar).

 

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

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

Для создания пользовательского типа данных необходимо предоставить следующую информацию:

• имя;

• системный тип данных, лежащий в основе нового типа данных;

• возможность ввода пустых значений (допускает ли новый тип данных пустые значения);

Если возможность нулевых значений не определена явно, она задается на основе параметра по умолчанию (ANSI null) для базы данных или соединения.

Если пользовательский тип данных создан в базе данных Model, он появится во всех новых пользовательских базах данных. Однако если новый тип данных создан в пользовательской базе данных, он будет существовать только в ней.

Пользовательские типы данных создаются посредством системной хранимой процедуры sp_addtype или SQL Server Management Studio.

 

<== предыдущая лекция | следующая лекция ==>
Создание и управление базой данных MS SQL Server | Выборка и модификация данных в MS SQL Server
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 1389; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.018 сек.