[mysql] 기본 MySQL JOIN 동작, INNER 또는 OUTER는 무엇입니까?

그래서 저는 지난 한 시간 동안 인터넷을 통해이 간단한 질문에 대한 확실한 답을 읽고 찾고있었습니다.

MySQL의 기본 JOIN은 무엇입니까?

SELECT * FROM t1 JOIN t2

그것은

SELECT * FROM t1, t2

OR

SELECT * FROM t1 INNER JOIN t2

또한 “WHERE”절을 사용할 때 관련 질문이 JOIN 또는 INNER JOIN과 동일합니까?

지금은 독립형 JOIN이 쉼표와 WHERE 절을 사용하는 것과 동일하다고 생각합니다.



답변

MySQL에서 JOIN비정규 작성은 INNER JOIN. 즉, INNERin INNER JOIN은 선택 사항입니다. INNER그리고 CROSSMySQL의 동의어입니다. 명확성을 위해 작성 JOIN하거나 INNER JOIN조인 조건 CROSS JOIN이 있고 조건이없는 경우.

조인에 허용되는 구문은 설명서에 설명되어 있습니다 .


지금은 독립형 JOIN이 쉼표와 WHERE 절을 사용하는 것과 동일하다고 생각합니다.


효과는 동일하지만 그 뒤에 숨겨진 역사가 다릅니다. 쉼표 구문은 ANSI-89 표준에서 가져온 것입니다. 그러나이 구문에는 많은 문제가 있으므로 ANSI-92 표준에서 JOIN 키워드가 도입되었습니다.

쉼표 대신 항상 JOIN 구문을 사용 하는 것이 좋습니다 .

  • T1 JOIN T2 ON ...보다 읽기 쉽습니다 T1, T2 WHERE ....
  • 테이블 관계와 필터가 함께 혼합되지 않고 명확하게 정의되기 때문에 유지 관리가 더 쉽습니다.
  • JOIN 구문은 쉼표 구문보다 OUTER JOIN으로 변환하기가 더 쉽습니다.
  • 동일한 문에서 쉼표와 JOIN 구문을 혼합하면 우선 순위 규칙으로 인해 이상한 오류가 발생할 수 있습니다.
  • 조인 절이 잊혀진 조인 절로 인해 JOIN 구문을 사용할 때 실수로 데카르트 곱을 만들 가능성이 적습니다. 조인 절이 조인 옆에 기록되고 조인이 누락되었는지 확인하기 쉽기 때문입니다.


답변

이것들은 모두 동등하고 동일합니다 CROSS JOIN.

[INNER | CROSS] JOIN더 많은 테이블을 조인 할 때 중요 할 수있는 쉼표와 구문 사용간에 약간의 차이 가 있습니다. 여러분이 알아야 할 거의 모든 것은 여기 MySQL JOIN문서 에 설명되어 있습니다 .


답변