EXES SP _help ‘pubs… ” Title author”’
EXES SP _help ‘pubs… [Title author]’
По умолчанию в качестве ограничителя имени можно использовать как двойные кавычки (“), так и квадратные скобки []. Область применения двойных кавычек зависит от соответствующих значений конфигурации сервера. Причём эти установки могут устанавливаться на трёх уровнях: на уровне соединения с помощью команды SETQUOTED _IDENIFIER, на уровне базы данных с помощью хранимой процедуры sp_abortion ‘quotedidentifier’ ON | OFFи на уровне сервера.
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.