Что такое поведение соединения MySQL по умолчанию, внутреннее или внешнее?


Итак, я просматривал интернет в последний час, читая и ища окончательный ответ на этот простой вопрос.

что такое соединение по умолчанию в MySQL?

SELECT * FROM t1 JOIN t2

что же

SELECT * FROM t1, t2

OR

SELECT * FROM t1 INNER JOIN t2

также связанный вопрос, когда вы используете предложения "где", это то же самое, что JOIN или INNER JOIN ?

прямо сейчас я думаю, что автономное соединение идентично использованию запятых и предложений WHERE.

2 74

2 ответа:

в MySQL писать!--0--> неквалифицированные подразумевает INNER JOIN. Другими словами,INNER на INNER JOIN не является обязательным. INNER и CROSS являются синонимами в MySQL. Для ясности пишу JOIN или INNER JOIN если у меня есть условие соединения и CROSS JOIN если у меня нет состояния.

разрешенный синтаксис для соединений описан в документация.


прямо сейчас я думаю, что автономное соединение-это не более чем (идентично) использование запятых и предложений WHERE.


эффект тот же, но история позади них отличается. Синтаксис запятой от стандарта ANSI-89. Однако существует ряд проблем с этим синтаксисом, поэтому в стандарте ANSI-92 было введено ключевое слово JOIN.

я настоятельно рекомендую вам всегда используйте синтаксис соединения, а не запятую.

  • T1 JOIN T2 ON ... является более читаемым, чем T1, T2 WHERE ....
  • это более ремонтопригодно, потому что отношения таблицы и фильтры четко определены, а не смешаны вместе.
  • синтаксис соединения легче преобразовать во внешнее соединение, чем синтаксис запятой.
  • смешивание синтаксиса запятой и соединения в одном операторе может привести к любопытным ошибкам из-за правил приоритета.
  • менее вероятно случайно создать декартово произведение при использовании синтаксиса соединения из-за забытого соединения предложение, потому что предложения join написаны рядом с соединениями, и легко увидеть, отсутствует ли он.

все они эквивалентны, а также равны,CROSS JOIN.

есть некоторые различия между запятой и [INNER | CROSS] JOIN синтаксис, который может быть важен при объединении большего количества таблиц. В значительной степени все, что вам нужно знать, описано здесь в MySQL JOIN документация.