MySQL JOINS
Понимание JOIN в MySQL
Объединение позволяет извлекать записи из двух (или более) логически связанных таблиц в одном наборе результатов.
Предложения JOIN используются для возврата строк двух или более запросов с использованием двух или более таблиц, которые разделяют значимые отношения на основе общего набора значений.
Эти значения обычно совпадают с именем столбца и типом данных, которые появляются в обеих участвующих таблицах, которые объединяются. Эти столбцы, или, возможно, один столбец из каждой таблицы, называются ключом соединения или общим ключом.
В большинстве случаев, но не всегда, ключ соединения является первичным ключом одной таблицы и внешним ключом в другой таблице. Объединение может быть выполнено, если данные в столбцах совпадают.
Это может быть сложно, когда объединение включает более двух таблиц. Рекомендуется рассматривать запрос как серию из двух объединений таблиц, когда в объединениях участвуют три или более таблиц.
Синтаксис MySQL JOIN:
MySQL поддерживает следующие синтаксисы JOIN для table_references (ссылка на таблицу также известна как выражение соединения.) Часть операторов SELECT и операторов UPDATE и DELETE для нескольких таблиц:
table_references: escaped_table_reference [, escaped_table_reference] ... escaped_table_reference: табличная_ссылка | {OJ table_reference} табличная_ссылка: table_factor | join_table table_factor: tbl_name [PARTITION (имя_раздела)] [[AS] псевдоним] [index_hint_list] | table_subquery [AS] псевдоним | (table_references) join_table: табличная_ссылка [ВНУТРЕННИЙ | CROSS ] JOIN table_factor [join_condition] | table_reference STRAIGHT_JOIN table_factor | table_reference STRAIGHT_JOIN table_factor ON conditional_expr | table_reference { LEFT | RIGHT } [ OUTER ] JOIN table_reference join_condition | table_reference NATURAL [{ LEFT | RIGHT } [ OUTER ]] JOIN table_factor join_condition: ON conditional_expr | ИСПОЛЬЗОВАНИЕ (column_list) index_hint_list: index_hint [, index_hint] ... index_hint: USE {INDEX | KEY} [FOR {JOIN | ORDER BY | GROUP BY}] ([index_list]) | IGNORE {INDEX | KEY} [FOR {JOIN | ORDER BY | GROUP BY}] (index_list) | СИЛА {ИНДЕКС | КЛЮЧ} [FOR {JOIN | ORDER BY | GROUP BY}] (index_list) index_list: index_name [, index_name] ...
Типы соединений MySQL:
- ВНУТРЕННЕЕ СОЕДИНЕНИЕ
- ЛЕВОЕ СОЕДИНЕНИЕ
- ПРАВИЛЬНОЕ СОЕДИНЕНИЕ
- ПРЯМОЕ СОЕДИНЕНИЕ
- CROSS JOIN
- ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ
Вот примеры таблиц table_A и table_B, которые мы использовали для объяснения технологий, стоящих за объединениями.
MySQL INNER JOIN
INNER JOIN - это такое соединение, в котором все строки могут быть выбраны из обеих участвующих таблиц, если есть совпадение между столбцами. Использование INNER JOIN объединяет таблицы. INNER JOIN позволяет строкам из любой таблицы появляться в результате тогда и только тогда, когда обе таблицы удовлетворяют условиям, указанным в предложении ON.
пример
Код:
SELECT * FROM table_A
INNER JOIN table_B
ON table_A.A=table_B.A;
MySQL LEFT JOIN
LEFT JOIN - это такое соединение, которое указывает, что все записи извлекаются из таблицы с левой стороны оператора соединения. Если запись, возвращаемая из левой таблицы, не имеет соответствующей записи в таблице с правой стороны объединения, она все равно возвращается, и соответствующий столбец из правой таблицы возвращает значение NULL.
пример
Код:
SELECT * FROM table_A
LEFT JOIN table_B
ON table_A.A=table_B.A;
MySQL RIGHT JOIN
RIGHT JOIN - это такое объединение, которое указывает, что все записи извлекаются из таблицы с правой стороны оператора соединения, даже если в левой таблице нет соответствующих записей. В этом случае столбцы из левой таблицы возвращают значения NULL.
пример
Код:
SELECT * FROM table_A
RIGHT JOIN table_B
ON table_A.A=table_B.A;
MySQL STRAIGHT JOIN
STRAIGHT_JOIN - это такое объединение, которое сканирует и объединяет совпадающие строки (если указано какое-либо условие), которые хранятся в связанных таблицах, иначе оно ведет себя как INNER JOIN или JOIN без каких-либо условий.
пример
Код:
SELECT * FROM table_A
STRAIGHT JOIN table_B;
MySQL CROSS JOIN
CROSS JOIN - это такое объединение, которое определяет полное перекрестное произведение двух таблиц. Для каждой записи в первой таблице все записи во второй таблице объединяются, создавая потенциально огромный набор результатов. Эта команда имеет тот же эффект, что и отключение условия соединения, а ее набор результатов также известен как декартово произведение.
пример
Код:
SELECT * FROM table_A
CROSS JOIN table_B;
MySQL NATURAL JOIN
NATURAL JOIN - это такое объединение, которое выполняет ту же задачу, что и INNER или LEFT JOIN, в котором предложение ON или USING ссылается на все столбцы, которые имеют общие таблицы, к которым нужно присоединиться.
пример
Код:
SELECT * FROM table_A
NATURAL JOIN table_B;
Ключевые моменты для запоминания
Нажмите на следующее, чтобы получить презентацию слайдов -
СОЕДИНЕНИЯ: SQL и другие реляционные базы данных
Новый контент: Composer: менеджер зависимостей для PHP , R программирования