MariaDB оператор Join

В этом учебном пособии вы узнаете, как использовать MariaDB оператор JOINS (внутренний и внешний) с синтаксисом, примерами и графическими иллюстрациями.

Описание

MariaDB JOINS используются для извлечения данных из нескольких таблиц. MariaDB JOIN выполняется всякий раз, когда две или более таблицы объединяются в SQL запросе.
Существуют разные типы соединений MariaDB:

Итак, давайте обсудим синтаксис MariaDB JOIN, рассмотрим наглядные иллюстрации и рассмотрим примеры MariaDB JOIN.

INNER JOIN (простое соединение)

Скорее всего, вы уже писали запросы, которое используют MariaDB INNER JOIN. Это самый распространенный тип соединения. MariaDB INNER JOINS возвращает все строки из нескольких таблиц, где выполняется условие соединения.

Синтаксис

Синтаксис INNER JOIN в MariaDB:

SELECT columns
FROM table1
INNER JOIN table2
ON table1.column = table2.column;

Визуальная иллюстрация

На этой визуальной схеме MariaDB INNER JOIN возвращает затененную область:
inner-join

MariaDB INNER JOIN будет возвращать записи, в которых пересекаются table1 и table2.

Пример

Вот пример MariaDB INNER JOIN:

Этот пример MariaDB INNER JOIN вернул бы все строки из таблиц sites и pages, где в обоих таблицах sites и pages есть совпадающее значение site_id.
Рассмотрим данные, чтобы объяснить, как работают внутренние соединения:
У нас есть таблица sites с двумя полями (site_id и site_name). Она содержит следующие данные:

site_id site_name
1000 Yahoo.com
2000 Bing.com
3000 Yandex.com
4000 Google.com

У нас есть еще одна таблица под названием страницы с тремя полями (page_id, site_id и file_size). Она содержит следующие данные:

page_id site_id page_title
1 1000 Sports
2 1000 Finance
3 2000 MSN
4 3000 Metrika
5 5000 Gmail

Если мы запустим оператор SELECT (который содержит INNER JOIN) ниже:

Наш набор результатов будет выглядеть так:

site_id site_name page_id page_title
1000 Yahoo.com 1 Sports
1000 Yahoo.com 2 Finance
2000 Bing.com 3 MSN
3000 Yandex.com 4 Metrika

Строка для 'Google.com' из таблицы sites будет опущена, так как site_id 5000 не существует в обеих таблицах. Строка для page_id - 4 из таблицы pages будет опущена, так как site_id - 5000 не существует в таблице sites.

LEFT OUTER JOIN

Другой тип соединения называется MariaDB LEFT OUTER JOIN. Этот тип соединения возвращает все строки из таблицы с с левосторонним соединением, указанной в условии ON, и только те строки из другой таблицы, в которых соединяемые поля равны (выполняется условие соединения).

Синтаксис

The Синтаксис for the MariaDB LEFT OUTER JOIN is:

SELECT columns
FROM table1
LEFT [OUTER] JOIN table2
ON table1.column = table2.column;

В некоторых базах данных ключевые слова LEFT OUTER JOIN заменяются на LEFT JOIN.

Визуальная Иллюстрация

На этой визуальной диаграмме MariaDB LEFT OUTER JOIN возвращает затененную область:

left-outer-join

MariaDB LEFT OUTER JOIN будет возвращать все записи из table1 и только те записи из table2, которые пересекаются с table1.

Пример

Рассмотрим пример LEFT OUTER JOIN:

Этот пример LEFT OUTER JOIN вернет все строки из таблицы sites и только те строки из таблицы pages, в которых объединенные поля равны
Если значение site_id в таблице sites отсутствует в таблице pages, все поля в таблице pages будет отображаться как в наборе результатов.
Давайте посмотрим на некоторые данные, чтобы объяснить, как работают LEFT OUTER JOINS:
У нас есть таблица sites с двумя полями (site_id и site_name). Она содержит следующие данные:

site_id site_name
1000 Yahoo.com
2000 Bing.com
3000 Yandex.com
4000 Google.com

У нас есть вторая таблица с именем pages с тремя полями (page_id, site_id и page_title). Он содержит следующие данные :

page_id site_id page_title
1 1000 Sports
2 1000 Finance
3 2000 MSN
4 3000 Metrika
5 5000 Gmail

Если мы запустим оператор SELECT (который содержит LEFT OUTER JOIN) ниже:

Наш набор результатов будет выглядеть так :

site_id site_name page_id page_title
1000 Yahoo.com 1 Sports
1000 Yahoo.com 2 Finance
2000 Bing.com 3 MSN
3000 Yandex.com 4 Metrika
4000 Google.com

Строки для 'Google.com' будут включены, потому что было использовано LEFT OUTER JOIN. Однако вы заметите, что поля page_id и page_title для этой записи содержит значение .

RIGHT OUTER JOIN

Другой тип соединения называется MariaDB RIGHT OUTER JOIN. Этот тип соединения возвращает все строки из таблицы с правосторонним соединением, указанной в условии ON, и всегда те строки из другой таблицы, где объединенные поля равны (выполняется условие соединения).

Синтаксис

Синтаксис MariaDB RIGHT OUTER JOIN:

SELECT columns
FROM table1
RIGHT [OUTER] JOIN table2
ON table1.column = table2.column;

В некоторых базах данных ключевые слова RIGHT OUTER JOIN заменяются на RIGHT JOIN.

Визуальная Иллюстрация

На этой визуальной диаграмме MariaDB RIGHT OUTER JOIN возвращает затененную область:
right outer join

MariaDB RIGHT OUTER JOIN будет возвращать все записи из table2 и только те записи из table1, которые пересекаются с table2.

Пример

Рассмотрим пример MariaDB RIGHT OUTER JOIN:

Этот пример RIGHT OUTER JOIN вернет все строки из таблицы pages и только те строки из таблицы sites, в которых соединенные поля равны.
Если значение site_id в таблице pages не существует в таблице sites, все поля в таблице sites будет отображаться в наборе результатов как .
Давайте посмотрим на некоторые данные, чтобы объяснить, как работают RIGHT OUTER JOINS:
У нас есть таблица sites с двумя полями (site_id и site_name). Он содержит следующие данные:

site_id site_name
1000 Yahoo.com
2000 Bing.com
3000 Yandex.com
4000 Google.com

У нас есть вторая таблица с именем pages с тремя полями (page_id, site_id и page_title). Она содержит следующие данные:

page_id site_id page_title
1 1000 Sports
2 1000 Finance
3 2000 MSN
4 3000 Metrika
5 5000 Gmail

Если мы запустим оператор SELECT (который содержит RIGHT OUTER JOIN) ниже:

Наш набор результатов будет выглядеть так:

site_id site_name page_id page_title
1000 Yahoo.com 1 Sports
1000 Yahoo.com 2 Finance
2000 Bing.com 3 MSN
3000 Yandex.com 4 Metrika
5 Gmail

Строка для page_id - 5 будет включена, так как было использовано RIGHT OUTER JOIN. Однако вы заметите, что поля site_id и site_name для этой записи содержат значение .