Оглавление

От автора 1
Введение 3
Как устроена эта книга 4
Как выполнять примеры SQL-выражений 7
Работа с Microsoft SQL Server 2000 7
Работа с Microsoft Access 2003 12
Глава 1. Основы реляционных баз данных 17
1.1. Множества 17
1.2. Отношения 29
1.2.1. Общие сведения 29
1.2.2. Способы представления отношений 31
1.2.3. Операции над отношениями 35
1.3. Декомпозиция отношений 43
1.3.1. Корректная декомпозиция 44
1.3.2. Пример некорректной декомпозиции 44
1.3.3. Зависимости между атрибутами 45
1.3.4. Правила вывода зависимостей 55
1.3.5. Ключи 58
1.4. Ограничения целостности отношений 60
1.4.1. Семантическая целостность 61
1.4.2. Доменная целостность 61
1.4.3. Ссылочная целостность 62
1.5. Нормализация таблиц 63
1.5.1. Первая нормальная форма 66
1.5.2. Вторая нормальная форма 66
1.5.3. Третья нормальная форма 67
1.5.4. Доменно-ключевая нормальная форма 68
1.5.5. Денормализация 69
Глава 2. Основы SQL 71
2.1. Что такое SQL 71
2.2. Типы данных 76
2.2.1. Строки 78
2.2.2. Числа 80
2.2.3. Логические данные 83
2.2.4. Дата и время 83
2.2.5. Интервалы 86
2.2.6. Специальные типы данных 87
2.2.7. Пользовательские типы данных 89
2.2.8. Неопределенные значения 93
2.2.9. Преобразование типов 95
Глава 3. Простые выборки данных 97
3.1. Основное SQL-выражение для выборки данных 99
3.2. Уточнения запроса 102
3.2.1. Оператор WHERE 106
3.2.2. Оператор GROUP BY 114
3.2.3. Оператор HAVING 116
3.2.4. Оператор ORDER BY 117
3.2.5. Логические операторы 118
3.3. Задачи 119
Задача 3.1 120
Задача 3.2 120
Задача 3.3 120
Глава 4. Вычисления 121
4.1. Итоговые функции 121
4.2. Функции обработки значений 125
4.2.1. Строковые функции 126
4.2.2. Числовые функции 127
4.2.3. Функции даты-времени 130
4.3. Вычисляемые выражения 130
4.4. Условные выражения с оператором CASE 133
4.4.1. Оператор CASE со значениями 134
4.4.2. Оператор CASE с условиями поиска 135
4.4.3. Функции NULLIF и COALESCE 136
Глава 5. Сложные запросы 139
5.1. Подзапросы 140
5.1.1. Простые подзапросы 140
5.1.2. Связанные подзапросы 146
5.2. Теоретико-множественные операции 151
5.2.1. Декартово произведение наборов записей 151
5.2.2. Объединение наборов записей (UNION) 154
5.2.3. Пересечение наборов записей (INTERSECT) 157
5.2.4. Вычитание наборов записей (EXCEPT) 158
5.3. Операции соединения 158
5.3.1. Естественное соединение (NATURAL JOIN) 159
5.3.2. Условное соединение (JOIN ... ON) 161
5.3.3. Соединение по именам столбцов (JOIN ... USING) 162
5.3.4. Внешние соединения 164
5.3.5. Рекурсивные запросы 169
5.4. Задачи 173
Задача 5.1 173
Задача 5.2 175
Задача 5.3 176
Задача 5.4 176
Задача 5.5 176
Глава 6. Добавление, удаление и изменение данных
в таблицах 179
6.1. Добавление новых записей 180
6.2. Удаление записей 182
6.3. Изменение данных 185
6.4. Проверка ссылочной целостности 188
Глава 7. Создание и модификация таблиц 191
7.1. Создание таблиц 191
7.1.1. Ограничения для столбцов 193
7.1.2. Ограничения для таблиц 197
7.1.3. Внешние ключи 199
7.2. Удаление таблиц 202
7.3. Модификация таблиц 202
7.4. Представления 207
7.4.1. Что такое представление 207
7.4.2. Создание представлений 210
7.4.3. Изменение данных в представлениях 213
7.5. Задачи 215
Задача 7.1 215
Задача 7.2 215
Задача 7.3 216
Задача 7.4 216
Глава 8. Транзакции 217
8.1. Как устроена транзакция 218
8.2. Определение параметров транзакции 220
8.3. Уровни изоляции транзакций 221
8.3.1. Неподтвержденное чтение 221
8.3.2. Подтвержденное чтение 222
8.3.3. Повторяющееся чтение 223
8.3.4. Последовательное выполнение 223
8.4. Субтранзакции 224
8.5. Ограничения в транзакциях 225
Глава 9. Курсоры и применение SQL в приложениях 231
9.1. Объявление курсора 234
9.1.1. Чувствительность 235
9.1.2. Перемещаемость 235
9.1.3. Выражение запроса 236
9.1.4. Сортировка 236
9.1.5. Разрешение обновления 238
9.2. Открытие и закрытие курсора 238
9.3. Работа с отдельными записями 239
9.4. SQL в приложениях 243
9.4.1. Использование встроенного SQL 243
9.4.2. Использование программ на языке PHP 246
Глава 10. Постоянно хранимые модули 257
10.1. Составные команды 258
10.1.1. Атомарность 259
10.1.2. Переменные 260
10.1.3. Обработка состояния 261
10.2. Операторы условного перехода 264
10.2.1. Оператор IF 265
10.2.2. Оператор CASE ... END CASE 266
10.3. Операторы цикла 268
10.3.1. Оператор LOOP...END LOOP 268
10.3.2. Оператор WHILE ... DO ... END WHILE 269
10.3.3. Оператор REPEAT ... UNTIL ... END REPEATE 270
10.3.4. Оператор FOR ... DO ... END FOR 270
10.3.5. Оператор ITERATE 272
10.4. Хранимые процедуры и функции 273
10.5. Хранимые модули 276
Глава 11. Управление правами доступа 279
11.1. Пользователи 279
11.1.1. Администратор базы данных 280
11.1.2. Владелец объектов базы данных 281
11.1.3. Другие пользователи 281
11.1.4. Создание пользователей 281
11.2. Предоставление привилегий 282
11.2.1. Роли и группы 284
11.2.2. Право просмотра данных 285
11.2.3. Право изменять данные 286
11.2.4. Право удалять записи 286
11.2.5. Право на использование ссылок 286
11.2.6. Право на домены 288
11.2.7. Право предоставлять права 289
11.3. Отмена привилегий 289
Приложение. Зарезервированные слова SQL 293
Предметный указатель 297

VI
Оглавление
VII
Оглавление