Среди новых возможностей Microsoft SQL Server 2000, прежде всего, хочется выделить
следующие: появление новых типов данных, создание пользовательских функций,
индексирование представлений и вычисляемых столбцов, новые типы триггеров, каскадные
изменения данных в зависимой таблице. Рассмотрим кратко каждую из этих возможностей.
Microsoft SQL Server 7.0 позволяет работать с достаточно широким спектром типов
данных: целочисленных и вещественных, символьных и текстовых, денежных и двоичных,
даты и времени, специальных. Однако нашлось что добавить — в Microsoft SQL Server
2000 появился новый тип данных — bigint, предназначенный для размещения целочисленных
данных в 8 байтах. Таким образом, пользователи могут хранить данные в диапазоне
от -263 (-9223372036854775808) до 263 – 1 (9223372036854775807).
Проверить это достаточно легко с помощью следующего несложного примера:
declare @b1 as bigint, @b2 as bigint
set @b1 = power(cast(-2 as bigint), 63)
set @b2 = -(@b1 + 1)
select @b1 as ‘Нижняя граница bigint’,
@b2 as ‘Верхняя граница bigint’
Наряду с такими специальными типами данных, как timestamp и uniqueidentifier,
которые применялись в предшествующей версии, соответственно, для того, чтобы
отследить последовательность изменения строк в таблицах в пределах БД и обеспечить
уникальность данных в одном из типов репликации (merge replication), появились
типы данных table и sql_variant.
Тип данных table используется только для переменных и позволяет хранить в них
сложные наборы данных. Переменная типа table похожа на временную таблицу. Табличная
переменная может использоваться в качестве параметра функции или хранимой процедуры.
Что касается остальных манипуляций с переменными типа table, то они очень похожи
на действия, выполняемые с обычными таблицами. Оператор объявления переменной
типа table начинается, как и при объявлении переменных других типов с ключевого
слова DECLARE, а объявление полей аналогично командам CREATE и ALTER при создании
и модификации таблицы:
declare @tb table
(GID bigint identity (1000,1),
lname nvarchar(30)NOT NULL,
flname nvarchar(30)NOT NULL,
sname nvarchar(30)NOT NULL,
phone char(13) NULL)
На поля могут накладываться ограничения PRIMARY KEY, UNIQUE и NULL/ NOT NULL.
Однако дополнительно нельзя назначать никакие индексы, кроме тех, которые автоматически
создаются при использовании ограничений PRIMARY KEY и UNIQUE.
Объявленная с помощью табличного типа переменная может обрабатываться точно
так же, как и таблица с помощью команд SELECT, INSERT, DELETE и UPDATE:
insert into @tb values (‘Novakova’, ‘Natalie’, ‘E’, ‘(812)274-1489’)
select * from @tb
В этой ситуации нельзя применять операции массового копирования SELECT … INTO
и INSERT … EXEC, что приводит к необходимости последовательного заполнения таблицы
записями.
Поля таблицы не могут сами быть типа TABLE, а значит, вложенные таблицы неприменимы.
Табличные переменные нельзя применять в операторах DDL: DROP TABLE, ALTER TABLE,
TRUNCATE TABLE.
Тип данных sql_variant дает возможность хранить значения любых других скалярных
типов данных за исключением text, ntext, image и timestamp.
declare @y as sql_variant, @z as sql_variant
select @y = 2, @z =3
select cast(@y as int)* cast (@z as int)
Этот тип данных может применяться как для локальных переменных, так и для столбцов
таблиц. Кроме целочисленных данных, в столбце типа sql_variant можно хранить
строковые величины и значения с датой и временем.
Теперь несколько слов о том, как с минимальными затратами времени научиться
не только создавать информационные системы на основе предлагаемых Microsoft
технологий, но и делать это максимально эффективно.
Авторизованные учебные центры Mirosoft предлагают курсы официальной программы
Mirosoft, которые нацелены как на подготовку специалистов-новичков, так и на
ускоренное освоение опытными разработчиками особенностей новых инструментов.
На рисунке изображена последовательность курсов, предлагаемых специалистам,
впервые ступившим на стезю разработки приложений с помощью Microsoft SQL Server.
Первый курс предназначен новичкам в работе с SQL, второй курс будет полезен
и тем, кому уже приходилось сталкиваться с администрированием Microsoft SQL
Server, а вот третий курс, действительно, будет полезен всем специалистам: как
новичкам, так и профессионалам.
Работа с Microsoft SQL Server 2000 с помощью запросов Transact-SQL
Двухдневный курс 2071 представляет собой введение в формирование запросов
к БД SQL-сервера на языке программирования Transact-SQL.
Рассматриваются следующие темы:
- Введение в язык Transact-SQL.
- Использование средств формирования запросов.
- Извлечение данных.
- Группировка и объединение данных.
- Слияние нескольких таблиц.
- Работа с подзапросами.
- Модификация данных.
- Использование полнотекстовых индексов.
- Введение в объекты программирования.
Администрирование БД Microsoft SQL Server 2000
Пятидневный курс 2072 дает знания и необходимые навыки для инсталляции,
конфигурирования и поддержки БД Microsoft SQL Server. (Курс 2071 является необходимым
условием для понимания курса 2072.)
Темы:
- Обзор SQL Server.
- Планирование инсталляции SQL Server.
- Управление файлами БД.
- Управление безопасностью.
- Выполнение административных задач.
- Резервное копирование БД.
- Восстановление БД.
- Мониторинг производительности SQL Server.
- Преобразование данных.
- Введение в репликацию.
- Обеспечение стабильной доступности данных.
Программирование БД Microsoft SQL Server 2000
Пятидневный курс 2073 дает знания и навыки, необходимые для программирования
и создания решений на основе баз данных с использованием SQL Server 2000. (Знакомство
с курсом 2071 необходимо для освоения курса 2073.)
Темы:
- Обзор SQL Server.
- Обзор программирования SQL Server.
- Создание и обслуживание Databases.
- Создание типов данных и таблиц.
- Обеспечение целостности данных.
- Планирование индексов.
- Создание и поддержка индексов.
- Реализация представлений.
- Реализация хранимых процедур.
- Реализация определяемых пользователем функций.
- Реализация триггеров.
- Программирование многосерверной системы.
- Производительность запросов.
- Анализ запросов с использованием графического средства SHOWPLAN.
- Управление транзакциями и блокировками.