Смекни!
smekni.com

Transact-SQL (стр. 2 из 5)

EXES SP _help ‘pubs… ” Title author”’

EXES SP _help ‘pubs… [Title author]’

По умолчанию в качестве ограничителя имени можно использовать как двойные кавычки (“), так и квадратные скобки []. Область применения двойных кавычек зависит от соответствующих значений конфигурации сервера. Причём эти установки могут устанавливаться на трёх уровнях: на уровне соединения с помощью команды SETQUOTED _IDENIFIER, на уровне базы данных с помо­щью хранимой процедуры sp_abortion ‘quotedidentifier’ ON | OFFи на уровне сер­вера.

2 Типы данных

2.1. Таблица systypes

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

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

SELECT * FROMsystypes

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

Обращаясь к таблице systypes, можно получить информацию о созданных базе типа данных, не прибегая к использованию EnterpriseManager. Для получе­ния информации о конкретном типе данных можно использовать системную хра­нимую процедуру sp_help:

EXECsp_help ‘data_type’

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

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

К целочисленным типам данных (общее название – integer) относятся следующие типы данных:

1 Int (или integer). Для хранения данных используется 32 бит или 4 байта, что обеспечивает 4 294 967 296 вариантов значений. 31 бит использу­ется для хранения собственно числа, а старший бит предназначен для ука­зания знака. Если этот бит установлен в 1, то число отрицательное. Следо­вательно, этот тип данных позволяет хранить целые числа в диапазоне от -231до 231-1, что соответствует интервалу от -2 147 483 648 до 2 147 483 647.

2 Smallint. Для хранения данных используется 16 бит, или 2 байта, что обеспечивает 65 536 вариантов значений. 15 бит используется для хра­нения собственно числа, а старший бит предназначен для указания знака. Следовательно, этот тип данных позволяет хранить целые числа в диапа­зоне от -215 до 215-1, что соответствует интервалу от -32 768 до 32 767.

3 Tinyint. Этот целочисленный тип занимает всего 1 байт и не содер­жит отрицательных чисел. Все биты интерпретируются как числовое значе­ние. Тип данных tinyintпозволяет хранить значения в интервале от 0 до 255.

При выборе того или иного типа данных необходимо исходить из физического значения хранимых данных. Например, если в колонке будет храниться ко­личество лет, исполнившееся сотруднику, то лучшим вариантом будет использо­вание типа tinyint, так как не придётся хранить отрицательные значения и вряд ли человек проживёт более 255 лет.

Числа, в составе которых есть десятичная точка, называется нецелочисленными. Microsoftразделяет нецелочисленные данные на два типа десятичные (decimal) и приблизительные (approximate).

Десятичные данные физически хранятся не в виде чисел, а в виде последовательности цифр. Для предоставления каждой десятичной цифры обычно используется 4 бита, то есть один байт позволяет хранить две десятичных цифры, или значение от 0 до 99. В то же время, использование байта для представления [3]числа в двоичной форме позволяет хранить значения в диапазоне от 0 до 255. К десятичным типам данных относятся следующие :

1 Decimal [(p [, s])] (или dec) и Numeric [(p [, s])]. Эти два типа практи­чески не различаются, и их можно с успехом взаимно заменять. Эти типы содержат фиксированное количество знаков до и после запятой. При использовании типов decimalи numericможно задавать значения, лежащие в диапазоне от –(1038-1) до 1038-1. Аргумент pопределяет максимально воз­можное количество десятичных знаков (до и после запятой в сумме). Мак­симальное значение этого параметра равно 38. Аргумент sопределяет коли­чество десятичных знаков после запятой, которое будет храниться в этом типе данных. Это значение может быть равно значению p, но не может пре­вышать его. Если этот аргумент не указан, то по умолчанию используется значение 0, то есть хранение цифр после запятой не допускается.

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

2 Float [(n)]. Этот тип представляет данные с плавающей запятой. Возможные значения лежат в пределах от -1,79*10308до 1,79*10308. Значе­ние nопределяет количество бит, используемых для хранения мантиссы. Этот параметр определяет точность данных и может принимать значение от 1до 53. Физически тип fioatподдерживает два вида точности: до 7 цифр и до 15 цифр. В первом случае значение nможет быть от 1 до 24 и для хранения типа floatиспользуется 4 байта. Во втором случае nможет принимать зна­чение от 25 до 53 и для хранения типа floatиспользуется 8 байт.

