Программирование >>  Преобразование значений null 

1 [ 2 ] 3 4 5 ... 219


темы управления реляционными базами данных (СУБД1) и содержит решения для всех них параллельно. Для вас это шанс расширить свою базу знаний.

Как работать с этой книгой

Внимательно прочитайте это предисловие. В нем содержатся важные исходные данные и другая информация, которую вы упустите, если сразу углубитесь в отдельные рецепты. Раздел Платформа и версия рассказывает о том, какие СУБД рассматривает данная книга. Особое внимание следует обратить на раздел Таблицы, используемые в данной книге , который поможет разобраться с примерами таблиц, используемыми в большинстве рецептов. В разделе Условные обозначения приведены важные соглашения по написанию кода и использованию шрифтов. Все эти разделы можно найти ниже в предисловии.

Необходимо помнить, что данная книга - сборник рецептов, собрание примеров кода, которые следует использовать как рекомендации при решении подобных (или аналогичных) задач. Не надо пытаться выучить по этой книге SQL, по крайней мере, не с нуля. Она должна дополнять, а не подменять академический учебник по SQL. Приведенные ниже подсказки помогут более эффективно использовать данную книгу:

В книге используются специальные функции отдельных баз данных. Все их можно найти в книге Джонатана Генника (Jonathan Gennick) SQL Pocket Guide , которую удобно иметь под рукой на случай, если вы не знаете некоторые функции, встречающиеся в моих рецептах.

Если вы никогда не работали с оконными функциями или имели проблемы с запросами, использующими GROUP BY, прочитайте сначала Приложение А. В нем определяется и описывается на практических примерах, что такое группировка в SQL. Что еще более важно, там дается базовое представление о работе оконных функций. Оконные функции - одно из самых важных достижений SQL прошедшего десятилетия.

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

Хотя в английском языке используется аббревиатура RDBMS, в русском первую букву часто опускают и пишут просто СУБД. - Примеч. науч.ред.



няйте его. Все запросы начинаются с SELECT ...FROM..., поэтому на элементарном уровне все они одинаковые. Постепенно усложняя, достраивая запрос шаг за шагом, функция за функцией, объединение за объединением, вы не только поймете, как эти конструкции меняют результирующее множество, но и увидите, чем рецепт отличается от того, который вам на самом деле нужен. И вот тогда вы уже сможете изменять рецепт соответственно своему конкретному набору данных.

Тестируйте, тестируйте и еще раз тестируйте. Вне всякого сомнения, любая ваша таблица больше, чем таблица EMP из 14 строк, используемая в этой книге, поэтому, пожалуйста, тестируйте решения на своих данных, по крайней мере, чтобы убедиться, что они работают. Я не могу знать, как выглядят ваши таблицы, какие столбцы проиндексированы и какие отношения обозначены в вашей схеме. Поэтому, будьте добры, не применяйте слепо приведенные техники в своем коде, до тех пор пока не разберетесь в них полностью и не поймете, как они будут вести себя в применении к вашим конкретным данным.

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

Новое не всегда значит лучшее. Если вы не используете некоторые из самых свежих возможностей SQL (например, оконные функции), это не означает, что ваш код неэффективен. Есть много примеров, когда традиционные решения SQL ничуть не хуже, а, подчас, даже лучше, чем новое решение. Пожалуйста, не забывайте об этом, особенно в Приложении В, Вспомним Розенштейна . После прочтения данной книги у вас не должно возникнуть мысли о необходимости дополнить или изменить свой существующий код. Вы должны просто узнать о том, что теперь в SQL есть много новых и исключительно эффективных возможностей, которых не было 10 лет назад, и что они стоят времени, затраченного на их изучение.

Ничего не бойтесь. Дойдя до раздела Решение рецепта и увидев запрос, который, кажется, невозможно понять, не пугайтесь. Я приложил максимум усилий, чтобы не только рассмотреть каждый запрос, начиная с его простейшей формы, но и показать промежуточные результаты выполнения каждой части запроса, прежде чем перейти к полному решению. Можно не охватить всей картины сразу, но по мере обсуждения и рассмотрения построения запроса и результатов каждого шага вы увидите, что не так сложно понять даже самые замысловатые запросы.



Создавайте защищенный код, если это необходимо. Стараясь сделать запросы книги максимально лаконичными без ущерба их прозрачности, я опустил многие меры защиты . Например, рассмотрим запрос, суммирующий заработные платы служащих. Может так случиться, что столбец объявлен типа VARCHAR и (к сожалению) числовые и строковые данные хранятся в одном поле. В приводимом в книге рецепте по вычислению суммы не выполняется проверка типов данных (и запрос даст сбой, поскольку функция SUM не умеет работать с символьными данными). Поэтому если у вас есть такие данные , точнее сказать, проблема , в коде необходимо обработать ее или (смею надеяться) исправить данные, потому что в предоставленных рецептах не предусмотрена такая практика, как смешение символьных и числовых данных в одном столбце. Основная цель - сосредоточиться на методике; когда вы поймете методику, такие отклонения не будут представлять сложности.

Повторение - мать учения. Лучший способ освоить рецепты данной книги - сесть и написать их код самостоятельно. Прочитать и понять код - это одно, а вот самому написать его - совершенно другое. Читая код, можно лишь разобраться, почему что-то делается так, а не иначе, но только написав код, вы действительно научитесь создавать запросы.

Помните, что многие примеры данной книги искусственные. Но задачи не искусственные. Они реальные. Однако я построил все примеры вокруг небольшого набора таблиц с данными о служащих. Это сделано для того, чтобы, привыкнув к набору данных, можно было сосредоточиться на технике, иллюстрируемой каждым примером. Вы можете взглянуть на конкретную задачу и подумать: Мне никогда не пришлось бы делать это с данными служащих . Но в таких случаях постарайтесь не обращать внимание на данные и сосредоточиться на иллюстрируемой методике. Методики - вот что важно. Я и мои коллеги используем их ежедневно. Думаем, и вам они будут полезны.

Чего нет в этой книге

Из-за ограничений по времени и размерам невозможно в одной книге представить решения всех встречающихся задач SQL, поэтому некоторые темы здесь не рассмотрены:

Описание данных

Данная книга не охватывает такие аспекты SQL, как создание индексов, наложение ограничений и загрузка данных. Синтаксис, используемый при реализации подобных задач, обычно сильно различается для разных баз данных, поэтому лучше всего обратиться к справочным материалам от производителя вашей СУБД. Кроме того, эти задачи не представляют особой проблемы, для их решения нет необходимости покупать книгу. Однако в главе 4 показаны ре-



1 [ 2 ] 3 4 5 ... 219

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика