Программирование >>  Исключение дубликатов строк 

1 ... 59 60 61 [ 62 ] 63 64 65 ... 152


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

7

скорее, духом закона

Что такое множество

Если вы учились в физико-математической школе, вы изучали теорию множеств. Если вы знакомились с алгеброй множеств, то, вероятно, задумывались, пригодится ли это вам когда-нибудь.

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

Как ни удивительно, но вы работаете с множествами с самого начала этой книги. Из главы 1 вы узнали об основной структуре реляционной базы данных - таблицах, содержащих записи, которые составлены из одного или нескольких полей. (Вспомним, что в SQL записи называются строками, а поля - столбцами.) Каждая таблица в базе данных представляет собой мнооюестао информации об одном предмете. И кавдая таблица должна содержать набор информации, связанной с одним и только одним предметом или действием.

В главе 4 мы объяснили, как построить основной оператор SELECT в SQL для извлечения набора результатов с информацией, которая содержит конкретные столбцы одной таблицы, и как отсортировать такой набор результатов. В главе 5 мы показали, как собрать новое мнооюество информации из таблицы, записывая выражения, которые оперируют с одним или несколькими столбцами. Из главы 6 вы узнали, как можно отрттшъ мноо/сество информации, извлеченной из таблиц, добавляя к запросу фильтр (условие WHERE).

Как можно видеть, множество может быть совсем небольшим, как данные одного столбца из одной строки в одной таблице. Фактически в SQL можно построить запрос, который вовсе не возвращает строк,- пустое множество (иногда оно полезно и помогает обнаружить, что что-то не существует). Множество также может состоять из нескольких столбцов (включая столбцы, созданные в выражениях) нескольких строк, извлеченных из нескольких таблиц. Каждая строка в наборе результатов является элементом множества. Значения в столбцах являются специальными атрибутами каждого элемента - элементами данных, которые описывают элемент множества.

Операции над множествами

Как уже говорилось, д-р Э. Ф. Кодд придумал реляционную модель, на которой основываются большинство современных баз данных и SQL. В основе этой модели использованы две ветви математики - теория множеств и исчисление предикатов первого порядка.



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

Три наиболее обш.их операции над множествами следуюш.ие:

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

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




мне клиентов, заказавших мотоциклы, но не заказавших шлемы .

Объединение - Используется для объединения двух или более подобных множеств. Покажите мне рецепты, в которые входят либо мясо молодого барашка, либо рис . Покажите мне клиентов, заказавших либо мотоциклы, либо шлемы .

В следуюш,их трех разделах поясняются эти основные операции над множествами. В разделе SQL-операции над множествами дается обзор того, как эти операции реализуются в чистом SQL.

Пересечение

Пересечение двух множеств содержит обш,ие элементы из этих двух множеств. Рассмотрим пересечение как с точки зрения теории множеств, так и с точки зрения решения коммерческих задач.

Пересечение а теории множеств

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

Рассмотрим пересечение в действии, исследуя два множества чисел. В этом примере каждое отдельное число является элементом множества. Первое множество выглядит следуюш1м образом:

1, 5, 8, 9, 32, 55, 78



Второе множество чисел следующее:

3, 7, 8, 22, 55, 71, 99

Пересечением этих двух множеств являются числа, имеющиеся в ка>едом из множеств. Ответ:

8, 55

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

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

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

Картофель

Вода

Мясо

молодого барашка

Горошек

Куриный бульон

Курица

Морковь

11аста

Вода

То фу

Молодой горошек в стручках

Картофель

Бульон

из говядины

Говядина

Капуста

11аста

Вода

Свинина

1 множество может выглядеть следующим образом:

Картофель

Вода

Мясо

молодого барашка

Куриный бульон

Индюпштина

Морковь

11аста

Отвар из овощей

То фу

Молодой горопгек в стручках

Картофель

Бульон

из говядины

Говядина

Капуста

Бобы

Вода

Свинина



1 ... 59 60 61 [ 62 ] 63 64 65 ... 152

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