Объединение таблиц
- Что такое объединения? и Что такое реляционные таблицы?
- Создание объединения
- Важность предложения WHERE
- Внутренние объединения
- Объединение многих таблиц
Что такое объединения? и Что такое реляционные таблицы?
Одной из самых мощных особенностей реализаций языка SQL является возможность "на лету" объединять таблицы при выполнении запросов на выборку данных. Объединения — это самые мощные операции, которые можно выполнить с использованием оператора SELECT языка SQL, поэтому тщательное изучение объединений и их синтаксиса является чрезвычайно важной частью процесса освоения SQL.
Прежде чем вы сможете эффективно использовать объединения, вам следует уяснить, что такое реляционные таблицы, и ознакомиться с основами построения реляционных баз данных. В этой книге полностью осветить эту тему не удастся, но сказанного будет достаточно для того, чтобы вы могли получить полное представление об этом предмете и двигаться дальше.
- Предположим, что некоторая таблица базы данных содержит каталог продуктов, в котором для каждого предмета, включенного в каталог, выделена одна строка. Информация, которая хранится о каждом предмете, должна включать описание продукта и его цену, а также сведения о поставщике и компании, выпустившей данный продукт. Теперь предположим, что вы получили обширный каталог от одного из поставщиков. Где вы должны хранить информацию о поставщике (такую как имя, адрес и контактная информация)? Не рекомендуется хранить эти данные вместе с данными о его продуктах по нескольким причинам.
- Потому что информация о поставщике одна и та же для всех его продуктов; повторение этой информации для каждого продукта приведет к напрасной потере времени и места на диске.
- Если информация о поставщике изменяется (например, если он переезжает или изменяется его почтовый код), вам придется обновлять информацию каждый раз, когда вы будете вносить данные об этом поставщике.
- Когда данные повторяются (а так происходит, когда информация о поставщике указывается для каждого продукта), высока вероятность того, что данные не будут каждый развводиться одним и тем же образом. Несовместимые данные очень трудно использовать при создании отчетов.
Отсюда можно сделать вывод, что хранить множество экземпляров одних и тех же данных крайне нежелательно, именно этот принцип и лежит в основе создания реляционных баз данных.
В таблице Products хранится только информация о продуктах, и никакой конкретной информации о поставщиках, за исключением их идентификаторов (первичного ключа таблицы Vendors). Этот ключ связывает таблицу Vendors с таблицей Products. Благодаря применению этого идентификатора поставщика вы можете использовать таблицу Vendors для поиска информации о соответствующем поставщике.
Что это дает? Давайте рассмотрим следующие моменты:
- Информация о поставщике никогда не повторяется, благодаря чему экономится время и место на диске.
- Если информация о поставщике изменяется, бывает достаточно обновить только одну запись о нем, единственную в таблице Vendors. Данные в связанных с нею таблицах изменять не нужно.
- Поскольку никакие данные не повторяются, они, очевидно, оказываются непротиворечивыми, благодаря чему составление отчетов и манипулирование данными значительно упрощаются.
Таким образом, реляционные данные можно эффективно хранить и ими можно легко манипулировать. Благодаря этому реляционные базы данных используются намного чаще, чем другие.
Для чего используют объединения?
Если данные хранятся во многих таблицах, как их можно извлечь с помощью одного оператора SELECT? Ответ таков: посредством объединения данных. Проще говоря, объединение представляет собой механизм, используемый для объединения таблиц внутри оператора (отсюда термин "объединение"). Используя особый синтаксис, можно объединить несколько таблиц таким образом, что будет возвращаться один результат, и это объединение будет "на лету" связывать нужные строки из каждой таблицы.



