Оглавление Введение: обзор возможностей SQL Server 2005 11
Глава 1. Реляционные базы данных 13
1.1. Таблицы 13
1.1.1. Не все таблицы одинаковы 13
1.1.2. Структура таблицы и основные постулаты 14
1.1.3. Обозначения и определения 16
1.1.4. Типы данных, хранимых в таблицах 17
1.1.5. Ключи. Первичный ключ 20
1.2. Принципы построения реляционных баз данных 23
1.2.1. Связи между таблицами 23
Один-к-одному 23
Один-ко-многим 25
Многие-к-одному 26
Многие-ко-многим 28
1.2.2. Ограничения, накладываемые на связанные таблицы 29
1.2.3. Декомпозиция и композиция таблиц 31
1.3. Кратко о нормальных формах 33
1.3.1. Первая нормальная форма 34
1.3.2. Вторая нормальная форма 36
1.3.3. Третья нормальная форма 38
1.3.4. Четвертая нормальная форма 39
1.3.5. Пятая нормальная форма 40
1.3.6. Денормализация 41
1.4. Диаграммы в ER-модели 43
1.4.1. Об этапах проектирования 43
1.4.2. Понятие сущности. Типы сущностей 45
1.4.3. Основные понятия 47
Атрибут 47
Ключ 48
Связь 48
1.4.4. Система диаграмм 50
1.4.5. Правила порождения 53
1.5. О диаграммных техниках, используемых при построении информационных систем 54
1.5.1. Функциональные диаграммы 55
1.5.2. Диаграммы потоков данных 58
1.5.3. UML-диаграммы 61
Глава 2. Архитектура баз данных SQL Server 2005
и принципы программного управления 65
2.1. Логическая структура таблиц 65
2.1.1. Утилита Microsoft SQL Server Management Studio 65
2.1.2. Допустимые типы данных 68
2.1.3. Ограничения 71
Ограничения по типу данных 71
Значения по умолчанию 72
Ограничения по первичному ключу 72
Возможные ключи 73
Внешние ключи 73
Ограничение по условию 74
Вычисляемые столбцы 74
Триггеры 75
2.2. Индексы 75
2.2.1. Общие соображения 76
2.2.2. Типы индексов 78
Некластерные индексы 78
Кластерные индексы 81
Индексы XML 82
Полнотекстовые индексы 82
2.3. Связи 84
2.3.1. Типы связей 84
2.3.2. Диаграммы 85
2.4. Другие объекты базы данных 86
2.4.1. Программные объекты 86
Хранимые процедуры 86
Пользовательские функции 87
Триггеры 87
Представления 87
2.4.2. Объекты безопасности 88
Пользователи 88
Роли 89
Схемы 90
2.4.3. Принципы программного управления объектами базами данных 91
2.5. Структура данных на физическом уровне 92
2.5.1. Системные базы данных 92
База данных master 92
База данных msdb 93
База данных model 93
База данных tempdb 93
База данных resource 94
2.5.2. Структура на физическом уровне 94
Страницы 94
Экстенты 97
Страницы GAM 97
Страницы PFS 98
Страницы IAM 98
Секции и таблица 100
Файлы 102
Глава 3. Основы Transact-SQL 106
3.1. Синтаксис языка Transact-SQL 107
3.1.1. Соглашение об именах объектов 107
3.1.2. Идентификаторы 108
Классы идентификаторов 108
Правила для регулярных идентификаторов 108
Использование ограничителей 109
3.1.3. Операторы языка Transact-SQL 110
Арифметические операторы 110
Оператор присваивания 111
Битовые операторы 112
Операторы сравнения 112
Логические операторы 113
Оператор конкатенации 114
Унарные операторы 114
3.1.4. Выражения 114
Константы 115
Скалярные функции 115
Псевдонимы 115
Имена столбцов 115
Локальные переменные 115
Выражения 115
Скалярные подзапросы 115
Унарные операторы 116
Бинарные операторы 116
Оконные функции ранжирования 116
Оконные агрегатные функции 116
3.2. Конструкции языка Transact-SQL 116
3.2.1. Локальные переменные 116
Использование 116
Объявление 117
Присвоение 117
3.2.2. Операторные скобки 119
3.2.3. Условные конструкции 119
3.2.4. Циклические конструкции 120
3.2.5. Другие конструкции 121
Безусловный переход 121
Конструкция case 122
Команда задержки 124
3.2.6. Обработка ошибок 124
3.2.7. Особые типы переменных 126
Табличные переменные 126
Курсоры 129
3.3. DML-подмножество 135
3.3.1. Команда delete 135
3.3.2. Раздел команд DML 138
3.3.3. Раздел from команд DML 139
3.3.4. Раздел where команд DML 145
3.3.5. Раздел option ( [, ...n]) команд DML 147
3.3.6. Команда truncate table 149
3.3.7. Команда update 149
3.3.8. Команда insert 151
3.3.9. Команда select 154
Раздел select 155
Раздел into 157
Раздел order by 157
Раздел group by 158
Раздел having 161
Ключевое слово union 162
Разделы except, intersect 162
Раздел compute 162
Функции ранжирования 163
Агрегирующие функции 166
Общие табличные выражения 169
Рекурсивные запросы 170
О представлениях 171
3.4. DDL-подмножество 172
3.4.1. Управление таблицами 172
Команда create table 172
Команда alter table 180
Команда drop table 183
3.4.2. Управление индексами 183
Команда create index 183
Создание XML-индекса 186
Команда alter index 187
Команда drop index 189
3.4.3. Секционирование таблиц 190
3.5. Встроенные функции 192
3.5.1. Математические функции 192
3.5.2. Строковые функции 194
3.5.3. Функции управления датой и временем 196
3.5.4. Системные функции 197
3.5.5. Функции системы безопасности 200
3.5.6. Функции конфигурирования 202
3.5.7. Функции управления метаданными 203
3.5.8. Статистические функции 205
3.5.9. Функции, возвращающие набор строк 206
3.6. Хранимые процедуры 207
3.6.1. Управление хранимыми процедурами 208
Команды управления 208
Примеры создания и изменения хранимых процедур 210
3.6.2. Команда execute 213
Вызов хранимой процедуры 213
Другая форма команды execute 215
3.7. Пользовательские функции 216
3.7.1. Скалярные функции 217
Создание и изменение 217
Примеры скалярных функций 218
3.7.2. Функции типа inline 220
Создание и изменение 220
Примеры 221
3.7.3. Функции типа multi-statement 222
Создание и изменение 222
Примеры 222
3.8. Программирование транзакций 223
3.8.1. Включение транзакций в программный код 223
3.8.2. Вложенные транзакции 227
3.9. Триггеры 230
3.9.1. Триггеры DML 230
Структура и создание 230
Примеры триггеров 233
3.9.2. Триггеры DDL 234
3.10. Использование XML 236
3.10.1. О формате XML 236
3.10.2. Раздел for команды select 239
3.10.3. Функция openxml() 242
3.10.4. XML-данные 244
Метод query() 245
Метод exist() 245
Метод value() 245
Метод modify() 246
Метод nodes() 246
3.10.5. Пример использования функции eventdata() 246
Глава 4. Программирование на основе технологии .NET 248
4.1. Основы .NET-программирования 248
4.1.1. Основы .NET 248
Visual Studio .NET 248
Основы .NET-технологии 251
4.1.2. Примеры консольных программ 253
4.1.3. Оконные приложения 258
4.1.4. Сборка 261
4.2. .NET-программирование на стороне SQL Server 2005 262
4.2.1. Visual Studio и SQL Server 2005 — начало работы 262
Проекты 262
Интеграция в SQL Server 264
4.2.2. Хранимые процедуры 266
4.2.3. Пользовательские функции 273
Скалярные функции 273
Табличные функции 275
4.3. Триггеры 278
4.4. Агрегирующие функции 281
4.5. Пользовательские типы данных 283
Глава 5. Программирование на стороне клиента 291
5.1. ODBC 291
5.1.1. Настройка ODBC 292
5.1.2. Программный доступ посредством ODBC 297
Классификация API-функций ODBC 298
Пример программирования на основе ODBC 299
5.2. Технология ADO.NET 311
5.2.1. Общие сведения 311
5.2.2. Соединение с SQL Server 313
5.2.3. Представление базы данных на стороне клиента 316
5.2.4. Средства отображения таблиц 320
5.2.5. Взаимодействие с SQL Server и получение результатов 322
Запуск команд на стороне сервера 322
Использование адаптера 325
Приложение. Содержимое компакт-диска 329
Литература 330
Предметный указатель 331
8 Оглавление 7 Оглавление