Типы данных, управляющие конструкции языка и функции Transact - SQL .



Мы поможем в написании ваших работ!


Мы поможем в написании ваших работ!



Мы поможем в написании ваших работ!


ЗНАЕТЕ ЛИ ВЫ?

Типы данных, управляющие конструкции языка и функции Transact - SQL .



Типы данных и преобразование типов.

Встроенные и определённые пользователем типы данных хранятся в текущей базе данных в таблице systypes и могут быть просмотрены командой

SELECT * FROM systypes

1. Бинарные: требуется указывать числа в 16-ричном виде, например 0х FF .
binary ( n )– n определяет количество байт для хранения (до 8000 байт); под каждое значение будет выделено указанное количество байт вне зависимости от фактических размеров данных.
varbinary ( n )– n определяет максимальное количество байт для хранения (до 8000 байт); если массив данных m < n , то фактически отводится m +4 байта, если m > n , то данные усекаются до размера поля.
image– хранятся бинарные данные размером до 2 31 -1 байт (~2 Гбайт), память выделяется страницами по 8000 байт. Использование этого поля оправдано, если требуется хранить очень длинные данные. Специальных функции отображения содержимого полей этого типа SQL Server не имеет.

Пример:
DECLARE @ VA binary (10), @ VB varbinary (10)
SELECT @ VA = 0 xFF , @ VB = 0 xAC
SELECT 'Значение переменной VA : ' = @ VA , 'Значение переменной VB : ' = @ VB
SELECT 'Длина VA : ' = DATALENGTH (@ VA ), 'Длина VB : ' = DATALENGTH (@ VB )

2. Символьные: интерпретируются в зависимости от того, какая кодовая страница была установлена при инсталляции сервера.
char ( n )– n <=8000, ASCII символы (1 байт), резервируется всегда n символов, если размер данных меньше, строка дополняется пробелами справа.
varchar ( n )– то же что и char ( n ), но резервируется максимум n символов. Если размер данных m < n , то дополнения пробелами не происходит.
nchar ( n )– n <=4000, Unicode символы (2 байта), остальное как в char ( n ).
nvarchar ( n )– n <=4000, Unicode символы (2 байта), остальное как в varchar ( n ).

Примеры:
DECLARE @ name nvarchar (25)
SET @ name = N 'Д''Артаньян'
SELECT @ name
-- Что получится в каждом из столбцов?
SELECT 1+1,'1'+'1','1'+'2'+3

Типичные функции для работы со строками:
LEN (…) – возвращает длину строки в символах;
LTRIM (…) и RTRIM (…) – удаляет пробелы в начале и в конце строки
SUBSTRING (…) – возвращает подстроку из строки
REPLACE (…) – заменяет подстроку указанным значением

3. Текстовые:
позволяют хранить достаточно большие объёмы текстовой информации
text– хранение ASCII текстовых блоков размером <=2 31 -1 символов (~2 Гбайт), выделяемых постранично.
ntext– хранение Unicode текстовых блоков размером <=2 30 -1 символов (~1 Гбайт), выделяемых постранично.

Некоторые функции для работы с текстовыми полями:
SUBSTRING (…) – возвращает подстроку текстового поля;
READTEXT (…) – считывает данные из текстового поля;
DATALENGTH (…) – возвращает количество байт, занимаемых данными;

4. Целочисленные: следует учитывать, что результат вычисления выражения приводится к типу данных, имеющих максимальный размер из всех участвующих в выражении. Результатом деления целого на целое будет целое с отброшенной дробной частью.
tinyint– диапазон данных от 0 до 255 (длина поля 1 байт).
smallint– диапазон данных от -2 15 до 2 15 -1 (длина поля 2 байта).
intили integer– диапазон данных от -2 31 до 2 31 -1 (длина поля 4 байта).
bigint– диапазон данных от -2 63 до 2 63 -1 (длина поля 8 байт).

5. Нецелочисленные: с фиксированной и плавающей точкой.
decили decimal [( p [, s ])]или numeric [( p [, s ])]– диапазон от –(10 38 -1) до (10 38 -1). Содержит фиксированное количество знаков до и после точки: p – общее число знаков, s – число знаков после точки (0 <= s <= p <= 38). Длина поля от 5 до 17 байт.
float [( n )]– число в виде мантиссы и порядка. Максимальный диапазон от -1.79 308 до 1.79 308 . Значение n определяет количество бит, используемых для хранения мантиссы ( n <=53). Длина поля 4 или 8 байт.
double precision– частный случай float (53).
real– частный случай float (24). Диапазон данных от -3.4 38 до 3.4 38 .

Примеры:
DECLARE @VR real
SET @VR=1.23E4
SELECT @VR, DATALENGTH(@VR)

Не рекомендуется указывать нецелочисленные типы данных в конструкциях WHERE и для построения индексов или первичных ключей, так как скорость обработки таких полей существенно ниже чем целочисленных
Преобразование типов данных из числа в строку:
DECLARE @VR float, @VS varchar(20)
SET @VR=3.14
SET @VS=STR(@VR,4,2)+'15' – простая функция преобразования типов
SELECT @VS

