Что такое поведение соединения MySQL по умолчанию, внутреннее или внешнее?
Итак, я просматривал интернет в последний час, читая и ища окончательный ответ на этот простой вопрос.
что такое соединение по умолчанию в MySQL?
SELECT * FROM t1 JOIN t2
что же
SELECT * FROM t1, t2
OR
SELECT * FROM t1 INNER JOIN t2
также связанный вопрос, когда вы используете предложения "где", это то же самое, что JOIN или INNER JOIN ?
прямо сейчас я думаю, что автономное соединение идентично использованию запятых и предложений WHERE.
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
синтаксис, который может быть важен при объединении большего количества таблиц. В значительной степени все, что вам нужно знать, описано здесь в MySQLJOIN
документация.