데이터베이스 쿼리를 작성하다 보면 테이블명이나 컬럼명이 너무 길어서 불편했던 경험, 누구나 있으시죠? 특히 JOIN이 여러 개 들어간 복잡한 쿼리에서는 코드가 금방 지저분해집니다. 오늘은 이런 문제를 단번에 해결해주는 SQL의 AS 별칭(Alias) 사용법을 실전 예제와 함께 알아보겠습니다.
AS 별칭이란? 왜 필요할까요?
AS 별칭은 테이블이나 컬럼에 임시로 짧은 이름을 붙여주는 SQL 문법입니다. 마치 긴 이름을 가진 사람에게 애칭을 붙여주는 것과 같죠.
실무에서 AS를 사용해야 하는 3가지 이유:
- 긴 테이블명을 짧게 줄여 타이핑 시간 단축
- 복잡한 JOIN 쿼리의 가독성 향상
- 팀 협업 시 코드 이해도 증가
여러분이 제시한 쿼리를 먼저 살펴볼까요?
SELECT a.userid, a.descript
FROM ta_db.tb_mempdata AS a
이 쿼리에서 ta_db.tb_mempdata라는 긴 테이블명을 a라는 한 글자로 줄였습니다. 덕분에 SELECT 절에서 a.userid, a.descript처럼 간결하게 작성할 수 있죠.
테이블 별칭 사용법 – 기초부터 실전까지
기본 문법
테이블 별칭은 FROM 절이나 JOIN 절에서 선언합니다. AS 키워드는 생략도 가능합니다.
-- AS 키워드 사용 (권장)
SELECT a.userid, a.username
FROM users AS a
-- AS 키워드 생략
SELECT a.userid, a.username
FROM users a
초보자 팁: AS 키워드를 명시하는 게 가독성이 더 좋습니다. 코드만 봐도 “아, 이게 별칭이구나” 하고 바로 알 수 있거든요.
실전 예제 1 – 여러 테이블 JOIN 시 별칭 활용
SELECT
u.userid,
u.username,
o.order_id,
o.order_date,
p.product_name
FROM customers AS u
INNER JOIN orders AS o ON u.userid = o.userid
INNER JOIN products AS p ON o.product_id = p.product_id
WHERE u.status = 'active'
별칭 없이 작성하면 어떻게 될까요? 훨씬 복잡해집니다.
-- 별칭 미사용 (비추천)
SELECT
customers.userid,
customers.username,
orders.order_id,
orders.order_date,
products.product_name
FROM customers
INNER JOIN orders ON customers.userid = orders.userid
INNER JOIN products ON orders.product_id = products.product_id
WHERE customers.status = 'active'
실전 예제 2 – 셀프 조인에서 별칭 필수 활용
같은 테이블을 두 번 참조할 때는 반드시 별칭을 사용해야 합니다.
-- 직원과 매니저 정보 조회
SELECT
e.emp_name AS 직원명,
m.emp_name AS 매니저명
FROM employees AS e
LEFT JOIN employees AS m ON e.manager_id = m.emp_id
컬럼 별칭 사용법 – 결과 가독성 높이기
컬럼 별칭은 SELECT 절에서 사용하며, 출력되는 컬럼명을 변경합니다.
기본 문법과 실전 활용
-- 기본 문법
SELECT
userid AS 사용자ID,
username AS 이름,
email AS 이메일주소
FROM users
-- 계산 결과에 별칭 부여
SELECT
price * quantity AS total_amount,
(price * quantity * 0.1) AS tax
FROM order_items
한글 별칭 사용 시 주의사항
한글이나 공백이 포함된 별칭은 따옴표로 감싸야 합니다.
-- MySQL, MariaDB
SELECT
userid AS `사용자 ID`,
username AS `회원 이름`
FROM users
-- SQL Server, PostgreSQL
SELECT
userid AS "사용자 ID",
username AS "회원 이름"
FROM users
AS 별칭 사용 시 주의할 점 3가지
1. WHERE 절에서는 컬럼 별칭 사용 불가
-- 잘못된 예시
SELECT
price * quantity AS total
FROM orders
WHERE total > 10000 -- 에러 발생!
-- 올바른 예시
SELECT
price * quantity AS total
FROM orders
WHERE price * quantity > 10000
이유: SQL 실행 순서상 WHERE 절이 SELECT 절보다 먼저 실행되기 때문입니다.
2. HAVING 절과 ORDER BY 절에서는 사용 가능
SELECT
category,
SUM(sales) AS total_sales
FROM products
GROUP BY category
HAVING total_sales > 100000 -- 별칭 사용 가능
ORDER BY total_sales DESC -- 별칭 사용 가능
3. 별칭은 의미 있게 작성하기
-- 나쁜 예: 의미 없는 별칭
SELECT a.col1, b.col2
FROM table1 AS a
JOIN table2 AS b
-- 좋은 예: 의미 있는 별칭
SELECT u.username, o.order_date
FROM users AS u
JOIN orders AS o
데이터베이스별 별칭 문법 차이점
대부분의 DBMS에서 AS 별칭 문법은 동일하지만, 세부적인 차이가 있습니다.
MySQL/MariaDB
- 백틱(`)으로 예약어나 특수문자 감싸기
- AS 키워드 생략 가능
PostgreSQL
- 큰따옴표(“)로 대소문자 구분
- 표준 SQL 문법 엄격히 준수
SQL Server
- 대괄호([])로 식별자 감싸기 가능
- TOP 절과 함께 사용 시 주의
Oracle
- 별칭에 AS 키워드 사용 불가 (테이블 별칭 한정)
- 컬럼 별칭은 AS 사용 가능
실무 팁 – 별칭 네이밍 규칙
협업 환경에서는 일관된 별칭 규칙이 중요합니다.
추천하는 네이밍 컨벤션:
- 테이블 별칭은 2-3글자로 제한
- 테이블명의 첫 글자들 조합 활용
- 예: users → u, orders → o, products → p
-- 일관된 별칭 규칙 예시
SELECT
u.userid,
od.order_date,
oi.quantity,
p.product_name
FROM users AS u
INNER JOIN orders AS od ON u.userid = od.userid
INNER JOIN order_items AS oi ON od.order_id = oi.order_id
INNER JOIN products AS p ON oi.product_id = p.product_id
복잡한 쿼리 실전 예제 – 서브쿼리와 별칭
SELECT
dept.dept_name,
emp_stats.avg_salary,
emp_stats.emp_count
FROM departments AS dept
INNER JOIN (
SELECT
department_id,
AVG(salary) AS avg_salary,
COUNT(*) AS emp_count
FROM employees
GROUP BY department_id
) AS emp_stats ON dept.dept_id = emp_stats.department_id
WHERE emp_stats.avg_salary > 5000000
서브쿼리에도 별칭을 부여하면 메인 쿼리에서 마치 일반 테이블처럼 사용할 수 있습니다.
마무리 – 오늘 배운 내용 정리
AS 별칭은 단순해 보이지만 쿼리 품질을 크게 좌우하는 핵심 기능입니다. 긴 테이블명을 짧게 줄이고, JOIN이 많은 복잡한 쿼리도 한눈에 이해할 수 있게 만들어주죠. 여러분의 쿼리에 AS 별칭을 적극 활용해보세요. 코드 가독성이 눈에 띄게 향상될 것입니다.
핵심 요약:
- 테이블 별칭은 FROM, JOIN 절에서 선언
- 컬럼 별칭은 SELECT 절에서 선언
- WHERE 절에서는 컬럼 별칭 사용 불가
- 의미 있고 일관된 별칭 사용이 협업의 핵심
궁금한 점이나 실무에서 겪은 별칭 관련 사례가 있다면 댓글로 공유해주세요!
참고 자료: