|
Программирование >> Преобразование значений null
цепты для решения распространенных задач, включающих вставку, обновление и удаление данных. По моему твердому убеждению, рецепты XML неуместны в книге по SQL. Хранение документов XML в реляционных базах данных приобретает все большую популярность, и в каждой СУБД имеются собственные расширения и инструментальные средства для извлечения и работы с такими данными. Работа с XML часто требует использования процедурного кода и, таким образом, выходит за рамки рассмотрения данной книги. Последние разработки, такие как XQuery, представляют собой совершенно не связанный с SQL предмет обсуждения и заслуживают отдельной книги (или книг). Объектно-ориентированные расширения SQL Пока не появился язык запросов, более подходящий для работы с объектами, я решительно против использования объектно-ориентированных возможностей и конструкций в реляционных базах данных. В настоящее время объектно-ориентированные возможности, поставляемые некоторыми производителями, больше подходят для процедурного программирования, чем для работы с множествами, для которой и был создан SQL. Теоретические моменты В данной книге вы не найдете обсуждения того, является ли SQL реляционным или нужны ли значения NULL. Такие теоретические дискуссии имеют место, но не в книге, целью которой является предоставление SQL-решений для реальных задач. Решая возникающие проблемы, мы просто используем доступные инструменты. Приходится работать с тем, что есть, а не с тем, что хотелось бы иметь. Если вы хотите углубиться в теорию, начните с любой книги серии Database Writings* Криса Дейта (Chris Date). Можете также приобрести экземпляр его последней книги Database in Depth* (OReilly). Политика производителей В данной книге даются решения для пяти СУБД. Вполне естественно желание знать, решение какого производителя является лучшим или самым быстрым . Любой производитель с радостью предоставит информацию, подтверждающую преимущества своего продукта, я не намерен заниматься этим. Политика ANSI Во многих книгах авторы обычно воздерживаются от использования функций, являющихся собственностью отдельных производителей. В данной книге эти функции применяются. Я не хотел писать сложный непроизводительный SQL-код, просто чтобы обеспечить его переносимость. Я никогда не работал в средах, в которых Структура данной книги Данная книга включает в себя 14 глав и 2 приложения: Глава 1 Извлечение записей представляет очень простые запросы. В примерах показано, как с помощью предиката WHERE выбирать строки в результирующее множество, присваивать псевдонимы столбцам результирующего множества, использовать вложенный запрос для обращения к столбцам по псевдонимам, применять простую условную логику, ограничивать число возвращаемых в результате запроса строк, возвращать случайные строки и выявлять значения NULL. Большинство примеров очень простые, но некоторые из них появляются в более сложных рецептах. Поэтому, если вы не очень хорошо знакомы с SQL или нашли для себя что-то новое в перечисленных примерах, нелишним будет прочитать эту главу. Глава 2 Сортировка результатов запроса представляет рецепты для сортировки результатов запросов. Для этого применяется оператор ORDER BY. Сложность примеров варьируется от простого упорядочивания одного столбца до сортировки по подстрокам и сортировки с использованием условных выражений. Глава 3 Работа с несколькими таблицами представляет рецепты для сочетания данных нескольких таблиц. Всем новичкам в SQL и тем, кто немного недопонимает объединения, настоятельно реко- были бы запрещены расширения, предоставляемые производителями. Вы платите за эти возможности; почему бы не использовать их? Расширения производителей существуют не просто так, они предлагают во много раз более высокую производительность и делают программы гораздо более понятными, чем при использовании стандартного SQL. Предпочитаете стандартные решения - хорошо. Как уже говорилось ранее, я не заставляю вас переворачивать свой код с ног на голову. Если вы строго придерживаетесь ANSI и вам этого достаточно, замечательно. В конце концов, все мы ходим на работу, всем надо оплачивать счета, и все мы хотим приходить домой вовремя и наслаждаться тем, что нам осталось. Я не говорю, что стандартные решения неверны. Делайте то, что считаете нужным и что лучше всего вам подходит. Хочу лишь пояснить, что если вы ищете стандартные решения, эта книга не для вас. Политика наследования В рецептах данной книги используются новейшие возможности, доступные на момент ее написания. В более старых версиях СУБД многие из приведенных решений просто не будут работать. Технологии не стоят на месте, не должны отставать и мы. Если нужны решения для предыдущих версий, их можно найти во множестве выпущенных за прошедшие годы книг по SQL с массой примеров для более старых версий СУБД, чем рассматриваются в данной книге. мендую прочитать эту главу, прежде чем переходить к главе 5 и далее. Объединение таблиц - это суть SQL; чтобы добиться успеха в работе с SQL, необходимо понять объединения. В данной главе приведены примеры как внутренних, так и внешних объединений, показаны декартовы произведения, базовые операции над множествами (вычитание, объединение, пересечение) и влияние объединений на агрегатные функции. Глава 4 Вставка, обновление, удаление представляет рецепты для вставки, обновления и удаления данных. Большинство примеров очень просты (возможно, даже прозаичны). Тем не менее умение осуществлять операции типа вставки строк одной таблицы в другую и использовать связанные подзапросы при обновлениях, понимание последствий присутствия значений NULL и знание новых возможностей, например вставки в несколько таблиц и команды MERGE, - все это навыки, которые исключительно полезно иметь в своем профессиональном багаже. Глава 5 Запросы на получение метаданных представляет рецепты для получения доступа к метаданным используемой базы данных. Часто весьма полезно знать индексы, ограничения и таблицы схемы. Предложенные здесь простые рецепты позволят получать информацию о схеме. Кроме того, в этой главе показаны примеры динамического SQL , т. е. SQL, сгенерированного SQL. Глава 6 Работа со строками представляет рецепты для работы со строками. SQL славен не своими возможностями синтаксического разбора строк, но немного смекалки (обычно с привлечением декартовых произведений) в сочетании с широким набором предоставляемых производителями функций позволяет достичь немалых успехов в этом деле. С данной главы начинается самое интересное. Среди наиболее любопытных примеров - подсчет экземпляров символа в строке, создание списков с разделителями из строк таблицы, преобразование списков с разделителями и строк в строки таблицы и разделение числовых и символьных данных строки, состоящей из буквенно-цифровых символов. Глава 7 Работа с числами представляет рецепты для решения обычных задач с числами. Здесь вы найдете совершенно обыкновенные примеры и узнаете, как легко оконные функции справляются с задачами, связанными с вычислениями и агрегацией. В этой главе рассматриваются вычисление текущей суммы; нахождение среднего, медианы и моды; вычисление процентилей и обработка значений NULL при проведении агрегации. Глава 8 Арифметика дат - первая из двух глав, посвященных работе с датами. Очень важно при решении каждодневных задач уметь осуществлять простые операции с датами. Примеры включают определение количества рабочих дней между двумя датами, вычисление разницы между двумя датами в разных единицах време-
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |