SQL 컬럼명 바꿔서 불러오기 완벽 가이드

쿼리 결과를 엑셀로 내보낼 때 컬럼명이 user_registration_date 같은 긴 영문으로 나와서 난감했던 경험 있으신가요? 혹은 개발자가 아닌 팀원에게 데이터를 전달할 때 컬럼명을 한글로 바꾸고 싶었던 적은요? 오늘은 SQL에서 컬럼명을 원하는 대로 바꿔서 조회하는 방법을 실전 예제와 함께 완벽하게 정리해드립니다.


컬럼 별칭이란? 왜 필요할까요?

컬럼 별칭(Column Alias)은 SELECT 문에서 조회되는 컬럼의 이름을 임시로 변경하는 기능입니다. 원본 테이블의 컬럼명은 그대로 유지되고, 조회 결과에만 새로운 이름이 표시되죠.

컬럼 별칭을 사용하는 5가지 이유:

  • 긴 컬럼명을 짧고 간결하게 표현
  • 영문 컬럼명을 한글로 변경해 가독성 향상
  • 계산식이나 함수 결과에 의미 있는 이름 부여
  • 보고서나 대시보드용 데이터 준비 시간 단축
  • 여러 테이블 조인 시 중복 컬럼명 구분

여러분이 작성한 쿼리를 먼저 분석해볼까요?

SELECT a.userid AS a, a.descript AS b
FROM ta_db.tb_mempdata AS a

이 쿼리는 userid 컬럼을 a로, descript 컬럼을 b로 바꿔서 조회합니다. 하지만 a, b 같은 무의미한 별칭보다는 실제 의미를 담은 이름을 사용하는 게 더 좋습니다.


컬럼 별칭 기본 문법 – 3가지 방식

방법 1: AS 키워드 사용 (가장 권장)

SELECT
    userid AS user_id,
    username AS user_name,
    email AS user_email
FROM users

장점: 코드만 봐도 별칭임을 명확히 알 수 있어 가독성이 최고입니다.

방법 2: AS 키워드 생략

SELECT
    userid user_id,
    username user_name,
    email user_email
FROM users

장점: 타이핑이 줄어들지만, 실수할 가능성이 높아집니다.

방법 3: 한글 별칭 사용

-- MySQL, MariaDB
SELECT
    userid AS `사용자ID`,
    username AS `이름`,
    email AS `이메일`
FROM users

-- SQL Server
SELECT
    userid AS [사용자ID],
    username AS [이름],
    email AS [이메일]
FROM users

-- PostgreSQL, Oracle
SELECT
    userid AS "사용자ID",
    username AS "이름",
    email AS "이메일"
FROM users

주의: 한글이나 공백, 특수문자가 포함된 별칭은 반드시 따옴표로 감싸야 합니다.

실전 예제 1 – 보고서용 데이터 준비

실무에서 가장 많이 사용하는 패턴입니다. 영문 컬럼명을 한글로 바꿔 비개발자도 쉽게 이해할 수 있게 만들죠.

SELECT
    userid AS `회원번호`,
    username AS `회원명`,
    email AS `이메일주소`,
    reg_date AS `가입일자`,
    status AS `상태`
FROM members
WHERE status = 'active'
ORDER BY reg_date DESC

조회 결과:

회원번호회원명이메일주소가입일자상태
1001홍길동hong@example.com2025-01-15active
1002김철수kim@example.com2025-01-14active

엑셀로 내보내거나 팀원에게 공유할 때 바로 사용할 수 있는 형태입니다.

실전 예제 2 – 계산식에 별칭 부여

컬럼끼리 계산한 결과나 함수를 사용한 경우 반드시 별칭을 붙여야 합니다.

SELECT
    product_name AS `상품명`,
    price AS `단가`,
    quantity AS `수량`,
    (price * quantity) AS `금액`,
    (price * quantity * 0.1) AS `부가세`,
    (price * quantity * 1.1) AS `총액`
FROM order_items
WHERE order_date = '2025-10-02'

별칭 없이 작성하면?

SELECT
    product_name,
    price,
    quantity,
    (price * quantity),        -- 컬럼명: (price * quantity)
    (price * quantity * 0.1),  -- 컬럼명: (price * quantity * 0.1)
    (price * quantity * 1.1)   -- 컬럼명: (price * quantity * 1.1)
FROM order_items

조회 결과의 컬럼명이 수식 그대로 나와서 매우 불편합니다.

