같은 조인 키, 다른 안정성

USING은 간결하고, NATURAL JOIN은 자동이라서 더 위험합니다

세 문법 모두 조인을 만들지만, 코드에 조건이 얼마나 드러나는지와 스키마 변경에 얼마나 강한지가 다릅니다.

왼쪽 테이블
users(
  user_id,
  username
)
공통 키는 user_id
여기서부터 문법 선택이 갈립니다
오른쪽 테이블
orders(
  user_id,
  order_id
)
ON 기본 선택
조건을 직접 적어서 의도가 가장 분명합니다.
USING 같은 이름일 때
공통 키 이름이 같으면 짧게 쓸 수 있습니다.
NATURAL 자동 매칭
동명 컬럼을 전부 조인 조건으로 삼습니다.
코드가 드러내는 기준
JOIN orders ON users.user_id = orders.user_id
JOIN orders USING (user_id)
코드에 조인 컬럼이 명시되지 않고, 같은 이름인 컬럼 전체를 엔진이 자동으로 묶습니다.
결과에 보이는 조인 키
users.user_id orders.user_id
user_id
자동 결정
어떤 컬럼이 묶였는지 결과만 보고는 바로 읽기 어렵습니다.
나중에 같은 이름 컬럼이 더 생기면
status가 추가되어도 내가 적은 조건은 그대로라서 여전히 user_id만 기준입니다.
USING (user_id)를 유지하는 한, 결과에 user_id는 한 번만 남고 기준도 바뀌지 않습니다.
user_id뿐 아니라 새로 생긴 status까지 자동으로 조건에 포함될 수 있어 결과가 조용히 바뀝니다.
실무 기본값: 안전성과 유지보수를 우선하면 ON이 가장 명확합니다.
간결한 예외: 공통 키 이름이 같고 의미도 같을 때는 USING이 읽기 좋습니다.
주의: NATURAL JOIN은 스키마 변화가 곧 조인 조건 변화가 될 수 있습니다.