[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
. 즉, INNER
in INNER JOIN
은 선택 사항입니다. INNER
그리고 CROSS
MySQL의 동의어입니다. 명확성을 위해 작성 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
문서 에 설명되어 있습니다 .