실전 예제 3 – 함수와 별칭 조합

날짜 함수, 문자열 함수, 집계 함수를 사용할 때도 별칭은 필수입니다.

SELECT
    DATE_FORMAT(reg_date, '%Y-%m') AS `가입월`,
    COUNT(*) AS `회원수`,
    SUM(purchase_amount) AS `총구매금액`,
    AVG(purchase_amount) AS `평균구매금액`,
    MAX(purchase_amount) AS `최대구매금액`,
    MIN(purchase_amount) AS `최소구매금액`
FROM members
GROUP BY DATE_FORMAT(reg_date, '%Y-%m')
ORDER BY `가입월` DESC

핵심 포인트: ORDER BY 절에서 별칭을 그대로 사용할 수 있습니다. 긴 함수를 다시 쓸 필요가 없죠.

실전 예제 4 – JOIN 시 중복 컬럼명 처리

여러 테이블을 조인하면 같은 이름의 컬럼이 충돌할 수 있습니다. 별칭으로 명확하게 구분하세요.

SELECT
    u.userid AS `회원ID`,
    u.username AS `회원명`,
    o.order_id AS `주문번호`,
    o.order_date AS `주문일자`,
    o.status AS `주문상태`,     -- members 테이블에도 status가 있을 수 있음
    p.product_name AS `상품명`,
    p.price AS `단가`
FROM members 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'
    AND o.order_date >= '2025-01-01'

컬럼 별칭 사용 시 주의사항 5가지

1. WHERE 절에서는 별칭 사용 불가

-- ❌ 잘못된 예시
SELECT
    price * quantity AS total_amount
FROM orders
WHERE total_amount > 10000  -- 에러 발생!

-- ✅ 올바른 예시
SELECT
    price * quantity AS total_amount
FROM orders
WHERE price * quantity > 10000

이유: SQL 실행 순서가 FROM → WHERE → SELECT 이기 때문에 WHERE 절 실행 시점에는 아직 별칭이 생성되지 않았습니다.

2. GROUP BY 절에서도 별칭 사용 제한

대부분의 DBMS에서 GROUP BY에 별칭을 사용할 수 없습니다.

-- ❌ MySQL에서는 가능하지만 비표준
SELECT
    DATE_FORMAT(order_date, '%Y-%m') AS order_month,
    COUNT(*) AS order_count
FROM orders
GROUP BY order_month

-- ✅ 표준 SQL (모든 DBMS 호환)
SELECT
    DATE_FORMAT(order_date, '%Y-%m') AS order_month,
    COUNT(*) AS order_count
FROM orders
GROUP BY DATE_FORMAT(order_date, '%Y-%m')

3. HAVING과 ORDER BY에서는 별칭 사용 가능

SELECT
    category AS `카테고리`,
    SUM(sales) AS `총매출`
FROM products
GROUP BY category
HAVING `총매출` > 1000000      -- 별칭 사용 가능
ORDER BY `총매출` DESC         -- 별칭 사용 가능

4. 예약어와 중복되는 별칭 피하기

-- ❌ 피해야 할 별칭
SELECT
    username AS select,  -- 예약어와 충돌
    email AS from        -- 예약어와 충돌
FROM users

-- ✅ 권장하는 별칭
SELECT
    username AS user_name,
    email AS user_email
FROM users

5. 의미 없는 별칭 피하기

-- ❌ 나쁜 예: 의미 없는 별칭
SELECT
    userid AS a,
    username AS b,
    email AS c
FROM users

-- ✅ 좋은 예: 의미 있는 별칭
SELECT
    userid AS `회원ID`,
    username AS `이름`,
    email AS `이메일`
FROM users


데이터베이스별 별칭 문법 차이

MySQL / MariaDB

