Книга посвящена языку программирования SQL, применяемому для работы с реляционными базами данных. Обсуждается версия языка ANSI SQL-92 (SQL2).
В настоящем издании рассказывается об использовании запросов SQL для решения соответствующих классов задач по выборке данных, их модификации или по работе с объектами структуры базы данных. Все конструкции подробно описываются и иллюстрируются большим количеством примеров. Кроме того, для каждого типа запросов рассматриваются отклонения от стандарта в реализации наиболее распространенных СУБД: MS Access, MS SQL Server, Oracle, MySQL и PostgreSQL.
Книга предназначена всем тем, кто желает самостоятельно изучить язык SQL или усовершенствовать свои знания по этой теме.
Введение. 11
Глава 1. Основные характеристики СУБД. 24
Выполнение программ SQL. 25
Microsoft Access. 27
Microsoft SQL Server. 30
Oracle. 33
MySQL. 36
PostgreSQL. 38
Глава 2. Реляционная модель. 41
Таблицы, столбцы и строки. 43
Первичные ключи. 47
Внешние ключи. 51
Связи. 54
Нормализация. 57
Наша типовая база данных. 63
Глава 3. Основы SQL. 69
Синтаксис SQL. 69
Типы данных. 75
Строковые типы данных. 77
Битовые типы данных. 79
Точные числовые типы данных. 80
Действительные числовые типы данных. 82
Календарные типы данных. 84
Интервальные типы данных. 88
Значение null. 90
Глава 4. Выбор данных из произвольной таблицы. 92
Выбор столбцов с помощью предложений SELECT и FROM. 93
Создание псевдонимов столбцов с помощью предложения AS. 96
Удаление повторяющихся строк с помощью ключевого слова DISTINCT. 99
Сортировка строк с помощью предложения ORDER BY. 101
Фильтрация строк с помощью предложения WHERE. 109
Комбинирование условий с помощью операторов AND, OR и NOT. 114
Сравнение по шаблону оператором LIKE. 122
Сравнение с диапазоном с помощью оператора BETWEEN. 128
Фильтрация с помощью оператора IN. 131
Проверка на значение null с помощью оператора IS NULL. 134
Глава 5. Операторы и функции. 137
Создание производных столбцов. 138
Арифметические операции. 140
Определение последовательности вычисления. 143
Объединение строк с помощью оператора II. 145
Выбор произвольной подстроки с помощью функции SUBSTRING(). 149
Переключение регистра символов строки с использованием функций UPPER() и LOWER(). 153
Удаление пробелов с помощью функции TRIM(). 155
Определение длины произвольной строки с помощью функции СНARACTERJLENGTH (). 159
Поиск подстроки с использованием функции POSITION(). 161
Операции с данными даты и времени. 165
Извлечение значений текущих даты и времени. 169
Отображение информации о пользователе. 171
Преобразование типов данных с помощью функции CAST(). 173
Вычисление условных значений с помощью выражения CASE. 179
Проверка на значения null с использованием функции COALESCE(). 184
Сравнение выражений с помощью функции NULLIF(). 185
Глава 6. Суммирование и группировка данных. 188
Использование агрегатных функций. 189
Поиск минимума посредством функции MIN(). 192
Поиск максимума с использованием функции МАХ(). 194
Вычисление суммы с помощью функции SUM(). 196
Порядок расчета среднего значения с помощью функции AVG(). 198
Подсчет строк с помощью функции COUNTQ. 200
Исключение повторных значений с помощью предложения DISTINCT. 202
Группирование строк с использованием предложения GROUP BY. 206
Фильтрация групп с помощью предложения HAVING. 215
Глава 7. Выбор данных из нескольких таблиц. 219
Уточнение имен столбцов. 220
Создание псевдонимов таблиц с помощью предложения AS. 222
Использование объединений. 224
Создание объединений с помощью синтаксиса JOIN и WHERE. 228
Создание произвольного перекрестного объединения с использованием предложения CROSS JOIN. 233
Создание произвольного естественного объединения с использованием предложения NATURAL JOIN. 236
Создание внутреннего объединения с помощью команды INNER JOIN. 241
Создание внешних объединений с помощью команды OUTER JOIN. 265
Создание самообъединения. 279
Комбинирование строк с помощью оператора UNION. 286
Поиск общих строк с помощью команды INTERSECT. 295
Поиск разных строк с помощью команды EXCEPT. 297
Глава 8. Подзапросы. 299
Принципы работы с подзапросами. 300
Структура подзапросов. 302
Подзапросы и объединения. 303
Простые и сложные запросы. 307
Определение названий столбцов в подзапросах. 313
Значения null в подзапросах. 314
Использование подзапросов в качестве выражений в списке заголовков столбцов. 316
Сравнение значений, возвращаемых подзапросом, с использованием операторов сравнения. 320
Проверка на вхождение во множество с помощью оператора IN. 325
Сравнение всех значений запроса с помощью ключевого слова ALL. 333
Сравнение некоторых значений запроса с помощью ключевого слова ANY. 337
Проверка наличия выборки с помощью оператора EXISTS. 341
Сравнение эквивалентных запросов. 347
Глава 9. Добавление, обновление и удаление строк. 348
Отображение названий столбцов в таблице. 349
Вставка строк с помощью команды INSERT. 352
Изменение строк с помощью команды UPDATE. 358
Удаление строк с помощью команды DELETE. 363
Глава 10. Создание, изменение и удаление таблиц. 367
Порядок создания таблиц. 368
Основные принципы работы с ограничениями. 369
Создание новой таблицы с помощью команды CREATE TABLE. 371
Запрет значения null с помощью ограничения NOT NULL. 373
Присвоение значения по умолчанию с помощью ограничения DEFAULT. 376
Задание первичного ключа с помощью ограничения PRIMARY KEY. 379
Задание внешнего ключа с помощью ограничения FOREIGN KEY. 383
Присвоение уникальных значений с помощью ограничения UNIQUE. 389
Проверка значений столбца с помощью ограничения CHECK. 392
Создание временной таблицы с помощью команды CREATE TEMPORARY TABLE. 395
Создание новой таблицы на основе существующей с помощью команды SELECT INTO 398
Изменение таблицы с помощью команды ALTER TABLE 401
Удаление таблицы с помощью команды DROP TABLE. 404
Глава 11. Индексы. 405
Создание индекса с помощью команды CREATE INDEX. 405
Удаление индекса с помощью команды DROP INDEX. 409
Глава 12. Представления. 411
Создание представления с помощью команды CREATE VIEW. 411
Считывание данных из представления. 417
Изменение данных через представление. 419
Удаление представления с помощью команды DROP VIEW. 424
Глава 13. Транзакции. 425
Выполнение транзакций. 426
Приложение. 431
Предметный указатель. 445