Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Равносилен предикату




  1. exp1 >= exp2 AND exp1 <= exp3

Явные операции соединения

В предложении FROM может быть указана явная операция соединения двух и более таблиц. Среди ряда операций соединения, описанных в стандарте языка SQL, многими серверами баз данных поддерживается только операция соединения по предикату. Синтаксис соединения по предикату имеет вид:

1. FROM <таблица 1>

2. [INNER]

3. {{LEFT | RIGHT | FULL } [OUTER]} JOIN <таблица 2>

4. [ON <предикат>]

Соединение может быть либо внутренним (INNER), либо одним из внешних (OUTER). Служебные слова INNER и OUTER можно опускать, поскольку внешнее соединение однозначно определяется его типом — LEFT (левое), RIGHT (правое) или FULL (полное), а просто JOIN будет означать внутреннее соединение.

Предикат определяет условие соединения строк из разных таблиц. При этом INNER JOIN означает, что в результирующий набор попадут только те соединения строк двух таблиц, для которых значение предиката равно TRUE. Как правило, предикат определяет эквисоединение по внешнему и первичному ключам соединяемых таблиц, хотя это не обязательно.

Пример: Найти производителя, номер модели и цену каждого компьютера, имеющегося в базе данных:

1. SELECT maker, Product.model AS model_1, PC.model AS model_2, price

2. FROM Product INNER JOIN

3. PC ON PC.model = Product.model

4. ORDER BY maker, PC.model

В данном примере в результирующем наборе будут соединяться только те строки из таблиц РС и Product, у которых совпадают номера моделей.

Внешнее соединение LEFT JOIN означает, что помимо строк, для которых выполняется условие предиката, в результирующий набор попадут все остальные строки из первой таблицы (левой). При этом отсутствующие значения столбцов из правой таблицы будут заменены NULL -значениями.

Соединение RIGHT JOIN обратно соединению LEFT JOIN, то есть в результирующий набор попадут все строки из второй таблицы, которые будут соединяться только с теми строками из первой таблицы, для которых выполняется условие соединения. В нашем случае левое соединение

Product LEFT JOIN PC ON PC.model = Product.model

будет эквивалентно правому соединению

PC RIGHT JOIN Product ON PC.model = Product.model

Наконец, при полном соединении (FULL JOIN) в результирующую таблицу попадут не только те строки, которые имеют одинаковые значения в сопоставляемых столбцах, но и все остальные строки исходных таблиц, не имеющие соответствующих значений в другой таблице. В этих строках все столбцы той таблицы, в которой не было найдено соответствия, заполняются NULL -значениями. То есть полное соединение представляет собой комбинацию левого и правого внешних соединений.

Объединение

Для объединения запросов используется служебное слово UNION:

1. <запрос 1>

2. UNION [ALL]

3. <запрос 2>

Предложение UNION приводит к появлению в результирующем наборе всех строк каждого из запросов. При этом, если определен параметр ALL, то сохраняются все дубликаты выходных строк, в противном случае в результирующем наборе присутствуют только уникальные строки. Заметим, что можно связывать вместе любое число запросов. Кроме того, с помощью скобок можно задавать порядок объединения.

Операция объединения может быть выполнена только при выполнении следующих условий:

· количество выходных столбцов каждого из запросов должно быть одинаковым;

· выходные столбцы каждого из запросов должны быть совместимы между собой (в порядке их следования) по типам данных;

· в результирующем наборе используются имена столбцов, заданные в первом запросе;

· предложение ORDER BY применяется к результату соединения, поэтому оно может быть указано только в конце всего составного запроса.

Пример: Найти тип продукции, номер модели и цену ПК и портативных компьютеров:

1. SELECT Product.type, PC.model, price

2. FROM PC INNER JOIN

3. Product ON PC.model = Product.model

4. UNION

5. SELECT Product.type, Laptop.model, price

6. FROM Laptop INNER JOIN

7. Product ON Laptop.model = Product.model

8. ORDER BY price DESC;

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...