Предисловие

Для кого предназначена эта книга


Часть 1. Обзор языка SQL

Глава 1. Обзор
Язык SQL
Роль SQL
Достоинства SQL
Независимость от конкретных СУБД
Переносимость с одной вычислительной системы на другие
Стандарты языка SQL
Одобрение SQL компанией IBM (СУБД DB2)
Протокол ODBC и компания Microsoft
Реляционная основа
Высокоуровневая структура, напоминающая английский язык
Интерактивные запросы
Программный доступ к базе данных
Различные представления данных
Полноценный язык для работы с базами данных
Динамическое определение данных
Архитектура клиент/сервер

Глава 2. Краткое введение в SQL
Простая база данных
Чтение данных
Получение итоговых данных
Добавление данных
Удаление данных
Обновление данных
Защита данных
Создание базы данных
Резюме

Глава 3. Развитие SQL
SQL и управление базами данных
Краткая история SQL
Первые годы
Первые реляционные СУБД
СУБД компании IBM
Коммерческое признание
Стандарты SQL
Стандарты ANSI/ISO
Другие стандарты SQL
ODBC и консорциум SQL Access Group
Миф о переносимости
SQL и сети
Централизованная архитектура
Архитектура файл/сервер
Архитектура клиент/сервер
Влияние SQL
SQL и спецификация SAA компании IBM
SQL на мини-компьютерах
SQL на системах UNIX
SQL и обработка транзакций
SQL на персональных компьютерах
SQL в локальных вычислительных сетях
Резюме

Глава 4. Реляционные базы данных
Первые модели данных
Системы управления файлами
Иерархические СУБД
Сетевые базы данных
Реляционная модель данных
Учебная база данных
Таблицы
Первичные ключи
Отношения предок/потомок
Внешние ключи
Двенадцать правил Кодда*
Резюме


Часть 2. Чтение данных

Глава 5. Основы SQL
Операторы
Имена
Имена таблиц
Имена столбцов
Типы данных
Дополнительные типы данных
Различия в реализациях типов данных
Константы
Числовые константы
Строковые константы
Константы даты и времени
Символьные константы
Выражения
Встроенные функции
Отсутствующие данные (значения NULL)
Резюме

Глава 6. Простые запросы на чтение
Оператор SELECT
Предложение SELECT
Предложение FROM
Результаты запроса на чтение
Простые запросы
Вычисляемые столбцы
Чтение всех столбцов (оператор SELECT)
Повторяющиеся строки (ключевое слово DISTINCT)
Отбор строк (предложение WHERE)
Условия поиска
Сравнение (=, , =)
Проверка на принадлежность диапазону значений (BETWEEN)
Поверка на членство в множестве (IN)
Проверка на соответствие шаблону (LIKE)
Проверка на равенство значению NULL (IS NULL)
Составные условия поиска (AND, OR и NOT)
Сортировка результатов запроса (предложение ORDER BY)
Правила выполнения однотабличных запросов
Объединение результатов нескольких запросов (UNION)
Запрос на объединение и повторяющиеся строки
Запрос на объединение и сортировка
Многократные запросы на объединение
Резюме

Глава 7. Многотабличные запросы на чтение (объединения)
Пример двухтабличного запроса
Простое объединение таблиц (объединение по равенству)
Запросы с использованием отношения предок/потомок
Объединения с условием для отбора строк
Несколько связанных столбцов
Запросы на чтение к трем и более таблицам
Прочие объединения таблиц по равенству
Объединение таблиц по неравенству
Особенности многотабличных запросов
Полные имена столбцов
Чтение всех столбцов
Самообъединения
Псевдонимы таблиц
Производительность при обработке многотабличных запросов
Структура объединения таблиц
Умножение таблиц
Правила выполнения многотабличных запросов
Внешнее объединение таблиц
Левое и правое внешние объединения
Система записи внешнего объединения
Объединения и стандарт SQL2
Внутренние объединения в стандарте SQL2
Внешние объединения в стандарте SQL2
Перекрестные объединения и запросы на объединение в SQL2
Многотабличные объединения в стандарте SQL2
Резюме

