
- •Санкт-Петербург
- •Часть I. Общие сведения о субд Microsoft sql Server 2000 5
- •Часть II. Администрирование sql Server 2000 116
- •Введение
- •Часть I. Общие сведения о субд Microsoft sql server 2000
- •1.1. Возможности sql server 2000
- •1.2. Компоненты sql server 2000
- •Утилита Server Network
- •Встроенные мастера sql Server 2000
- •1.3. Архитектур бдв среде sql Server 2000
- •Логические компоненты базы данных
- •Режимы сопоставления
- •Идентификаторы пользователей, учетные имена, роли и группы
- •Физическая структура базы данных Страницы и экстенты
- •Файлы и группы файлов баз данных
- •Протокол tds
- •Архитектура обработчика запросов
- •Архитектура памяти
- •Архитектура ввода-вывода
- •Архитектура полнотекстовых запросов
- •Организация транзакций
- •Хранилища данных и оперативная аналитическая обработка (olap)
- •Oltp-системы
- •Olap-системы
- •Архитектура разработки приложений
- •Язык баз данных
- •1.4. Инструменты программирования sql server
- •Окно Query
- •Панель Results
- •Вкладка Grids
- •Окно Object Browser
- •Окно отладчика Transact-sql
- •Окно Object Search
- •Утилита командной строки isql
- •Утилита командной строки osql
- •1.5.Язык transact - sql
- •Операторы Transact-sql
- •Язык определения данных
- •Язык управления данными
- •Язык манипулирования данными
- •Идентификаторы
- •Переменные
- •Функции
- •Встроенные функции
- •Функции получения набора строк
- •Агрегатные функции
- •Скалярные функции
- •Скалярные функции
- •Табличные функции
- •Детерминированность функций
- •Типы данных
- •Выражения
- •Использование операторов в выражениях
- •Элементы языка управления ходом выполнения
- •Обработка оператора select
- •Обработка других операторов
- •Команда go
- •Обработка пакета
- •Хранимые процедуры и триггеры
- •Исполнение хранимых процедур и триггеров
- •Сценарии Transact-sql
- •Часть II. Администрирование sql server 2000
- •2.1. Создание и управление бд sql server 2000
- •Методы создания баз данных sql Server
- •Оператор create database
- •Управление базой данных sql Server
- •Просмотр сведений о базе данных
- •Модификация базы данных
- •Настройка параметров базы данных
- •Удаление базы данных sql Server
- •2.2. Импорт и экспорт данных
- •Использование утилиты Ьср и оператора bulk insert
- •Использование различных форматов данных
- •Использование dts
- •Инструменты dts
- •Задачи dts
- •Соединения dts
- •2.3. Копирование в среде sql server 2000
- •Терминология резервного копирования
- •Резервное копирование с использованием Transact-sql
- •Полное резервное копирование базы данных
- •Резервное копирование файла или группы файлов
- •Репликация
- •2.4. Восстановление в среде sql server 2000 Определение последовательности восстановления данных
- •2.5. Репликация Процесс репликации
- •Репликация моментальных снимков
- •2.6. Проверка подлинности в sql server 2000
- •Проверка подлинности средствами Windows
- •Проверка подлинности средствами sql Server 2000
- •Сравнение типов проверки подлинности
- •Клиентские сетевые библиотеки и проверка подлинности.
- •Выбор режима проверки подлинности для sql Server 2000
- •Проверка подлинности Windows
- •Смешанный режим проверки подлинности
- •Делегирование учетной записи пользователя
- •2.7.Разрешение уровня сервера
- •Фиксированные роли базы данных
- •2.8.1. Оптимизация работы sql server 2000
- •2.8.1. Конфигурация сети
- •2.8.2. Индексы
- •Назначение и структура индексов
- •Кластерные индексы
- •Не кластерные индексы
- •Свойства индекса
- •Уникальный индекс.
- •Составной индекс
- •Коэффициент заполнения и разреженность индекса
- •Порядок сортировки
- •2.8.3. Триггеры
- •Исполнение триггеров
- •2.8.4. Хранимые процедуры
- •Производительность
- •Временные хранимые процедуры
- •Расширенные хранимые процедуры
- •Удаленные хранимые процедуры
- •2.8.5. Представления
- •2.8.6. Мониторинг
- •Утилита System Monitor
- •Утилита Task Manager
- •Утилита sql Profiler
- •Утилита sql Query Analyzer
- •Использование Transact-sql
- •Системные хранимые процедуры
- •Команды dbcc
- •Встроенные функции
- •Флаги трассировки
- •Использование snmp
- •2.9. Системы безопасности
- •Шифрование объектов
- •Список литературы
Выражения
Выражение — это комбинация идентификаторов, значений и операторов, которые SQL Server может обработать, чтобы получить результат. Известно несколько различных способов использования выражений при обращении к данным и при их модификации. Например, выражение может быть частью запроса или определять условие для поиска данных, соответствующих некоторому набору критериев.
Использование операторов в выражениях
Операторы позволяют выполнять различные операции: арифметические, сравнения, конкатенации или присваивания. Например, можно проверить данные, чтобы выяснить, не пусто ли поле, в котором содержатся сведения о национальной принадлежности ваших клиентов (или не равно ли оно NULL).
Выполнить операцию в запросах выборки данных способен любой, кто имеет право просматривать таблицу. Чтобы выполнить модификацию данных, нужны соответствующие права доступа.
В SQL Server предусмотрены семь категорий операторов. Все они описаны в таблице 1.3.
Табл. 1.3.
Категории операторов
Категория оператора |
Описание |
Сравнение |
Сравнивает значение с другим значением или выражением |
Логический
|
Проверяют истинность условия AND, OR, NOT, LIKE, ANY, ALL или IN
|
Арифметический
|
Выполняют сложение, вычитание, умножение, деление и операции по модулю
|
Унарный |
Выполняют операции лишь над одним выражением любого типа данных из категории числовых типов данных
|
Поразрядный |
Временно преобразуют обычное числовое значение (например, 150) в целочисленное и выполняют над ним поразрядные арифметические операции Временно или постоянно |
Конкатенация строк |
Временно или постоянно объединяет две строки (с символьными или двоичными данными) в одну |
Присваивание |
Присваивают значение переменной или ассоциируют столбец результирующего набора с псевдонимом
|
Следующий оператор SELECT с помощью арифметических операторов вычитает из суммарного годового дохода часть, которую следует выплатить автору в качестве гонорара (она равна: объем продаж * процент авторского гонорара/100). В результате получатся сумма, которую получит издатель. Сначала вычисляется произведение ytd_sales и royalty, поскольку первым идет оператор умножения, произведение делится на 100, а частное вычитается из ytd_sales.
USE pubs
SELECT titlejd, ytd_sales - ytd_sales * royalty / 100
FROM titles
Элементы языка управления ходом выполнения
Язык управления ходом выполнения состоит из специальных слов, которые контролируют ход выполнения операторов Transact-SQL, блоков операторов и хранимых процедур. Эти слова можно использовать в операторах Transact-SQL, пакетах и хранимых процедурах.
Если язык управления ходом выполнения не используются, отдельные операторы Transact-SQL выполняются последовательно, в том порядке, в каком они расположены. Язык управления ходом выполнения допускает объединение связанных операторов. Он также позволяет сделать их взаимозависимыми. При этом один оператор языка управления ходом выполнения не может относиться сразу к нескольким пакетам или хранимым процедурам.
Ключевые слова языка управления ходом выполнения полезны, если необходимо заставить Transact-SQL предпринять определенного рода действие. Например, с помощью пары операторов BEGIN...END можно заключить несколько операторов Transact-SQL в один логический блок. Пара операторов IF...ELSE позволяет исполнить некоторый блок операторов, если выполняется определенное условие, а если это условие не выполняется (т.е. выполняется условие ELSE) — исполнить другой блок операторов.
В таблице 1.4. приводится описание ключевых слов языка управления ходом выполнения, которые входят в Transact-SQL.
Табл 1.4.
Ключевые слова языка управления программами
Ключевое слово |
Описание |
BEGIN...END |
Заключает в себе набор операторов Transact-SQL, позволяя исполнять операторы группами
|
BREAK |
Выход из цикла WHILE |
CONTINUE |
Продолжает выполнение цикла WHILE |
GOTO |
При исполнении пакета Transact-SQL вызывает переход к определенной метке, пропуская операторы, расположенные между оператором GOTO и меткой |
IF..ELSE |
Ставит исполнение оператора Transact-SQL в зависимость от некоторых условий. При наличии ELSEопределяет альтернативный оператор, который будет исполнен, если не выполняется условие IF |
RETURN |
Безусловное завершение запроса, хранимой процедуры или пакета
|
WAITFOR |
Приостанавливает работу соединения в течение заданного периода или до наступления определенного времени суток
|
WHILE |
Повторно исполняет оператор или блок операторов до тех пор, пока заданное условие истинно. Как правило, используется с операторами BREAK или CONTINUE
|
Комментарии
Комментарии (или примечания) — это неисполняемые строки программы. С их помощью документируют исходный текст программы или временно отключают часть операторов Transact-SQL и пакетов во время их диагностики. Документирование исходного текста программы комментариями облегчает сопровождение программы. В комментариях часто записывают название программы, имя автора и даты внесения в исходный текст серьезных изменений, кроме того, в них можно описать сложные вычисления или разъяснить метод программирования.
SQL Server поддерживает два типа знаков комментариев
• Двойной дефис ( --). Этот знак комментария можно использовать как внутри, так и в начале строки программы. Все символы от двойного дефиса до конца строки рассмат ривается как часть комментария. В случае многострочных комментариев, в начале каж дой строки комментария должен стоять двойной дефис, как показано на следующем примере:
USE Northwind
GO
-- Первая строка многострочного комментария.
-- Вторая строка многострочного комментария.
SELECT * FROM Employees
GO
• Парные символы «слэш — звездочка» ( /*...*/ ). Эти знаки комментария можно ис пользовать посредине, и в начале строки, и даже внутри исполнимого кода. Всё между знаками начала (/* ) и конца ( */ ) комментария считается частью комментария. Мно гострочный комментарий должен начинаться с открывающей пары символов ( /* ) и заканчиваться закрывающей парой символов ( */). В этом случае не надо ограничи вать знаками комментария каждую строку.
USE Northwind
/* Первая строка многострочного комментария.
Вторая строка многострочного комментария. */ SELECT * FROM Products GO
Многострочный комментарий не должен выходить за пределы пакета. Комментарийдолжен завершаться до его конца. Например, для SQL Query Analyzer и утилиты osql команда GO является признаком конца пакета. Если первые два байта в прочитанной утилитой строке являются символами GO, утилита посылает все прочитанные после поступления последней команды GO операторы на сервер как один пакет. Если команда GO окажется в начале строки между разделителями /* и */, то в обоих пакетах будут посланы незакрытые знаки комментария (что приведет к возникновению синтаксических ошибок). В комментарии можно использовать любые буквы и цифры. SQL Server игнорирует все символы внутри комментария (за исключением команды GO). Кроме того, длина ком ментария в пакете не ограничена. Комментарий может быть как однострочным, так и мно гострочным.
Исполнение операторов Transact-SQL
В SQL Server 2000 предусмотрено несколько методов исполнения операторов Transact-SQL. Можно исполнить одиночный оператор или несколько операторов в виде пакета (который является группой из одного или нескольких операторов Transact-SQL). Операторы Transact-SQL также можно исполнять в хранимых процедурах и триггерах. На этом занятии вы познакомитесь с различными методиками исполнения операторов, а также узнаете о способах исполнения в зависимости от применяемой методики и об исполнении операторов Transact-SQL с помощью сценариев.
Одиночные операторы Transact-SQL
Обработка одиночных операторов является основным способом исполнения операторов SQL в SQL Server 2000. Проще всего обработку оператора проиллюстрировать на примере оператора SELECT.
SELECT относится к непроцедурным операторам — он не определяет конкретных шагов, которые должен выполнить сервер баз данных для выборки запрошенных данных. Другими словами, чтобы определить наиболее эффективный способ извлечения запрошенных данных, сервер баз данных должен проанализировать оператор. Этот процесс называется оптимизацией оператора SELECT, а выполняет его оптимизатор запросов.
Процесс выбора одного плана исполнения из нескольких возможных называется оптимизацией. Оптимизатор запросов является одним из наиболее важных компонентов СУБД. Несмотря на то, что анализ запроса и выбор оптимизатором плана исполнения связан с некоторыми издержками, они многократно окупаются при выборе оптимизатором запросов эффективного плана исполнения. Представьте себе, что двум строительным компаниям надо возвести дома по идентичным чертежам. Одна компания затратила несколько дней на планирование, а другая сразу же приступила к строительству. Скорее всего, первой завершит работу та компания, которая не поленилась заняться планированием.
Оптимизатор запросов так важен, поскольку он дает серверу баз данных возможность динамически настраиваться в соответствии с меняющимися условиями, не требуя от программиста или администратора ввода дополнительной информации. Этот процесс позволяет программистам сосредоточиться на описании конечного результата запроса. Они могут быть уверены в том, что при каждом запуске оператора оптимизатор запросов сформирует эффективный план исполнения в зависимости от состояния базы данных.