Рецепты SQL-запросов на все случаи
и для всех баз данных  

Энтони Молинаро

SQL. Сборник рецептов

Издательство "Символ Плюс" (www.symbol.ru), СПб.-Москва; 2009; 672 стр.; 17x24 см; тир.2000; ISBN-13: 978-5-93286-125-7; ISBN-10: 5-93286-125-8; перевод с англ. Н.Шатохиной; научный редактор К.Козлинский

Решения и методики построения запросов
для разработчиков баз данных

Аннотация от изд. "Символ Плюс" http://www.symbol.ru/alphabet/608269.html

Оригинал: SQL Cookbook, by Anthony Molinaro. O’Relly Media Inc. 2006, ISBN 0-596-00976-2 (англ)

Категория: базы данных
Уровень подготовки читателей: средний

Включает решения для SQL Server, PostgreSQL, Oracle, MySQL и DB2

SQL «также неисчерпаем, как и атом»
Вл. Ильин «Материализм и эмпириокритицизм» (1909)

«Большинство разработчиков используют SQL
лишь формально и даже не подозревают о той мощи,
которая имеется в их распоряжении.»

Энтони Молинаро «SQL. Сборник рецептов» (2006)

Расхожее мнение: «Управлять государством и лечить людей от всех болезней – умеют все». Так и программировать на языке SQL умеют все. Кто-то разрабатывает программы на C++, кто-то на Delphi, на Java, на …, или даже на PL/SQL. И все так отлично знают обычный SQL, что даже как бы «стыдясь» его простоты, понятности и прозрачности, иногда городят такие громоздкие запросы, что процессы их выполнения зависают на много часов, пытаясь выяснить, какую же все-таки информацию разработчик хотел предоставить конечному пользователю. Для администраторов баз данных дело обстоит немного лучше. Существуют многие очень хорошие программные инструменты, которые буквально вскрывают базу данных, как банку с килькой, и высвечивают протекание процессов так прозрачно, как будто это изготовление яичницы :). Но надо отдавать себе отчет, что эти сильные действия стали возможными потому, что разработчики инструментария хорошо знали именно SQL. И еще. Каким бы продвинутым ни был применяемый инструментарий, пользователи, разработчики, АБД всегда находят вопросы к базе, которые не предусмотрены даже самым лучшим программным средством, ответы на которые может дать только непосредственный SQL-запрос. Из этого следует довольно простой и очевидный вывод, что язык SQL надо изучать и знать. А также надо знать, какие существуют книги, справочники, сборники рецептов (Cookbook), которые помогут, посоветуют, научат. Поэтому рекомендую познакомиться с книгой Энтони Молинаро «SQL. Сборник рецептов» .

Надо ли напоминать, что язык SQL (SQL:2003 — действующая в настоящее время пятая версия стандарта) является стандартом языка доступа для большинства реляционных баз данных. Это и Oracle (все релизы), и DB2, и SQL Server, и PostgreSQL, и MySQL, для которых непосредственно приведены рецепты (SQL-запросы) в рассматриваемой книге, но и многие квази- и пост- реляционные СУБД. SQL является также языком доступа к реляционным конструкциям нереляционных баз данных. Конечно, реализованная, встроенная в СУБД версия языка SQL одного вендора неизбежно, в том числе и по коммерческим причинам, отличается от SQL в СУБД других производителей, но все они – сестры, ну, может быть, двоюродные. Поэтому хорошее знание SQL для одной линии СУБД во много раз облегчает и ускоряет при необходимости переход на SQL другой линии. Это подтверждают примеры, приводимые в этой SQL Cookbook (сборнике рецептов, кулинарной книге). И наибольший интерес вызывают, конечно, различия в формулировании одного и того же запроса к различным базам данных. Таким образом, знакомясь с одной линией баз данных, становишься специалистом сразу по пяти воплощениям SQL.