Глава 8. Итоговые запросы на чтение
Агрегатные функции
Вычисление суммы столбца (SUM)
Вычисление среднего значения столбца (AVG)
Вычисление экстремумов (MIN и МАХ).
Вычисление количества значений в столбце (COUNT)
Агрегатные функции в списке возвращаемых столбцов
Агрегатные функции и значения NULL
Удаление повторяющихся строк (DISTINCT)
Запросы с группировкой (предложение GROUP BY)
Несколько столбцов группировки
Ограничения на запросы с группировкой
Значения NULL в столбцах группировки
Условия поиска групп (предложение HAVING)
Ограничения на условия поиска групп
Значения NULL и условия поиска групп
Предложение HAVING без GROUP BY
Резюме

Глава 9. Вложенные запросы на чтение
Применение вложенных запросов
Что такое вложенный запрос
Вложенные запросы в предложении WHERE
Внешние ссылки
Условия поиска во вложенном запросе
Сравнение с результатом вложенного запроса (=, , =).
Проверка на принадлежность результатам вложенного запроса (IN)
Проверка на существование (EXISTS)
Многократное сравнение (ANY и ALL)
Вложенные запросы и объединения
Уровни вложенности запросов
Связанные вложенные запросы
Вложенные запросы в предложении HAVING
Резюме
SQL-запросы на чтение — заключительное резюме


Часть 3. Изменение данных

Глава 10. Внесение изменений в базу данных
Добавление новых данных
Однострочный оператор INSERT
Многострочный оператор INSERT
Утилиты пакетной загрузки
Удаление существующих данных
Оператор DELETE
Удаление всех строк
Оператор DELETE с вложенным запросом
Обновление существующих данных
Оператор UPDATE
Обновление всех строк
Оператор UPDATE с вложенным запросом
Резюме

Глава 11. Целостность данных
Условия целостности данных
Обязательность данных
Проверка на правильность
Целостность таблицы
Прочие условия уникальности
Уникальность и значения NULL
Ссылочная целостность
Проблемы, связанные со ссылочной целостностью
Правила удаления и обновления
Каскадные удаления и обновления
Ссылочные циклы
Внешние ключи и значения NULL
Деловые правила
Что такое триггер
Триггеры и ссылочная целостность.
Достоинства и недостатки триггеров
Триггеры и стандарты SQL
Резюме

Глава 12. Обработка транзакций
Что такое транзакция
Операторы COMMIT и ROLLBACK
Модель транзакции в стандарте ANSI/ISO
Другие модели транзакций
Журнал транзакций
Транзакции и работа в многопользовательском режиме
Проблема пропавшего обновления
Проблема промежуточных данных
Проблема несогласованных данных
Проблема строк-призраков
Параллельные транзакции
Блокировка
Уровни блокировки
Жесткая и нежесткая блокировки
Тупиковые ситуации
Усовершенствованные методы блокировки
Резюме


Часть 4. Структура базы данных

Глава 13. Создание баз данных
Язык определения данных
Создание базы данных
Определения таблиц
Создание таблицы (оператор CREATE TABLE)
Удаление таблицы (оператор DROP TABLE)
Изменение определения таблицы (оператор ALTER TABLE)
Определение ограничительных условий
Условия проверки
Утверждения.
Определения доменов
Синонимы (операторы CREATE/DROP SYNONYM)
Индексы (операторы CREATE/DROP INDEX)
Другие объекты базы данных
Структура базы данных
Однобазовая архитектура
Многобазовая архитектура
Каталоговая архитектура
DDL и стандарт ANSI/ISO
Резюме

Глава 14. Представления
Что такое представление
Как СУБД работает с представлениями
Преимущества представлений
Недостатки представлений
Создание представлений (оператор CREATE VIEW)
Горизонтальные представления
Вертикальные представления
Смешанные представления
Сгруппированные представления
Объединенные представления
Обновление представлений
Обновление представлений и стандарт ANSI/ISO
Обновление представлений в коммерческих СУБД
Контроль обновления представления (предложение WITH CHECK OPTION)
Удаление представления (оператор DROP VIEW)
Резюме

