Подробно о типах данных

Подробно о типах данных

Выбор типа данных & — важный шаг в дизайне таблицы

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

Столбцам нужны типы данных

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

Большинство столбцов в этой таблице являются текстовыми полями. Номер телефона, штат и почтовый индекс всегда имеют одинаковую длину, поэтому столбцы phone, state и ZIP являются символьными полями. Имя автора, адрес и город могут различаться по длине, поэтому для них лучше использовать данные varchar. Столбец контракта с информацией о заключении контракта с автором, где данные представлены в форме да / нет, представляет собой двоичный битовый тип данных, который имеет два возможных значения & — 0 и 1. Теперь давайте подробнее рассмотрим системные типы данных.

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

В версии 6.0 SQL Server определяет 19 типов данных, а SQL Server 7.0 добавляет еще 4 типа для облегчения обработки данных Unicode и для поддержки хранилища данных. Приложения. Каждый тип данных имеет несколько вариантов с возможным набором значений. Понимание этих значений поможет вам выбрать правильный тип данных.

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

Символьные данные один из наиболее распространенных типов данных. Этот тип включает символьные данные, такие как имена и адреса. В SQL Server версии 6.5 длина каждого столбца символов была ограничена 255 символами. Если информация была длиннее, например, если в столбец нужно было ввести бесплатный комментарий о соглашении, то следует использовать текстовый тип данных. В SQL Server 7.0 это ограничение было снято, поэтому строковое поле может содержать до 8000 байт. Верхний предел обусловлен размером страницы памяти, поскольку ни одна запись не может храниться более чем на одной странице. Если для столбца указан тип данных char, данные должны быть заключены в кавычки, как показано в следующем примере:

 UPDATE .....
УСТАНОВЛЕННЫЙ .....
ГДЕ ..... 

В соответствии со статьей "Работа с символьными данными в майском выпуске вы можете выбрать тип символьных данных фиксированной длины, char, или переменной длины, varchar. Фиксированный размер предпочтительнее в случаях, когда данные имеют одинаковую или похожую длину, например, при вводе идентификатора автора (часто используется в качестве индивидуального номера социального страхования, что является плохим примером для подражания). В большинстве случаев использование данных переменной длины не приводит к заметному увеличению времени обработки. Однако имя автора может быть очень длинным, поэтому varchar является допустимым. Для большинства фамилий наличие фиксированной длины поля приводит к потере значительного количества памяти, поэтому тип данных varchar лучший выбор. При выборе того или иного типа данных всегда следует Необходимо учитывать два компромисса: с одной стороны, потеря полезной памяти с данными.фиксированная длина и, с другой стороны, увеличенное время обработки данных переменной длины.

SQL Server 7.0 поддерживает набор символов Unicode. По этой причине необходимо было ввести дополнительный тип данных, чтобы в полной мере использовать расширенные возможности Unicode. Если мы хотели использовать символьные данные Unicode, мы ввели тип данных Nchar или, если нам нужен тип данных переменной длины, Nvarchar. При вводе данных Unicode заключите их в одинарные кавычки и поместите непосредственно перед ним заглавную букву N. Если в приведенном выше примере имя автора является типом данных Unicode, предыдущим оператором обновления будет:

 UPDATE. ....
УСТАНОВЛЕННЫЙ .....
ГДЕ ..... 

Максимальный предел длины данных для типа данных Unicode составляет 4000 символов. Это связано с тем, что для каждого символа Юникода требуется два байта памяти. Следовательно, стандартная страница 8K может содержать вдвое меньше символов Unicode, чем обычные символы.

Integer

Базовый целочисленный тип находится в диапазоне от -2 147 483 638 до 2 147 483 647. Целые числа с уменьшенными числами находятся в диапазоне от -32,768 до 32767. Часто, когда вы знаете, что диапазон возможных значений для числовых данных невелик, лучше использовать тип данных smallint. Например, в базе данных сбора персональных компакт-дисков используйте тип данных smallint при выборе типа данных для первичного ключа. Предположение о том, что количество компакт-дисков в такой коллекции превысит 32 676, кажется нереальным. В этом случае тип данных tinyint не следует использовать для оптимизации памяти, поскольку он может обрабатывать только значения от 0 до 255. Этот тип данных может быть полезен для нумерации сертификатов условного депонирования, но может быть недостаточным для коллекций компакт-дисков.

