Transact-SQL (+CD)

Михаил Фленов

Оглавление Предисловие 1
Благодарности 2
Для кого эта книга 3
Введение в SQL 4
Работа с запросами 7
Именование 7
CyD SQL Factory 9
Query Analyzer 12
Глава 1. Управление базой данных 17
1.1. Создание и удаление базы данных 18
1.1.1. Файловые группы 28
1.1.2. Подключение базы данных 33
1.1.3. Сопоставление 34
1.2. Создание таблиц 35
1.2.1. Оператор CREATE TABLE 39
1.2.2. Автоматическое увеличение 43
1.2.3. Значения по умолчанию 47
1.2.4. Ограничения 49
1.2.5. Первичный ключ 58
1.2.6. Внешний ключ 60
1.2.7. Индексы 69
1.2.8. Опции индексов 80
1.2.9. Вычисляемые поля 82
1.2.10. Создание временных таблиц 85
1.2.11. GUID-поля 87
1.3. Редактирование параметров базы данных 88
1.3.1. Изменение размера файла 89
1.3.2. Добавление и удаление файла 93
1.3.3. Добавление и удаление файловых групп 94
1.3.4. Переименование базы данных 95
1.3.5. Изменение свойств базы данных 95
1.4. Редактирование таблиц 98
1.4.1. Добавление новых полей 100
1.4.2. Удаление полей 101
1.4.3. Изменение ограничений 101
1.4.4. Изменение поля 103
1.5. Обеспечение целостности данных 104
1.5.1. Ограничение DEFAULT 107
1.5.2. Ограничение CHECK 108
1.5.3. Ключи 109
1.5.4. Уникальность 110
1.5.5. Отключение ограничений 110
1.5.6. Правила и объекты значений по умолчанию 111
1.6. Именование 114
1.7. Резюме 115
Глава 2. Работа с данными 121
2.1. Оператор SELECT 122
2.2. Выборка данных 124
2.2.1. Полный путь 125
2.2.2. Ограничение вывода строк 127
2.2.3. Псевдонимы полей 128
2.3. Ограничение выборки 129
2.4. Булевы операторы 133
2.5. Улучшенный поиск 136
2.6. Вставка в таблицу 139
2.7. Шаблоны строк 140
2.8. Работа с несколькими таблицами 142
2.9. Объединение в стиле Microsoft 149
2.10. Простейшие расчеты 151
2.11. Сортировка 155
2.12. Группировка 156
2.13. Объединение запросов 160
2.14. Подзапросы 162
2.15. Операторы работы с подзапросами 169
2.15.1. Оператор EXISTS 169
2.15.2. Операторы ANY, SOME и ALL 170
2.16. Добавление записей 172
2.17. Изменение данных 178
2.18. Удаление данных 183
2.19. Транзакции 187
2.20. Переменные 196
2.21. Конвертирование типов 200
2.22. Работа с датами и временем 203
2.22.1. Преобразование дат 203
2.22.2. Функции для работы с датами 205
2.22.3. Замечания по работе с датами 209
2.23. Ход выполнения запроса 210
2.23.1. Условный оператор IF 210
2.23.2. Условный оператор CASE 214
2.23.3. Оператор цикла WHILE 216
2.23.4. Прерывание работы сценария 218
2.23.5. Подмена 219
2.23.6. Ожидание 220
2.24. Работа с GUID-полями 221
2.25. Функции работы со строками 227
2.25.1. Функция SUBSTRING 227
2.25.2. Функция LEFT 228
2.25.3. Функция LEN 229
2.25.4. Функция LOWER 229
2.25.5. Функция UPPER 229
2.25.6. Функции LTRIM и RTRIM 230
2.25.7. Функция PATINDEX 231
2.25.8. Функция REPLACE 231
2.25.9. Функция REPLICATE 232
2.25.10. Функция REVERSE 233
2.25.11. Функция SPACE 234
2.25.12. Функция STR 234
2.25.13. Функция STUFF 235
2.26. Математические функции 236
2.26.1. Знаки 236
2.26.2. Округление 237
2.26.3. Сложная математика 238
2.26.4. Случайное значение 239
2.26.5. Тригонометрические функции 239
2.26.6. Степень 240
2.27. Связь "многие-ко-многим" 241
Глава 3. Программирование на сервере 245
3.1. Представления 246
3.1.1. Создание представления 246
3.1.2. Редактирование представления 252
3.1.3. Удаление представления 253
3.1.4. Изменение содержимого представления 253
3.1.5. Удаление строк из представления 254
3.1.6. Опции представления 254
3.2. Хранимые процедуры 255
3.2.1. Создание хранимых процедур 257
3.2.2. Выполнение процедур 259
3.2.3. Удаление процедур 259
3.2.4. Использование параметров 260
3.2.5. Преимущества хранимых процедур 261
3.2.6. Практика создания и использования процедур 261
3.2.7. Изменение процедур 264
3.2.8. Использование процедур при вставке данных 266
3.2.9. Опции 266
3.3. Хранимые функции 267
3.3.1. Создание функции 268
3.3.2. Скалярные функции 269
3.3.3. Использование функций 271
3.3.4. Функция, возвращающая таблицу 272
3.3.5. Многооператорная функция, возвращающая таблицу 274
3.3.6. Опции функций 276
3.3.7. Изменение функций 277
3.3.8. Удаление функций 279
3.4. Триггеры 279
3.4.1. Создание триггера 280
3.4.2. Откат изменений в триггере 281
3.4.3. Изменение триггера 283
3.4.4. Удаление триггера 285
3.4.5. Как работают триггеры? 285
3.4.6. Триггер INSTEAD OF 290
3.4.7. Дополнительные сведения о триггерах 293
3.4.8. Практика использования триггеров 295
3.5. SQL Server Agent 298
3.5.1. Добавление задания 300
3.5.2. Управление операторами 302
3.5.3. Добавление шага 306
3.5.4. Запуск задания 312
3.5.5. Информация о задании 315
3.5.6. Управление заданиями 319
3.5.7. Управление шагами 320
3.5.8. Эффективное использование заданий 322
3.6. Планировщик заданий 323
3.6.1. Добавление плана выполнения 324
3.6.2. Обновление планировщика 328
3.6.3. Удаление планировщика 329
3.6.4. Информация о планировщике 329
3.7. Оповещения 329
3.7.1. Создание сообщения 330
3.7.2. Создание оповещения 331
3.7.3. Создание уведомления 336
Глава 4. Дополнительные возможности Transact-SQL 339
4.1. Свойства сервера 339
4.1.1. Ограничение выводимых строк 340
4.1.2. Управление неявными транзакциями 341
4.1.3. Управление блокировками 342
4.1.4. Управление датой 346
4.1.5. Объединение с NULL 347
4.1.6. Запрет на подсчет строк 348
4.1.7. Закрытие курсора 348
4.1.8. План выполнения 348
4.1.9. Соответствие ANSI 349
4.2. Информация о системе 351
4.2.1. Информация о базе данных 351
4.2.2. Имя пользователя 354
4.2.3. Имя приложения 354
4.2.4. Информация об объекте 355
4.2.5. Информация о журнале транзакций 358
4.2.6. Свойство IDENTITY 359
4.2.7. Информационные процедуры 360
4.2.8. Пользовательские параметры конфигурации 363
4.3. Обработка ошибок 365
4.3.1. Глобальная переменная @@ERROR 366
4.3.2. Генерирование сообщений 367
4.3.3. Создание собственных сообщений 369
4.3.4. Резюме 370
4.4. Поддержка XML 370
4.5. Типы данных, определенные пользователем 372
4.6. Поддержка индексов 373
4.7. Работа со статистикой 380
4.8. Управление пользователями 387
4.8.1. Управление пользователями сервера 387
4.8.2. Управление пользователями базы данных 390
4.8.3. Роли 392
4.8.4. Создание и удаление ролей 394
4.8.5. Управление ролями 394
4.9. Права доступа 396
4.9.1. Разрешение доступа 396
4.9.2. Запрещение доступа 399
4.9.3. Отмена прав доступа 401
4.9.4. Информация о правах доступа 403
4.10. Резервное копирование и восстановление 405
4.10.1. Стратегия резервного копирования 406
4.10.2. Стратегия восстановления 409
4.10.3. Резервное копирование 410
4.10.4. Восстановление данных 422
4.10.5. Замечания по резервному копированию 435
4.11. Уменьшение базы данных 437
4.12. Отключение базы данных 439
Глава 5. Сложные запросы 443
5.1. Распределенные запросы 443
5.1.1. Динамическое создание подключений 444
5.1.2. Создание связанного сервера 448
5.1.3. Код на связанном сервере 452
5.2. Оптимизация запросов 453
5.2.1. Работа с планом выполнения 454
5.2.2. Отображение профиля 461
5.2.3. Генерация плана выполнения 462
5.3. Расширенные процедуры 464
5.3.1. Обращение к системе 464
5.3.2. Информация об учетной записи 466
5.3.3. Список групп 468
5.3.4. Информация о сервере 468
5.3.5. Доступ к серверу 469
5.3.6. Доступ к журналу 469
5.4. Внешнее выполнение 471
5.5. Домашняя бухгалтерия 476
5.5.1. Создание тестовой базы 476
5.5.2. Выборка данных о затратах 482
5.5.3. Простые отчеты 483
5.5.4. Многомерные отчеты 486
5.6. Типы данных TEXT и IMAGE 490
5.6.1. Чтение больших объемов данных 493
5.6.2. Обновление данных 494
5.7. Курсоры 497
5.7.1. Объявление курсора 499
5.7.2. Открытие курсора 501
5.7.3. Выборка записей из курсора 501
5.7.4. Закрытие курсора 505
5.7.5. Изменение данных в курсоре 506
5.8. Полнотекстовый поиск 509
5.8.1. Включение поиска 511
5.8.2. Создание каталога 511
5.8.3. Регистрация таблиц 512
5.8.4. Регистрация полей 513
5.8.5. Информация о каталоге 515
5.8.6. Использование поиска 517
Глава 6. Transact-SQL и 1C 523
6.1. Конфигурирование 524
6.2. Обслуживание базы данных 530
6.2.1. Настройка базы данных 530
6.2.2. Резервное копирование 531
6.2.3. Восстановление данных 534
6.2.4. Задания 536
6.3. Выборка данных 541
Заключение 545
ПРИЛОЖЕНИЯ 547
Приложение 1. Типы данных в SQL Server 2000 549
Числа 549
Числа с плавающей точкой 549
Денежные типы 550
Дата и время 550
Строки 550
Бинарные данные 551
Другие типы данных 551
Приложение 2. Описание компакт-диска 553
Предметный указатель 555
VIII Оглавление IX Оглавление