Глава 15. SQL и безопасность баз данных
Принципы защиты данных, применяемые в SQL
Идентификатор пользователя
Защищаемые объекты
Привилегии
Представления и зашита данных в SQL
Предоставление привилегий (оператор GRANT)
Привилегии на столбцы
Передача привилегий (предложение WITH GRANT OPTION)
Отмена привилегий (оператор REVOKE)
Оператор REVOKE и право предоставления привилегий
Оператор REVOKE и стандарт ANSI/ISO
Резюме

Глава 16. Системный каталог
Что такое системный каталог
Системный каталог и средства формирования запросов
Системный каталог и стандарт ANSI/ISO
Содержимое системного каталога
Информация о таблицах
Информация о столбцах
Информация о представлениях
Комментарии и метки
Информация об отношениях между таблицами
Информация о пользователях
Информация о привилегиях
Информационная схема в стандарте SQL2
Прочая информация
Резюме


Часть 5. Программирование на SQL

Глава 17. Встроенный SQL
Обзор программного SQL
Выполнение операторов SQL в СУБД
Основные концепции встроенного SQL
Разработка программы со встроенным SQL
Выполнение программы со встроенным SQL
Простые операторы встроенного SQL
Объявления таблиц
Обработка ошибок
Использование базовых переменных
Чтение данных с помощью встроенного SQL
Однострочные запросы
Многострочные запросы
Удаления и обновления данных с использованием курсоров
Курсоры и обработка транзакций
Резюме

Глава 18. Динамический SQL
Недостатки статического SQL.
Основная концепция динамического SQL
Динамическое выполнение операторов (оператор EXECUTE IMMEDIATE)
Динамическое выполнение в два этапа
Оператор PREPARE
Оператор EXECUTE
Оператор DECLARE STATEMENT
Динамические запросы на чтение
Оператор DESCRIBE
Динамический оператор DECLARE CURSOR
Динамический оператор OPEN
Динамический оператор FETCH
Динамический оператор CLOSE
Диалекты динамического SQL
Динамический SQL в SQL/DS
Динамический SQL в Oracle
Динамический SQL и стандарт SQL2
Стандарт SQL2 и область SQLDA
Стандарт SQL2 и динамические SQL-запросы
Резюме

Глава 19. Интерфейсы программирования приложений SQL
Принципы применения интерфейса программирования приложений
Интерфейс программирования приложений в SQL Server
Основные принципы работы SQL Server
Запросы на чтение в SQL Server
Хранимые процедуры
Позиционные обновления
Динамические запросы
Другие интерфейсы программирования приложений
Интерфейс вызовов в Oracle
Интерфейс программирования приложений в SQLBase
Резюме


Часть 6. Перспективы развития языка SQL

Глава 20. Управление распределенными базами данных
Проблемы управления распределенными данными
Уровни доступа к распределенным данным
Удаленные запросы
Удаленные транзакции
Распределенные транзакции
Распределенные запросы
Распределенные таблицы
Горизонтальное разделение таблиц
Вертикальное разделение таблиц
Зеркальные таблицы
Реплицированные таблицы
Метод двухфазного выполнения
Резюме

Глава 21. SQL и основные тенденции развития баз данных
Тенденции на рынке баз данных
Повышение производительности аппаратного обеспечения
Война за показатели производительности
Стандарты языка SQL
Расширения языка SQL
Сложные типы данных
Приложения для архитектуры клиент/сервер
Доступ к реляционным базам данных из приложений для персональных компьютеров
Клиентские программы для работы с базами данных
Распределенные базы данных
Объектно-ориентированные базы данных

Приложение А. Учебная база данных

Приложение Б. Синтаксис языка SQL (стандарт ANSI/ISO)

Предметный указатель