Точные числовые данные

Если вашему приложению необходимо получить числовое значение из базы данных в определенном формате, выберите один из точных числовых типов данных. Есть два точных типа числовых данных: десятичные и числовые, и по сути они одинаковы. Для них можно указать требуемую точность p и масштаб s в десятичном формате (p, s). Точность представляет собой количество значащих символов по обе стороны от десятичной точки, а масштаб & — количество символов справа. Например, число 123,4567 может храниться в столбце с типом данных, указанным как (7.4). Если число, которое будет сохранено в столбце с точным числовым типом данных, содержит больше десятичных разрядов, чем указано в типе данных, число будет округлено до требуемой точности. Числовые типы данных могут использоваться для хранения значений от 2 до 17 байтов.

Расширенные числовые данные

Некоторые числа не могут быть точно представлены как десятичные с ограниченным количеством цифр, например как одна треть или пи. Для представления этих чисел используются типы данных real или float. Фактические данные сохраняются с точностью от 1 до 7 цифр. Число с плавающей запятой, иногда называемое форматом двойной точности, может содержать от 8 до 15 значащих цифр. Типы данных с действительной и плавающей запятой используются в научных приложениях для хранения чисел, не требующих точного двоичного выражения. Последние одна или две цифры могут быть неточными при преобразовании в двоичную форму. Следовательно, эти числа не следует использовать в точных операциях сравнения, используемых в операторах WHERE.

Двоичный

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

Money

Существует два типа данных для представления денежных значений: money и smallmoney. Тип данных «деньги» используется для хранения значений в диапазоне от плюс до минус 922 триллиона. Большинство из нас очень хорошо разбираются в smallmoneyтип данных, который перекрывает диапазон значений от -214 748,3648 до +214 748,3647. По соглашению, денежный тип данных имеет четыре десятичных разряда в памяти и требует только два десятичных разряда, чтобы представить его пользователям. Обратите внимание, что во многих финансовых транзакциях тип данных money не используется. Например, в транзакциях по обмену валюты используются дроби 1/32, для хранения которых требуется пять десятичных знаков.

Даты

В SQL Server дата и время хранятся в одном столбце. , поэтому, если вы используете функцию GETDATE () для запроса текущей даты, система также сообщит время. Два типа данных используются для dat, datetime и smalldatetime. Тип данных smalldatetime охватывает период с 1 января 1900 г. по 6 июня 2079 г. и включает время с точностью до минуты. Этого объема достаточно для подавляющего большинства проектов. Тип данных datetime может использоваться до 31 декабря 9999 г. (учтите это при решении проблемы 10 000 лет). Область действия этого типа данных начинается 1 января 1753 г. Почему 1753 год? Это связано с переходом от юлианского к григорианскому календарю. Хотя григорианский календарь был предложен некоторое время назад, процесс его принятия занял около 30 лет. В течение этого периода некоторые страны уже приняли григорианский язык, а другие еще не приняли. Итак, чтобы свидание было четко воспринято, нужно знать географическое положение места. Причем год начался не 1 января, а 1 марта. Следовательно, такую ​​дату, как 15 января 1792 года, можно интерпретировать как половину первого месяца 1492 года и как половину 11-го месяца 1793 года. Создатели SQL Server решили не рисковать, поэтому они решили не принимать даты до 1753 года. Также обратите внимание, что тип данных datetime представляет тысячные доли секунды, хотя точность гарантируется только до 1/300 секунды.

Тексты и изображения

Для символьных данных длиннее 255 символов, SQL Server 6.5 должен использовать текстовый тип данных. SQL Server 7.0 расширяет предел применимости для этого типа данных до 8000 символов. Для больших двоичных объектов (BLOB), таких как цифровые изображения, используется тип данных изображения. Типы данных текст или изображение не хранятся в строках и, следовательно, не подлежат ограничению размера страницы. В строках хранятся только указатели на страницы базы данных, содержащие информацию. Для обновления этих типов данных требуются специальные процедуры, которые выходят за рамки этой статьи. (Подробнее об этом в статье Майкла Оти «Мы не боимся большого двоичного объекта», опубликованной в апрельском номере). Единственное, что следует отметить, это то, что изменения текстовых данных или изображений не регистрируются, а индексы не обновляются. Меняются только поля, содержащие текст или изображение.

