кодесурса
«MYSQL

MySQL JOINS

script1adsense2code
script1adsense3code

Понимание 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;

«внутренний

Ключевые моменты для запоминания

Нажмите на следующее, чтобы получить презентацию слайдов -

«MySQL

СОЕДИНЕНИЯ: SQL и другие реляционные базы данных

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code