Очень важно обозначить целевую аудиторию читателей, которым предназначена книга, а также что есть и чего нет в ней по выбору автора. «SQL. Сборник рецептов» адресован автором (и рецензент с этим полностью согласен):

В «SQL. Сборник рецептов» отсутствуют (выбор автора):

Все остальное, как по мнению рецензента, так и автора аннотации к книге, в той-или-иной степени присутствует: «… как применять оконные функции и специальные операторы, а также расширенные методы работы с хранилищами данных: создание гистограмм, резюмирование данных, выполнение агрегации скользящего диапазона значений, формирование текущих сумм и подсумм. … как разворачивать строки в столбцы и наоборот, упрощать вычисления внутри строки и выполнять двойное разворачивание результирующего множества, выполнять обход строки, что позволяет использовать SQL для синтаксического разбора строки на символы, слова или элементы строки с разделителями. Приемы, предлагаемые автором, позволят оптимизировать код ваших приложений и откроют перед вами новые возможности языка SQL» !

Мой настоятельный совет: очень внимательно ознакомиться с оглавлением этой поваренной книги. В нем перечислены, конечно, не все, но очень многие рецепты. По названиям «кушаний» легко можно понять, насколько полезна эта книга для изучения и использования в повседневной жизни SQL-программиста и АБД Oracle, DB2, SQL Server, PostgreSQL, MySQL. Отмечу лишь несколько рецептов, которые должны заинтересовать любого SQL-программиста: «Возвращение n случайных записей таблицы», «Сортировка смешанных буквенно-цифровых данных», «Поиск одинаковых строк в двух таблицах», «Идентификация и устранение некорректного использования декартова произведения», «Выявление строк, которые могут быть интерпретированы как числа»,… Глава 9 «Работа с датами» в руссом переводе выложена на сервере изд. «Символ Плюс» по адресу http://www.books.ru/chapter?id=608269 . Я хочу привести отзыв Дж.Д. Херрингтона:
"Это замечательная книга для всех, кто пишет на SQL. Приобретите ее немедленно. О, вам нужна причина? Хорошо. Глава, рассказывающая о том, как эффективно работать с иерархическими данными (бич всех SQL-программистов), уже стоит потраченных денег. Ах да, все остальные главы тоже хоть куда".
Я с ним согласен.

В заключение этой заметки я хочу обратить внимание читателей на мнение специалистов компании "ФОРС", которые изучают и тестируют oracle-приложения пользователей на современном много серверном программно-аппаратном комплексе Exadata Database Machine. Кратко оно звучит примерно так: "Чем больше в программе SQL, тем успешнее применяются достоинства Exadata, тем лучше масштабируется приложение за счет распараллеливания SQL, тем быстрее и экономнее выполняется приложение".

Книга «SQL. Сборник рецептов» имеется в интернет-магазинах, а на сайте издательства по адресу http://www.books.ru/books/sql-sbornik-retseptov-fail-pdf-626980/?show=1 можно приобрести ее в pdf-формате.

На мой взгляд, она представляет значительный интерес для любого SQL-специалиста – от студента до профессионала высокого уровня.

Анатолий Бачин,
интернет-журнал “FORS Magazine”
главный редактор

Приложение 1.

Полное оглавление книги Энтони Молинаро «SQL. Сборник рецептов»

Предисловие

Глава 1. Извлечение записей

Глава 2. Сортировка результатов запроса

Глава 3. Работа с несколькими таблицами

Глава 4. Вставка, обновление, удаление

Глава 5. Запросы на получение метаданных

Глава 6. Работа со строками

Глава 7. Работа с числами

Глава 8. Арифметика дат

Глава 9. Работа с датами

Глава 10. Работа с диапазонами данных

Глава 11. Расширенный поиск

Глава 12. Составление отчетов и управление хранилищами данных

Глава 13. Иерархические запросы

Глава 14. Всякая всячина

Приложение A. Оконные функции, краткий обзор
Приложение B. Вспоминаем Розенштейна
Алфавитный указатель