실무 팁: 조인 순서는 언제 중요할까?
내부 조인에서는 결과가 같으므로 어떤 순서로 작성해도 무방하다. 하지만 쿼리를 읽는 사람의 입장에서 어떤 데이터가 중심이 되는가에 따라 순서를 정하면 가독성이 높아진다
- 주문 목록을 중심으로 고객 정보를 추가하고 싶다면 "FROM orders JOIN users"
- 고객 목록을 중심으로 주문 정보를 조회하고 싶다면 "FROM users JOIN orders"
"OUTER JOIN" 에서는 조인 순서가 결과에 매우 큰 영향을 미친다. 하지만 "INNER JOIN"에서는 교집합을 선택하기 때문에 순서와 상관없이 결과는 항상 같다
가독성을 높이는 테이블 별칭(Alias)
앞선 쿼리들을 보면 "users.user_id" , "orders.status" 처럼 테이블 이름을 계속 반복해서 작성해야 했다. 쿼리가 길어지고 복잡해질수록 이는 매우 번거롭고 가독성을 떨어뜨린다. 이럴 때 사용하는 것이 바로 테이블 별칭(Alias)이다. "AS" 키워드를 사용하거나, "AS" 를 생략하고 한 칸 띄우고 원하는 별칭을 붙여주면 된다.
select
o.order_id,
o.order_date,
o.user_id as orders_user_id,
u.User_id as users_user_id,
u.name
from orders as o -- 테이블 별칭은 보통 생략
inner join users as u
on o.user_id = u.user_id
order by order_id
;
- orders AS o : "orders" 테이블에 "o" 라는 별칭을 붙였다.
- users AS u : "users" 테이블에 "u" 라는 별칭을 붙였다.
- 이제 "orders.status" 대신 "o.status" , "users.name" 대신 "u.name" 과 같이 간결하게 컬럼을 지정할 수 있다.
실무에서는 AS 생략
select
o.order_id,
o.order_date,
o.user_id as orders_user_id,
u.User_id as users_user_id,
u.name
from orders as o -- 테이블 별칭은 보통 생략
join users as u
on o.user_id = u.user_id
order by order_id
;
- "FROM orders o" 처럼 테이블 이름 뒤에 한 칸 띄고 별칭을 적는 것만으로도 충분하다. 이 방식이 더 간결하기 때문에 실무 개발자들이 선호하는 스타일이다.
- "INNER JOIN"에서 "INNER 는 생략 가능하므로 "JOIN" 만 사용해도 된다. (그냥 `JOIN` 이라고 하면 자동으로 "INNER JOIN"이 된다.)
- 실무에서는 대부분 "INNER JOIN" 을 사용할 때 "INNER" 는 생략하고 "JOIN" 만 사용한다.
테이블에는 컬럼의 별칭 AS 생략, 컬럼은 생략 X
SELECT salary * 12 annual_salary -- 가독성 낮음
SELECT salary * 12 AS annual_salary -- 가독성 높음
테이블 별칭 (AS 생략)
- 테이블 이름 뒤에 오는 별칭은 문법적으로 혼동의 여지가 거의 없다. "FROM table_name alias_name" 과 같이 "AS" 없이 써도 코드를 읽고 해석하는 데 문제가 되지 않는다. 따라서 코드를 더 간결하게 만들기 위해 "AS"를 생략하는 경우가 많다.
- 예를 들어, "FROM employees e" 는 "FROM employees AS e" 와 동일하게 작동하며, 더 짧고 깔끔하게 보인다.
컬럼 별칭(AS 사용)
- 반면, 컬럼 목록에서는 "AS" 를 생략하면 어떤 것이 원래 컬럼 이름이고 어떤 것이 별칭인지 즉시 파악하기 어려울 수 있다.
- 특히 여러 컬럼을 나열하거나 복잡한 함수를 사용할 때 "AS" 를 명시적으로 써주면 코드의 의도를 명확하게 전달하여 가독성을 크게 향상시킨다
'데이터 베이스 > 데이터베이스 기본' 카테고리의 다른 글
| Ch04. UNION - UNION (0) | 2026.05.31 |
|---|---|
| Ch03. 서브쿼리 - 서브쿼리 VS Join (0) | 2026.05.30 |
| Ch01. 내부 조인 - 내부 조인(2) (0) | 2026.05.24 |
| Ch01. 내부 조인 - 내부 조인(1) (0) | 2026.05.24 |
| Ch01. 내부 조인 - 조인이 필요한 이유 (0) | 2026.05.23 |