Рассмотрен язык структурированных запросов для взаимодействия с базами данных — SQL— начиная с доступного изложения теории отношений (реляционной теории) и заканчивая вопросами администрирования СУБД с помощью запросов. На практических примерах подробно описаны основные конструкции языка, а также различные типы запросов: простые, сложные, рекурсивные. Показано, как осуществлять вычисления в запросах с помощью агрегатных функций и условных выражений. Рассмотрены операции над наборами записей, соединение таблиц, модификация данных транзакции, курсоры, хранимые процедуры и функции. Уделено внимание администрированию СУБД с помощью запросов. Материал сопровождается задачами для самостоятельного решения.
Для студентов и программистов.
От автора. 1
Благодарности. 1
Введение. 3
Как устроена эта книга. 4
Как выполнять примеры SQL-выражений. 6
Работа с Microsoft SQL Server 2000. 7
Работа с Microsoft Access 2003. 11
Глава 1. Основы реляционных баз данных. 17
Множества. 17
Отношения. 29
Общие сведения. 29
Способы представления отношений. 32
Операции над отношениями. 35
Декомпозиция отношений. 42
Корректная декомпозиция. 43
Пример некорректной декомпозиции. 44
Зависимости между атрибутами. 45
Правила вывода зависимостей. 55
Ключи. 57
Ограничения целостности отношений. 60
Семантическая целостность. 60
Доменная целостность. 61
Ссылочная целостность. 61
Нормализация таблиц. 63
Первая нормальная форма. 65
Вторая нормальная форма. 66
Третья нормальная форма. 67
Доменно-ключевая нормальная форма. 67
Денормализация. 68
Глава 2. Основы SQL. 69
Что такое SQL. 69
Типы данных. 73
Строки. 76
Числа. 77
Логические данные. 80
Дата и время. 80
Интервалы. 83
Специальные типы данных. 84
Пользовательские типы данных. 86
Неопределенные значения. 90
Преобразование типов. 91
Глава 3. Простые выборки данных. 93
Основное SQL-выражение для выборки данных. 94
Уточнения запроса. 98
Оператор WHERE. 102
Оператор GROUP BY 109
Оператор HAVING. 111l
Оператор ORDER BY. 112
Логические операторы. 113
Задачи. 114
Задача 3.1. 115
Задача 3.2. 115
Задача 3.3. 115
Глава 4. Вычисления. 117
Итоговые функции. 117
Функции обработки значений. 121
Строковые функции. 121
Числовые функции. 123
Функции даты-времени. 125
Вычисляемые выражения. 126
4.4. Условные выражения с оператором CASE. 129
Оператор CASE со значениями. 129
Оператор CASE с условиями поиска. 130
Функции NULL IF yl COALESCE. 132
Глава 5. Сложные запросы. 135
Подзапросы. 136
Простые подзапросы. 136
Связанные подзапросы. 142
Теоретико-множественные операции. 147
Декартово произведение наборов записей. 147
Объединение наборов записей (UNION). 149
Пересечение наборов записей (INTERSECT). 152
Вычитание наборов записей (EXCEPT). 153
Операции соединения. 154
Естественное соединение (NATURAL JOIN). 155
Условное соединение (JOIN ON). 157
Соединение по именам столбцов (ОЖ USING). 157
Внешние соединения. 159
Рекурсивные запросы. 164
Задачи. 167
Задача 5.1. 167
Задача 5.2. 170
Задача 5.3. 170
Задача 5.4. 171
Задача 5.5. 171
Глава 6. Добавление, удаление и изменение данных в таблицах. 173
Добавление новых записей. 173
Удаление записей. 176
Изменение данных. 178
Проверка ссылочной целостности. 182
Глава 7. Создание и модификация таблиц. 185
Создание таблиц. 185
Ограничения для столбцов. 187
Ограничения для таблиц. 190
Внешние ключи. 192
Удаление таблиц. 195
Модификация таблиц. 196
Представления. 200
Что такое представление. 200
Создание представлений. 203
Изменение данных в представлениях. 206
Задачи. 207
Задача 7.1. 207
Задача 7.2. 208
Задача 7.3 208
Задача 7.4. 208
Глава 8. Транзакции. 209
Как устроена транзакция. 210
Определение параметров транзакции. 212
Уровни изоляции транзакций. 213
Неподтвержденное чтение. 213
Подтвержденное чтение. 214
Повторяющееся чтение. 214
Последовательное выполнение. 215
Субтранзакции. 215
Ограничения в транзакциях. 216
Глава 9. Курсоры и применение SQL в приложениях. 221
Объявление курсора. 224
Чувствительность. 224
Перемещаемость. 225
Выражение запроса. 226
Сортировка. 226
Разрешение обновления. 227
Открытие и закрытие курсора. 228
Работа с отдельными записями. 229
SQL в приложениях. 232
Глава 10. Постоянно хранимые модули. 237
Составные команды. 238
Атомарность. 239
Переменные. 240
Оглавление. VII
Обработка состояния. 241
Операторы условного перехода. 244
Оператор IF. 244
Оператор CASE... END CASE. 245
Операторы цикла. 247
Оператор LOOP...END LOOP. 247
Оператор WHILE... DO ... END WHILE. 248
Оператор REPEAT... UNTIL ... END REPEATE. 249
Оператор FOR ... DO ... END FOR. 249
Оператор ITERATE. 251
Хранимые процедуры и функции. 252
Хранимые модули. 255
Глава 11. Управление правами доступа. 257
Пользователи. 257
Администратор базы данных. 258
Владелец объектов базы данных. 258
Другие пользователи. 259
Создание пользователей. 259
Предоставление привилегий. 260
Роли и группы. 262
Право просмотра данных. 263
Право изменять данные. 263
Право удалять записи. 264
Право на использование ссылок. 264
Право на домены. 265
Право предоставлять права. 266
Отмена привилегий. 267
Приложение. Зарезервированные слова SQL. 271
Предметный указатель. 275