Книга Энтони Молинаро "SQL. Сборник рецептов" предназначена тем, кто уже знаком с основами языка запросов SQL и хочет повысить свой профессиональный уровень. Она будет полезна и экспертам SQL, поскольку автор предлагает варианты решения задач для разных СУБД: DB2, Oracle, PostgreSQL, MySQL и SQL Server. Если вы постоянно работаете с SQL на одной платформе, то, возможно, найдете в рецептах более эффективное решение на другой. Вы научитесь использовать SQL для решения более широкого спектра задач - от операций внутри баз данных до передачи данных по сети в приложения. Для этого достаточно открыть книгу на странице с интересующим вас рецептом. Вы узнаете, как применять оконные функции и специальные операторы, а также расширенные методы работы с хранилищами данных: создание гистограмм, резюмирование данных в блоки, выполнение агрегации скользящего диапазона значений, формирование текущих сумм и подсумм. Вы сможете разворачивать строки в столбцы и наоборот, упрощать вычисления внутри строки и выполнять двойное разворачивание результирующего множества, выполнять обход строки, что позволяет использовать SQL для синтаксического разбора строки на символы, слова или элементы строки с разделителями. Приемы, предлагаемые автором, позволят оптимизировать код ваших приложений и откроют перед вами новые возможности языка SQL.
Содержание
Предисловие Часть 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) Преобразование данных с помощью вложенного запроса Проверка существования значения в группе
Эта книга — подробное руководство по управлению базами данных Microsoft SQL Server 2005. В ней даны пошаговые инструкции для установки и конфигурирования SQL Server 2005, создания объектов баз данных, секционирования, зеркального отображения баз данных,создания моментальных снимков баз данных, реализации доставки журналов, репликации и работы с такими компонентами, как Database Mail, Service Broker, SQL Server Agent и Full Text Search.
В настоящем издании помимо главной темы — структурированного языка запросов SQL — освещаются вопросы основных понятий реляционных баз данных, а также уделено значительное внимание примерам использования различных подвидов языка SQL, применяемых в таких СУБД, как Oracle, MS SQL Server, MySQL, DB2 и других. В конце каждой главы приведены тесты, которые позволяют оценить и систематизировать полученные знания.