SET @VS=CAST($123.45 AS varchar(10)) – универсальная функция преобразования
SELECT @VS
SELECT CAST ('$54321' AS money)
Взаимозаменяемой для функции CAST является функция CONVERT
Некоторые функции для работы с числовыми типами:
ISNUMERIC (…) – проверяет, имеет ли выражение числовой тип данных (1, если да);
RAND () – вычисляет случайное число с плавающей точкой в диапазоне [0…1];
POWER (…) – возведение числа в степень ( SELECT power(2,8) );
PI (…) – возвращает значение Пи.

6. Даты и времени: типы данных позволяют одновременно хранить время и дату.
datetime– В первых 4 байтах хранится смещение относительно 1 января 1753 г. (до этого летоисчисление шло по Григорианскому и Юлианскому календарям) до 31.12.9999. Последние 4 байта – время после полуночи с точностью 3.33 мс.
smalldatetime– диапазон от 1.01.1900 до 6.06.2079 с точностью до 1 мин.

Дополнительные возможности для ввода и вывода дат предоставляет команда
SET DATEFORMAT xxx , где xxx может быть: mdy , dmy , ymd , ydm , myd , dym .
Примеры:
SET LANGUAGE 'русский'
DECLARE @ DV datetime
SET @ DV ='21 октябрь 2003 23:19'
SELECT @ DV

Функция ISDATE (<выражение>) возвращает 1, если <выражение> может быть правильно конвертировано в дату, и 0 в противном случае.
Некоторые функции для работы с датой и временем:
GETDATE () – возвращает текущее системное время;
YEAR (…) – возвращает год из указанной даты;
DATEADD (…) – добавляет к дате указанный временной интервал

SELECT year(getdate())

DECLARE @Str1 char(10)
IF DAY ( GETDATE ())<15 SET @ Str 1='первая'
ELSE SET @Str1='вторая'
SELECT 'Сейчас '+RTRIM(@Str1)+' половина месяца'

7. Денежные: поддерживается точность 4 знака после десятичной точки.
money– диапазон от -922 337 203 685 477.5808 до +922 337 203 685 477.5807, длина 8 байт.
smallmoney– диапазон от -214 748.3648 до +214 748.3647, длина 4 байта.
Примеры :
CREATE TABLE MyMoney (
ID bigint IDENTITY (1,1) PRIMARY KEY,
Value money NULL
)
INSERT MyMoney VALUES ($127.35)
SELECT * FROM MyMoney
Специальные :
bit– данные принимают значения 0 / 1 / NULL. Память выделяется побайтно.
timestamp– счетчик-идентификатор записей, уникальный в пределах одной базы данных (не имеет ничего общего с меткой времени). Длина 8 байт. Не может использоваться для объявления переменных. Не должен использоваться в составе первичного ключа.
uniqueidentifier– глобально уникальный идентификатор записи ( GUID ). Идентификатор уникален в масштабе планеты. Представляет собой 16-байтовую последовательность, составляющуюся с помощью функции NEWID ()из MAC -адреса сетевой карты и внутреннего таймера процессора.
sysname– предназначен для хранения имён объектов баз данных SQL Server – столбцов, таблиц, индексов, представлений, хранимых процедур и др.
sql _ variant– позволяет в одном и том же столбце хранить значения любого другого доступного типа данных (за исключением text , ntext , image , timestamp , cursor , table и самого sql _ variant )
Пример:
DECLARE @Var1 int, @Var2 nvarchar(15), @Var3 datetime, @VA sql_variant
SET @Var1=10
SET @Var2='Просто строка'
SET @Var3='23.08.1969'
SET @VA=@Var1+5
SELECT @VA
SET @VA=@Var2
SELECT @VA
SET @VA=@Var3
SELECT @VA
Функция SQL _ VARIANT _ PROPERTY возвращает информацию о природе данных, хранящихся под типом sql _ variant .

cursor– ссылка на объект базы данных – курсор. Подробнее о курсорах см. далее.
table– временная таблица (массив). Может использоваться только для переменных и значений, возвращаемых функциями пользователя.

Пример :
DECLARE @VarTable TABLE (
Col1 int NOT NULL IDENTITY (1,1) PRIMARY KEY,
Col2 nvarchar(15)
)
INSERT INTO @VarTable (Col2) VALUES (' Первая строка ')
SELECT * FROM @VarTable

1. Пользовательские типы данных: также возможно создавать в MS SQL Server . Для этих целей предусмотрена специальная хранимая процедура sp _ addtype. Первым параметром при вызове этой процедуры указывается имя пользовательского типа, вторым – имя системного типа, на основе которого строится пользовательский. Третий параметр указывает, разрешены или запрещены значения NULL . Пример:

sp_addtype nvc15, 'nvarchar(15)', NONULL



Последнее изменение этой страницы: 2017-02-08; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 44.192.112.123 (0.005 с.)