Предисловие
Часть 1.
Извлечение записей
Извлечение всех строк и столбцов из таблицы
Извлечение подмножества строк из таблицы
Выбор строк по нескольким условиям
Извлечение подмножества столбцов из таблицы
Как задать столбцам значимые имена
Обращение к столбцу в предикате WHERE по псевдониму
Конкатенация значений столбцов
Использование условной логики в выражении SELECT
Ограничение числа возвращаемых строк
Возвращение n случайных записей таблицы
Поиск значений NULL
Преобразование значений NULL в не-NULL значения
Поиск по шаблону

Часть 2.
Сортировка результатов запроса
Возвращение результатов запроса в заданном порядке
Сортировка по нескольким полям
Сортировка по подстрокам
Сортировка смешанных буквенно-цифровых данных
Обработка значений NULL при сортировке
Сортировка по зависящему от данных ключу
Часть 3.
Работа с несколькими таблицами
Размещение одного набора строк под другим
Объединение взаимосвязанных строк
Поиск одинаковых строк в двух таблицах
Извлечение из одной таблицы значений, которых нет в другой таблице
Извлечение из таблицы строк, для которых нет соответствия в другой таблице
Независимое добавление объединений в запрос
Выявление одинаковых данных в двух таблицах
Идентификация и устранение некорректного использования декартова произведения
Осуществление объединений при использовании агрегатных функций
Внешнее объединение при использовании агрегатных функций
Возвращение отсутствующих данных из нескольких таблиц
Значения NULL в операциях и сравнениях
Часть 4.
Вставка, обновление, удаление
Вставка новой записи
Вставка значений по умолчанию
Переопределение значения по умолчанию значением NULL
Копирование строк из одной таблицы в другую
Копирование описания таблицы
Вставка в несколько таблиц одновременно
Блокировка вставки в определенные столбцы
Изменение записей в таблице
Обновление в случае существования соответствующих строк в другой таблице
Обновление значениями из другой таблицы
Слияние записей
Удаление всех записей из таблицы
Удаление определенных записей
Удаление одной записи
Удаление записей, которые нарушают ссылочную целостность
Уничтожение дублирующихся записей
Удаление записей, на которые есть ссылки в другой таблице
Часть 5.
Запросы на получение метаданных
Как получить список таблиц схемы
Как получить список столбцов таблицы
Как получить список индексированных столбцов таблицы
Как получить список ограничений, наложенных на таблицу
Как получить список внешних ключей без соответствующих индексов
Использование SQL для генерирования SQL
Описание представлений словаря данных в базе данных Oracle
Часть 6.
Работа со строками
Проход строки
Как вставить кавычки в строковые литералы
Как подсчитать, сколько раз символ встречается в строке
Удаление из строки ненужных символов
Разделение числовых и символьных данных
Как определить, содержит ли строка только буквенно-цифровые данные
Извлечение инициалов из имени
Упорядочивание по частям строки
Упорядочивание по числу в строке
Создание списка с разделителями из строк таблицы
Преобразование данных с разделителями в список оператора IN со множеством значений
Упорядочение строки в алфавитном порядке
Выявление строк, которые могут быть интерпретированы как числа
Извлечение n-ной подстроки с разделителями
Синтаксический разбор IP-адреса
Часть 7.
Работа с числами
Вычисление среднего
Поиск минимального/максимального значения столбца
Вычисление суммы значений столбца
Подсчет строк в таблице
Подсчет значений в столбце
Вычисление текущей суммы
Вычисление текущего произведения
Вычисление текущей разности
Вычисление моды
Вычисление медианы
Вычисление доли от целого в процентном выражении
Агрегация столбцов, которые могут содержать NULL-значения
Вычисление среднего без учета наибольшего и наименьшего значений
Преобразование буквенно-цифровых строк в числа
Изменение значений в текущей сумме
Часть 8.
Арифметика дат
Добавление и вычитание дней, месяцев и лет
Определение количества дней между двумя датами
Определение количества рабочих дней между двумя датами
Определение количества месяцев или лет между двумя датами
Определение количества секунд, минут или часов между двумя датами
Как подсчитать, сколько раз в году повторяется каждый день недели
Определение интервала времени в днях между текущей и следующей записями
Часть 9.
Работа с датами
Как определить, является ли год високосным
Как определить количество дней в году
Извлечение единиц времени из даты
Определение первого и последнего дней месяца
Выбор всех дат года, выпадающих на определенный день недели
Определение дат первого и последнего появления заданного дня недели
Создание календаря
Получение дат начала и конца кварталов года
Определение дат начала и окончания заданного квартала
Дополнение отсутствующих дат
Поиск по заданным единицам времени
Сравнение строк по определенной части даты
Выявление наложений диапазонов дат
Часть 10.
Работа с диапазонами данных
Поиск диапазона последовательных значений
Вычисление разности между значениями строк одной группы или сегмента
Определение начала и конца диапазона последовательных значений
Вставка пропущенных значений диапазона
Формирование последовательности числовых значений
Часть 11.
Расширенный поиск
Разбиение результирующего множества на страницы
Как пропустить n строк таблицы
Использование логики OR во внешних объединениях
Выявление строк со взаимообратными значениями
Как выбрать записи с n-ым количеством наивысших значений
Как найти записи с наибольшим и наименьшим значениями
Сбор информации из последующих строк
Смещение значений строк
Ранжирование результатов
Исключение дубликатов
Ход конем
Формирование простых прогнозов
Часть 12.
Составление отчетов и управление хранилищами данных
Разворачивание результирующего множества в одну строку
Разворачивание результирующего множества в несколько строк
Обратное разворачивание результирующего множества
Обратное разворачивание результирующего множества в один столбец
Исключение повторяющихся значений из результирующего множества
Разворачивание результирующего множества для упрощения вычислений
Создание блоков данных фиксированного размера
Создание заданного количества блоков
Создание горизонтальных гистограмм
Создание вертикальных гистограмм
Как возвратить столбцы, не перечисленные в операторе GROUP BY
Вычисление простых подсумм
Вычисление подсумм для всех возможных сочетаний
Как выявить строки, в которых представлены не подсуммы
Использование выражений CASE для маркировки строк
Создание разреженной матрицы
Группировка строк по интервалам времени
Агрегация разных групп/сегментов одновременно
Агрегация скользящего множества значений
Разворачивание результирующего множества, содержащего подсуммы
Часть 13.
Иерархические запросы
Представление отношений родитель-потомок
Представление отношений потомок-родитель-прародитель
Создание иерархического представления таблицы
Выбор всех дочерних строк для заданной строки
Определение узлов: ветвления, концевого, корневого
Часть 14.
Всякая всячина
Создание отчетов с перекрестными ссылками с помощью оператора SQL Server PIVOT
Обратное разворачивание отчета с помощью оператора SQL Server UNPIVOT
Транспонирование результирующего множества с помощью оператора Oracle MODEL
Извлечение элементов строки, положение которых в строке неизвестно
Как определить количество дней в году (альтернативное решение для Oracle)
Поиск смешанных буквенно-цифровых строк
Преобразование целых чисел в их двоичное представление с использованием Oracle
Разворачивание ранжированного результирующего множества
Как добавить заголовок столбца в дважды развернутое результирующeе множество
Преобразование скалярного подзапроса в составной подзапрос (Oracle)
Синтаксический разбор сериализованных данных в строки таблицы
Определение доли от целого в процентном выражении
Создание списка разделенных запятыми значений в Oracle
Выбор текста, не соответствующего шаблону (Oracle)
Преобразование данных с помощью вложенного запроса
Проверка существования значения в группе

Приложение A.
Оконные функции, краткий обзор

Приложение B.
Вспоминаем Розенштейна

Алфавитный указатель