3 Real. Этот тип данных представляет частный случай типа floatсо значением аргумента n, равным 24. Для хранения типа realиспользуется 4 байта, и он обеспечивает представление чисел в диапазоне от -3,40*1038до 3,40*1038.

Для хранения данных о денежных суммах Transact-SQLпредлагает использовать типы данных, дающие хранение до 4 знаков после запятой.

К денежным типам данных относятся:

1 Money. Для данных этого типа отводится 8 байт, что обеспечивает представление чисел в диапазоне от -922 337 203 685 477,5808 до +922 377 203 685 477,5807. Если необходимо хранить данные большей длины, то можно использовать тип decimalили numeric.

2 Smallmoney. Это более компактный вариант типа money. Для хране­ния значений типа smallmoneyотводятся 4 байта, что обеспечивает представление чисел в диапазоне от -214 748,3648 до 214 748,3647.

Для хранения информации о дате и времени Transact-SQLпредлагает два типа данных, позволяющих одновременно хранить сведения и о дате, и о вре­мени. Нет встроенных типов, позволяющих хранить отдельно информацию только о дате или только о времени. Использование специализированных типов позволяет более гибко управлять данными о времени и проводить с ними различ­ные операции. К временным типам данных относят следующие :

1 Datetime. Для предоставления этого типа используется 8 байт. В пер­вых 4 хранится информация о дате. Это значение- своего рода смеще­ние относительно базовой даты. В качестве базовой даты было выбрано 1 января 1753 г. Оставшиеся 4 байта хранят информацию о количестве мил­лисекунд, прошедших после полуночи данного дня. В итоге тип данных datetimeпозволяет хранить значения о дате и времени в диапазоне от 1 ян­варя 1753 г. до 31 декабря 9999 г. с точностью до 3,33 мс.

2 Smalldatetime. Для представления данных этого типа используется 4 байта. Первые 2 байта используются для хранения информации о дате, а оставшиеся 2 байта - о времени. Тип данных smalldatetimeобеспечивает хранение информации о дате в диапазоне от 1 января 1900 г. до 6 июня 2079 г. с точностью до минуты.

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

Бинарные типы данных используются для хранения последовательности двоичных значений большой длины. Большинство типов Transact-SQLпозволяют хранить значения длиной до нескольких байт, которые в большинстве случаев представляют физические характеристики объектов. В бинарных типах данных можно хранить любые значения, начиная от текста и заканчивая исполняемым кодом программы. Бинарные типы делятся:

1 Binary (n). Этот тип данных позволяет хранить до 8000 байт, что стало возможно благодаря изменению внутренней архитектуры системы хранения данных Transact-SQL, а конкретно - размера страницы. Данные типа binaryне могут размещаться более чем на одной странице, поэтому их максимальный размер зависит от размера страницы. Значение n определяет количество байт, которое будет хранить.

2 Verbinary(n). Этоттиппохожнатипbinary. Аргумент n (максималь­ное значение-8000) определяет только максимальную длину, при повышении которой происходит усечение данных.

3 Image. Этот бинарный тип позволяет преодолевать ограничение длины в 8000 байтов, характерное для типов binaryи varbinary. При ис­пользовании этого типа допускается хранение битовых полей длиной до 231-1 (2 147 483 647).

При выборе того или иного типа данных придётся выбирать между производительностью работы системы хранения и свободным пространством в базе данных. Тип данных imageстоит в стороне от типов binaryи varbinary, и его использование оправдано лишь в том случае, если необходимо хранить действительно длинные поля бинарных данных.

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

1 Char. Этот тип данных разрешает хранение набора символов дли­ной до 8000 знаков. Аргумент nопределяет максимальное количество символов, равное 8000. В таблице для хранения значений типа charвыде­ляется указанное количество байт независимо от того, сколько символов было реально сохранено.

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

3 Nchar. Поведение сервера при работе с этим типом аналогично ра­боте с charс тем отличием, что тип ncharиспользуется для хранения символов Unicode. Каждый символ Unicodeзанимает два байта и макси­мальное количество символов, которое можно сохранить с использова­нием этого типа, равно 4000.