90
Глава
5.
Язык SQL.
Формирование
запросов
к
базе данных
ти
WHERE
оператора
SELECT,
и в
этом случае
в
результирующее
отношение
попада-
ли
только сцепленные
по
заданным
условиям
кортежи исходных
отношений,
для
которых
эти
условия были определены
и
истинны.
Однако
в
действитель-
ности
часто необходимо объединять таблицы таким образом, чтобы
в
результат
попали
все
строки
из
первой
таблицы,
а
вместо
тех
строк второй таблицы,
для
которых
не
выполнено условие
соединения,
в
результат попадали
бы
неопреде-
ленные
значения.
Или
наоборот,
включаются
все
строки
из
правой
(второй)
таблицы,
а
отсутствующие части строк
из
первой таблицы дополняются неопре-
деленными
значениями.
Такие
объединения были названы внешними
в
проти-
воположность
объединениям,
определенным стандартом
SQ.L1,
которые
Стали
называться внутренними.
В
общем случае синтаксис части
FROM
в
стандарте
SQ.L2
выглядит следующим
образом:
'
FROM
<список исходных
таблиц>
|,
<
выражение
естественного объединения
>
|
<
выражение объединения
> |
<
выражение
перекрестного объединения
>
|
<
выражение
запроса
на
объединение
>
<список
исходных
таблицм;»
<имя_таблицы_1>
[
имя
синонима
таблицы_1]
[
...]
[,<имя_таблицы_п>[
<иня
синонима
таблицы_п>
] ]
выражение
естественного
объединениям:
»
<иня_таблицы
1>
NATURAL
{
INNER
|
FULL [OUTER]
|
LEFT
[OUTER]
|
RIGHT
[OUTER]}
JOIN
<имя_таблицы_2>
выражение
перекрестного
объединениям:
=
<имя_таблицы_1>
CROSS
JOIN
<имя_таблицы_2>
выражение
запроса
на
объединением
:=
<имя_таблицы_1>
UNION
JOIN
<иня_таблицы_2>
выражение
объединениями
<иия таблицы
1> {
INNER
|
FULL
[OUTER]
|
LEFT [OUTER]
~|
RIGHT
TAUTER]}
JOIN
(ON
условие
[
[USING (список
столбцов)]}
<имя_таблицы_2>
В
этих
определениях
INNER
—
означает
внутреннее
объединение,
LEFT
—
левое
объединение,
то
есть
в
результат
входят
все
строки таблицы
1,
а
части резуль-
тирующих
кортежей,
для
которых
не
было соответствующих значений
в
таб-
лице
2,
дополняются
значениями
NULL
(неопределено). Ключевое слово
RIGHT
означает
правое внешнее
объединение,
и в
отличие
от
левого объединения
в
этом
случае
в
результирующее
отношение
включаются
все
строки таблицы
2,
а не-
достающие части
из
таблицы
1
дополняются
неопределенными
значениями, Клю-
чевое слово
FULL
определяет полное внешнее объединение:
и
левое
и
правое.
При
полном
внешнем объединении выполняются
и
правое
и
левое
внешние
объеди-
нения
и в
результирующее отношение включаются
все
строки
из
таблицы
1»
до-
полненные неопределенными значениями,
и все
строки
из
таблицы
2,
также
до-
полненные
неопределенными значениями.