РЕЦЕНЗИЯ
Фиайли К. SQL. Руководство по изучению языка. Пер. с англ. М.: ДМК Пресс; СПб: Питер, 2004. - 604 с.
Поиск нужной информации в реляционных БД, занимающих сегодня среди баз данных главенствующее положение в мире СУБД, производится по запросу, который формулируется, как правило, на языке структурированных запросов SQL. Для того чтобы не знакомый c данным механизмом обычный человек мог им пользоваться, разрабатываются и широко применяются шаблоны запросов, представленные в виде графических форм с окнами: набрал, к примеру, в окошечке название объекта, и в других окнах появляются подробные сведения о нем. За этой простотой и наглядностью для пользователя как раз и скрывается написанная на языке SQL программа, посылающая запрос к СУБД и реализующая выборку из БД нужных данных. Пользователь, не подозревая о сложном мире, в котором "живет" база данных, взаимодействует через SQL со своей (т. е. клиентской) программой, которая подает ему в презентационном виде полученные и обработанные результаты запроса.
Основам языка программирования SQL и его стандартной версии ANSI SQL-92 (SQL2) и посвящена рецензируемая книга. Она состоит из введения, 13 глав, разбитых на тематические разделы, приложения и предметного указателя.
Как говорится во введении, запрос к БД может быть написан на любом языке, не только на SQL, однако именно этот язык, являясь специально разработанным для реляционных БД, имеет ряд существенных преимуществ, что позволяет легко и кратко формулировать запросы, причем на "человеческом" языке. Автор отмечает, что SQL в отличие от обычных (процедурных) языков программирования, таких, как VB, Си и Perl, представляет собой непроцедурный язык, т. е. в нем явно отсутствуют операторы, а программа составляется из директив. Причем, подчеркивает он, имея познания в английском, можно практически сразу приступить к расшифровке смысла "сказанного" на SQL - без предварительного его изучения, что совершенно необходимо для обычных языков программирования. Обработку запроса и представление "сказанного"на уровне команд, "понимаемых" СУБД, производит оптимизатор SQL, автоматически определяющий наилучший способ обработки данных. Приводя для сравнения простой, но наглядный пример запроса в двух вариантах - на MS VB и SQL, автор показывает, что одной SQL-строке кода запроса соответствует двадцать строк на VB. При этом SQL-код понятен с ходу и непрограммисту, в то время как для понимания даже простейшей программы на VB нужны определенные знания. Более того, рекомендуется предварительно прочесть небольшой вводный раздел под названием "Непроцедурный" именно программистам, привыкшим к процедурным языкам, и, наоборот, читателям, не знакомым с таковыми, - сразу приступить к изучению SQL.
В первой главе рассматриваются особенности шести популярных СУБД и их возможности по реализации SQL-запросов. Поскольку каждый разработчик СУБД, поддерживающей язык ANSI SQL-92, допускает при его реализации отклонения от этого стандарта, то на практике при написании запросов знание таких отклонений играет большую роль. Ценность представленного материала состоит в том, что автор отобразил в своем труде особенности реализации SQL наиболее популярных СУБД: MS Access, MS SQL Server, Oracle, MySQL и PostgreSQL.
Во второй главе дается краткое введение в реляционную модель, а с третьей главы автор приступает непосредственно к делу, преподнося читателю основы этого языка; в четвертой речь идет о методах выборки данных из таблиц, а в пятой описываются основные операторы и функции языка SQL.
С шестой по десятую главы Крис Фиайли дает читателю уроки по углубленному изучению языка. Здесь можно найти информацию о суммировании и группировке данных с использованием агрегатных функций; о том, как получать выборки данных из нескольких таблиц; о принципах работы с подзапросами и об их структуре. Из этих глав читатель узнает и о методах добавления, обновления и удаления строк, а также создания, изменения и удаления целых таблиц.
Одиннадцатая глава посвящена вопросам индексации БД, а в следующей, предпоследней главе автор показывает, как создавать SQL-представления, изменять данные через такие представления и т. п.
В заключительной тринадцатой главе (она, к сожалению, оказалась самой короткой - всего пять страниц) рассматриваются принципы выполнения транзакций.
Большое число практических советов и примеров с текстами запросов, доступно иллюстрирующих обсуждаемый и не всегда простой материал, способствует его эффективному усвоению.
Книгой могут воспользоваться как начинающие программисты и опытные пользователи, так и профессионалы, пожелавшие усовершенствовать свои знания в этой области. Последние, безусловно, найдут для себя интересные страницы, касающиеся, например, построения сложных запросов.