Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Многотабличные запросы и стандарт SQL2

Читайте также:
  1. Cat - слить и вывести файлы на стандартный вывод.
  2. DCOR моделирование как разновидность стандарта SCOR модели.
  3. I. Государственный стандарт общего образования и его назначение
  4. III. Структура Федерального компонента образовательного стандарта по обществознанию
  5. III. ХАРАКТЕРИСТИКА СТАНДАРТОВ ВТОРОГО ПОКОЛЕНИЯ ПО ИНФОРМАТИКЕ
  6. III. Характеристика стандартов второго поколения по физике
  7. IV. Концептуальные подходы образовательных стандартов по предмету
  8. UNIX, стандартизация операционных систем и POSIX
  9. V. Соотношение содержания стандартов и примерных программ
  10. V. Стандартизація.

В стандарте SQL1 дано определение только внутреннего соединения таблиц, понятие внешнего соединения в нем отсутствует. Однако внешнее соединение таблиц является полезной частью реляционной модели данных и реализовано во многих СУБД (SQL Server, Oracle, SQLBase). Способы представления внешних соединений в различных программных продуктах сильно отличались друг от друга и выбирались по принципу их наименьшего влияния на язык SQL, поэтому в стандарте SQL2 был определен совершенно новый метод поддержки внешних соединений, не опирающийся ни на одну из популярных СУБД. В спецификации стандарта SQL2 поддержка внешних соединений осуществляется в предложении FROM, синтаксис которой позволяет точно определить, каким образом исходные таблицы должны быть соединены в запросе. Oracle SQL имеет полную поддержку расширенного предложения FROM, начиная с версии Oracle9i.

Результатом соединения, реализованного в предложении FROM, является порожденная таблица, которая и должна обрабатываться остальными операторами запроса. Можно совмещать в одном запросе соединения, заданные посредством расширенного предложения FROM, и соединения, определенные условием соединения WHERE, однако сложность логики исполнения оператора превышает полученные преимущества. Стандарт SQL2 предусматривает использование только одной встроенной операции соединения в каждом предложении FROM.

Для всех соединений, исключая перекрестные соединения и соединения объединения, поддерживаются следующие типы соединения:

тип_соединения = INNER | {LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER]}

Внутреннее соединение (INNER). Это тип соединения по умолчанию. Соединяются только те строки, где найдены совпадающие значения столбцов.

Левое внешнее соединение (LEFT [OUTER]). Это соединение включает в себя все строки из первой таблицы (совпадающие и несовпадающие) и совпадающие значения из второй таблицы. Для строк из первой таблицы, которым не найдено соответствие, в столбцы, извлекаемые из второй таблицы, заносятся значения NULL.

Правое внешнее соединение (RIGHT [OUTER]). Это соединение является обратным предыдущему, оно включает в себя все строки из второй таблицы (совпадающие и несовпадающие) и совпадающие значения из первой таблицы. Для строк из второй таблицы, которым не найдено соответствие, в столбцы, извлекаемые из первой таблицы, заносятся значения NULL.

Полное внешнее соединение (FULL [OUTER]). Это комбинация левого и правого внешних соединений. Присутствуют все строки из обеих таблиц. Если значения столбцов совпадают, то столбцы заполнены реальными значениями. В противном случае столбцы заполняются значениями NULL.

В расширенном предложении FROM используются следующие синтаксические конструкции:

Перекрестное соединение – простое декартово произведение, используются все комбинации строк.

… FROM таблица1 CROSS JOIN таблица2

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

… FROM таблица1 UNION JOIN таблица2

Естественное соединение – операция соединения по нескольким столбцам с одинаковыми именами. Определяются и выделяются только те строки декартова произведения таблиц, в которых значения этих столбцов одинаковы, и эти столбцы затем объединяются в один общий столбец.

… FROM таблица1 [NATURAL] [ тип_соединения ] JOIN таблица2

Соединение посредством предиката. Значение предиката вычисляется с использованием значений, взятых из строки-кандидата соединения (строки, полученной в результате декартова произведения соединяемых таблиц). В результирующую таблицу попадают строки, для которых значением предиката является TRUE.

… FROM таблица1 [ тип_соединения ] JOIN таблица2 ON предикат

Соединение посредством имен столбцов. USING определяет имена столбцов, значения в которых должны совпадать. USING отличается от NATURAL (естественного соединения) тем, что USING позволяет соединять в таблицах заданное подмножество столбцов с совпадающими именами, а NATURAL автоматически соединяет все столбцы, имеющие одинаковые имена.

… FROM таблица1 [ тип_соединения ] JOIN таблица2 USING (столбец1 [, столбец2, …]) …

Литература

Мартин Грабер. Справочное руководство по SQL: пер. с англ. – М.: Издательство «Лори», 1997.

Джеймс Р. Грофф, Пол Н. Вайнберг SQL: полное руководство: пер. с англ. - -К.: Издательская группа BHV, 1998.




Дата добавления: 2014-12-18; просмотров: 77 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав