MySQL NATURAL JOIN
Natural Join
В MySQL NATURAL JOIN - это такое соединение, которое выполняет ту же задачу, что и INNER или LEFT JOIN, в котором предложение ON или USING ссылается на все столбцы, которые имеют общие таблицы, к которым нужно присоединиться.
MySQL NATURAL JOIN структурирован таким образом, что столбцы с одинаковыми именами ассоциированных таблиц появляются только один раз.
Natural Join: Руководство:
- Связанные таблицы имеют одну или несколько пар столбцов с одинаковыми именами.
- Столбцы должны быть одного типа данных.
- Не используйте предложение ON в ЕСТЕСТВЕННОМ СОЕДИНЕНИИ.
Иллюстрированная презентация MySQL NATURAL JOIN:
MySQL NATURAL 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: table_reference [INNER | 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 NATURAL JOIN
В следующем примере id является общим столбцом для таблицы и соответствующих строк на основе этого общего столбца из обеих таблиц.
Код:
SELECT id,aval1,cval1
FROM table111
NATURAL JOIN table113;
INNER JOIN с помощью предложения ON выполняют ту же работу. Вот следующее -
Код:
SELECT table1111.id,table111.aval1,table113.cval1
FROM table111
INNER JOIN table113
ON table111.id=table113.id;
Образцы таблиц:
Пример вывода:
mysql> SELECT id, aval1, cval1 -> ИЗ таблицы111 -> ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ table113; + ------ + ------- + ------- + | id | aval1 | CVAL1 | + ------ + ------- + ------- + | 3 | 200 | 17 | | 2 | 401 | 12 | | 1 | 405 | 16 | + ------ + ------- + ------- + 3 ряда в наборе (0,00 сек)
Пример: MySQL NATURAL JOIN с предложением WHERE
Код:
SELECT id,aval1,cval1
FROM table111
NATURAL JOIN table113
WHERE table111.aval1>200;
Пример вывода:
mysql> SELECT id, aval1, cval1 -> ИЗ таблицы111 -> ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ table113 -> ГДЕ таблица111.aval1> 200; + ------ + ------- + ------- + | id | aval1 | CVAL1 | + ------ + ------- + ------- + | 2 | 401 | 12 | | 1 | 405 | 16 | + ------ + ------- + ------- + 2 ряда в наборе (0,00 сек)
MySQL NATURAL JOIN с использованием трех таблиц
Код:
SELECT id,aval1,cval1
FROM table111
NATURAL JOIN table113
natural join table114
WHERE table111.aval1>200;
Пример вывода:
mysql> SELECT id, aval1, cval1 -> ИЗ таблицы111 -> ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ table113 -> естественное соединение таблицы114 -> ГДЕ таблица111.aval1> 200; + ------ + ------- + ------- + | id | aval1 | CVAL1 | + ------ + ------- + ------- + | 1 | 405 | 16 | + ------ + ------- + ------- + 1 ряд в наборе (0,05 сек)
Ключевые моменты для запоминания
Нажмите на следующее, чтобы получить презентацию слайдов -
ЕСТЕСТВЕННЫЕ СОЕДИНЕНИЯ: SQL и другие реляционные базы данных
Предыдущая: CROSS JOIN
Далее: MySQL подзапросы
Новый контент: Composer: менеджер зависимостей для PHP , R программирования