-- 백틱(`) 사용
SELECT
    userid AS `사용자 ID`,
    username AS `회원 이름`
FROM users

SQL Server

-- 대괄호([]) 또는 따옴표 사용
SELECT
    userid AS [사용자 ID],
    username AS [회원 이름]
FROM users

PostgreSQL

-- 큰따옴표(") 사용, 대소문자 구분
SELECT
    userid AS "사용자ID",
    username AS "회원이름"
FROM users

Oracle

-- 큰따옴표(") 사용
SELECT
    userid AS "사용자ID",
    username AS "회원이름"
FROM users


실무 팁 – 별칭 네이밍 규칙

일관된 규칙을 정해두면 팀 협업이 훨씬 수월합니다.

추천 규칙:

  • 언더스코어(_) 방식: user_name, order_date, total_amount
  • 카멜케이스 방식: userName, orderDate, totalAmount
  • 한글 별칭: 보고서용 데이터에만 사용
  • 약어 사용: 너무 길 경우 cnt, amt, qty 등 표준 약어 활용
-- 통일된 네이밍 규칙 예시
SELECT
    u.userid AS user_id,
    u.username AS user_name,
    COUNT(o.order_id) AS order_cnt,
    SUM(o.total_amount) AS total_amt,
    AVG(o.total_amount) AS avg_amt
FROM users AS u
LEFT JOIN orders AS o ON u.userid = o.userid
GROUP BY u.userid, u.username


복잡한 쿼리 실전 예제 – 서브쿼리와 별칭

SELECT
    dept.dept_name AS `부서명`,
    dept_stats.emp_count AS `직원수`,
    dept_stats.avg_salary AS `평균연봉`,
    dept_stats.max_salary AS `최고연봉`,
    dept_stats.min_salary AS `최저연봉`
FROM departments AS dept
INNER JOIN (
    SELECT
        department_id,
        COUNT(*) AS emp_count,
        AVG(salary) AS avg_salary,
        MAX(salary) AS max_salary,
        MIN(salary) AS min_salary
    FROM employees
    WHERE status = 'active'
    GROUP BY department_id
) AS dept_stats ON dept.dept_id = dept_stats.department_id
WHERE dept_stats.emp_count >= 5
ORDER BY dept_stats.avg_salary DESC

서브쿼리의 결과 컬럼에도 별칭을 부여하면 메인 쿼리에서 깔끔하게 활용할 수 있습니다.


CASE 문과 별칭 조합

조건에 따라 값을 분류하고 별칭을 붙이면 강력한 데이터 분석이 가능합니다.

SELECT
    userid AS `회원ID`,
    username AS `회원명`,
    CASE
        WHEN age < 20 THEN '10대'
        WHEN age < 30 THEN '20대'
        WHEN age < 40 THEN '30대'
        WHEN age < 50 THEN '40대'
        ELSE '50대 이상'
    END AS `연령대`,
    CASE
        WHEN total_purchase >= 1000000 THEN 'VIP'
        WHEN total_purchase >= 500000 THEN 'GOLD'
        WHEN total_purchase >= 100000 THEN 'SILVER'
        ELSE 'BRONZE'
    END AS `회원등급`
FROM members
WHERE status = 'active'

문자열 연결과 별칭

여러 컬럼을 합쳐서 새로운 형태로 표시할 때도 별칭이 유용합니다.

-- MySQL
SELECT
    CONCAT(last_name, ' ', first_name) AS `전체이름`,
    CONCAT(email, ' (', phone, ')') AS `연락처`,
    CONCAT(address, ', ', city, ', ', zipcode) AS `전체주소`
FROM customers

-- SQL Server
SELECT
    last_name + ' ' + first_name AS [전체이름],
    email + ' (' + phone + ')' AS [연락처],
    address + ', ' + city + ', ' + zipcode AS [전체주소]
FROM customers

-- Oracle, PostgreSQL
SELECT
    last_name || ' ' || first_name AS "전체이름",
    email || ' (' || phone || ')' AS "연락처",
    address || ', ' || city || ', ' || zipcode AS "전체주소"
FROM customers


마무리 – 컬럼 별칭 완벽 활용법

컬럼 별칭은 단순하지만 SQL 쿼리의 완성도를 크게 높여주는 필수 기능입니다. 조회 결과를 보는 사람이 누구든 쉽게 이해할 수 있도록 의미 있는 별칭을 붙이는 습관을 들이세요.

핵심 요약:

  • SELECT 절에서 AS 키워드로 컬럼 별칭 지정
  • 계산식, 함수 결과에는 반드시 별칭 부여
  • WHERE, GROUP BY에서는 별칭 사용 불가
  • ORDER BY, HAVING에서는 별칭 사용 가능
  • 한글 별칭 사용 시 따옴표로 감싸기
  • 의미 있고 일관된 별칭 규칙 유지

여러분의 실무에서는 어떤 별칭 네이밍 규칙을 사용하시나요? 유용한 팁이 있다면 댓글로 공유해주세요!


참고 자료:

댓글 남기기