Специальные типы данных

Некоторые типы данных трудно вписать в какую-либо категорию. Один из них битовые данные. Это целое число, которое может принимать только два значения 0 и 1 (один байт может содержать восемь таких значений). Битовые значения часто используются как флаги, принимая значения true или false. Их можно использовать, например, для хранения информации о том, работает ли автор по контракту, являются ли его книги бестселлерами или что-то еще. Одно из небольших отличий в SQL Server 7.0 заключается в том, что теперь для столбцов битовых данных разрешены неопределенные значения, тогда как в SQL Server 6.5 разрешены только 0 и 1.

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

В SQL Server 7.0 были введены два новых типа данных:которые будут обсуждаться более подробно в следующих постах. Тип данных uniqueidentifier позволяет присвоить столбцу глобально уникальное значение. Глобальная уникальность означает уникальность не только в пределах конкретной базы данных или в пределах одного компьютера, но и везде в целом. Этот тип данных играет важную роль Тип данных курсора используется для переменных курсора, а курсор используется для переменных курсора. Тип данных курсора используется для переменных курсора. Использование курсоров это & ​​# 8212 отдельная большая тема, которой автор намерен посвятить целую статью.

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

SQL Server позволяет пользователям определять свои собственные типы данных, которые представляют собой комбинацию системных типов данных. Как правило, они основаны на системном типе данных определенной длины (то есть числовых и символьных значениях), которому присвоены правила и значения по умолчанию. Например, вы можете определить тип данных Почтовый индекс как char (10) и тип данных Телефонный номер как char (14). Тогда тип данных Почтовый индекс обеспечит согласованность форматов почтовых индексов во всех столбцах для каждого клиента, продавца, сотрудника или контакта в любой точке мира.

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

На данный момент новые типы данных можно добавлять с помощью SQL Server Enterprise Manager или Query Analyzer (в SQL Server 6.5 это делается из ISQL windows / w). Каждый тип данных, добавленных пользователями, действителен только в этой базе данных. Однако, если тип данных должен быть создан для всех баз данных, он должен быть помещен в базу данных модели. После создания в этой базе данных новый тип данных будет доступен во всех других базах данных. Есть еще один способ решить эту проблему & — напишите сценарий или сгенерируйте его с помощью инструмента «Создание сценария SQL», входящего в состав SQL Server. Затем вы можете запустить этот сценарий из любой базы данных. В Enterprise Manager щелкните правой кнопкой мыши имя базы данных, затем выберите Все задачи, Создать сценарий SQL и, наконец, Создать сценарий SQL для всех типов данных. Щелкните правой кнопкой мыши и выберите «Новые пользовательские свойства типа данных». Затем начните определение типа данных.

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

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

Выберите правильный тип

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

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

Об авторе

Майкл Д. Рейли ([email protected]) является соучредитель и вице-президент Mount Vernon Data Systems, которая занимается консультированием в области Windows NT и SMS, а также созданием приложений с использованием баз данных. Он сертифицирован MCSE и MCT для Windows NT, SQL Server и SMS.

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

 au_id varchar (11) NOT NULL ,
имя varchar (40) NOT NULL,
au_fname varchar (20) НЕ NULL,
Подробно о типах данных

phone char (12) NOT NULL, адрес varchar (40) NULL, город varchar (20) NULL, состояние char (2) NULL, zip char (5) NULL, Бит контракта NOT NULL)

Список 2. Определите типы данных и затем создайте таблицу авторов.

 SP_ADDTYPE id, `char (11)`, `not null`.
ЕГО
SP_ADDTYPE номер телефона, `char (12)`, `not null`.
ЕГО
Код состояния SP_ADDTYPE, `char (2)`, `null`.
ЕГО
Почтовый индекс SP_ADDTYPE, `char (10)`, `null`.
ЕГО
СОЗДАТЬ ТАБЛИЦУ dbo. авторы (
au_id id НЕ ПУСТО,
au_lname varchar (40) НЕ NULL,
au_fname varchar (20) НЕ NULL,
телефонный номер (12),
адрес varchar (40) NULL,
город varchar (20) NULL,
Индекс,
Индекс,
бит контракта НЕ ПУСТОЙ) 
 
 

Оцените статью