Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Типы данных SQL Server 2000




 

В предыдущей главе рассматривалось использование переменных. При объявле­нии переменной с помощью команды declare необходимо указать ее тип дан­ных. Тип данных определяет, какая информация может храниться в перемен­ной и какие операции могут выполняться над этими данными. В общем, понятие и использование типов данных в Transact-SQL соответствуют большин­ству современных языков.

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

В SQL Server 2000 набор типов данных несколько расширен по сравнению с пре­дыдущей версией SQL Server – добавлены типы данных bigint, table и sql_variant. В итоге в распоряжении пользователей имеется набор из встроенных типов данных:

bigint целочисленный тип данных, занимающий 8 байт;

float – нецелочисленный тип данных приблизительной точности;

ntext – текстовые данные Unicode длиной до 1 Гбайта;

int – целочисленный тип данных, занимающий 4 байта;

real – нецелочисленный тип данных приблизительной точности;

binary – двоичные данные фиксированной длины до 8000 байт;

smallint – целочисленный тип данных, занимающий 2 байта;

datetime – дата и время высокой точности (8-байтовый);

varbinary – двоичные данные переменной длины до 8000 байт;

tinyint – целочисленный тип данных, занимающий 1 байт;

smalldatetime – дата и время низкой точности (4-байтовый);

image – двоичные данные длиной до 2 Гбайт;

bit – один бит, принимает значение либо 0, либо 1;

char – символьные данные не Unicode фиксированной длины до 8000 символов;

decimal – нецелочисленный тип данных фиксированной точности;

varchar – символьные данные не Unicode переменной длины до 8000 символов;

timestamp – временной штамп или версия строки;

numeric – нецелочисленный тип данных фиксированной точности

text – текстовые данные не Unicode длиной до 2 Гбайт;

sql_variant – тип данных, позволяющий хранить значения других типов данных;

money – денежный тип данных высокой точности (8-байтовый);

nchar – символьные данные Unicode фиксированной длины до 4000 символов;

smallmoney – денежный тип данных низкой точности (4-байтовый);

nvarchar – символьные данные Unicode переменной длины до 4000 символов;

uniqueidentifier – тип данных, предназначенный для хранения глобальных уникальных идентификаторов.

На основе некоторых из них могут быть созданы новые типы данных, называемые пользовательскими (user-defined). Примером та­кого типа данных может служить тип sysname (основанный на nvarchar(l28)), активно применяемый в системных таблицах для хранения имен объектов.

Типы данных SQL Server 2000 можно разбить на следующие группы:

- целочисленные (Integers) – bigint, int, smallint и tinyint;

- нецелочисленные (Decimal) – decimal, numeric, float и real;

- денежные (Money) – money и smallmoney;

- дата и время (Date and Time) – datetime и smalldatetime;

- двоичные (Binary) – binary, varbinary и image;

- строковые (String) – char, varchar, nchar и nvarchar;

- текстовые (Text) – text и ntext;

- специальные (Specials) – timestamp, uniqueidentifier, bit, cursor, table и sql variant.

 

Функции SQL Server 2000

 

В SQL Server 7.0 и более ранних версиях в распоряжении пользователя имелся набор встроенных функций, которые писали программисты “Microsoft” и набор которых был фиксирован. Пользователь не мог создавать свои собствен­ные функции. Конечно, в его распоряжении имелись хранимые процедуры, в качестве которых и можно было реализовывать часто используемые алгоритмы. Однако очевидным недостатком хранимых процедур является невозможность их применения в выражениях.

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

В SQL Server 2000 появилась возможность создания определяемых пользователем функций. Таким образом, пользователь может создавать свои собственные функ­ции, на которые можно будет ссылаться непосредственно в теле запроса. Как и хранимые процедуры, определяемые пользователем функции могут иметь парамет­ры. Интересным сочетанием является использование в качестве возвращаемого функцией значения величины типа данных table. Это дает возможность приме­нения запросов, обращающихся непосредственно к функции. Например, если имеется функция GetPeople, возвращающая список всех людей с фамилией, ука­занной с помощью единственного параметра, то просмотр возвращаемого функ­цией набора данных можно осуществить с помощью следующей команды:

SELECT * FROM GetPeople(‘Иванов’)

Рассмотрим функции, предлагаемые SQL Server 2000. Их количе­ство достаточно велико, и для удобства работы они разбиты на отдельные группы:

- функции просмотра конфигурации. Функции этой группы предназначены для получения различной информации. Большинство из них являются недетерминированными, так как могут возвращать различные результаты при каждом новом вызове;

- функции для работы с курсорами. Данная группа содержит всего три функции, которые тем не менее довольно полезны, а порой и просто незаменимы при работе с курсорами;

- функции работы с датой и временем. Как следует из названия, функции данной группы предназначены для работы с датой и временем. Напомним, что для хранения информации о дате и времени в SQL Server 2000 предназначены типы данных datetime и smalldatetime. Не­редко возникает необходимость выделить из даты день месяца или год, добавить или отнять несколько дней и т.д.;

- математические функции. Функции этой группы предназначены для выполнения различных математиче­ских операций – возведение в степень, вычисление синуса, извлечение корня и т.д.;

- функции метаданных. Эти функции предназначены для получения сведений о различных объек­тах SQL Server 2000 (метаданных);

- функции подсистемы безопасности. Функции этой группы служат для получения информации, связанной с подсис­темой безопасности – пользователях и учетных записях, о членстве их в фикси­рованных и пользовательских ролях базы данных, фиксированных ролях сервера и другой информации;

- строковые функции. Функции этой группы предназначены для работы с символьными строками – поиска подстроки в строке, выделения подстроки, удаления лидирующих и конечных пробелов, вычисления длины строки и т.д.;

- системные функции. Судя по названию, функции этой группы предназначены для получения самой разнообразной ин­формации, которая, должна быть системной. Однако некоторые из функций группы, скорее, можно назвать функциями общего поль­зования, чем системными;

- статистические функции. Функции этой группы возвращают различную статистическую информацию о работе сервера – об операциях чтения диска, количестве переданной по сети информации, затратах времени и т.д.;

- функции для работы с типами данных image, text и ntext.

Многие системные функции начинаются с символов @@. Полноценная функция должна работать с параметрами, значения которых при ее вызове указываются в скобках после имени функции. В принципе, функция может и не иметь пара­метров. В этом случае при ее вызове нужно будет указывать пустые скобки. Не­которые же функции Transact-SQL не используют скобки при их вызове. Такие функции точнее можно назвать глобальными переменными. Тем не менее в документации они все же рассматриваются как функции

 





Поделиться с друзьями:


Дата добавления: 2016-11-18; Мы поможем в написании ваших работ!; просмотров: 1328 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Слабые люди всю жизнь стараются быть не хуже других. Сильным во что бы то ни стало нужно стать лучше всех. © Борис Акунин
==> читать все изречения...

2193 - | 2115 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.