SQL에서 `?column?`이 나타나는 이유

Sue·2025년 7월 28일
0
post-thumbnail

🗄️ SQL에서 ?column?이 나타나는 이유

SQL을 실행하다 보면, 결과 컬럼명이 예상과 다르게 ?column? 같은 임시 이름으로 표시되는 경우가 있습니다.
이 현상은 특히 PostgreSQL을 사용할 때 자주 볼 수 있으며, 다른 DBMS에서도 유사한 방식으로 임시 이름을 부여합니다.


✅ 1. ?column?이 붙는 이유

🔹 (1) SQL 결과셋은 항상 컬럼명이 필요

  • SQL 쿼리 결과는 테이블 형식을 띄며, 각 열에는 반드시 이름이 있어야 합니다.
  • SELECT price + tax 같은 계산식(expression) 결과는 테이블의 기존 컬럼이 아니므로 이름이 없습니다.
  • 따라서 DB가 자동으로 이름을 붙여서 반환합니다.

🔹 (2) 별칭(alias)을 지정하지 않은 경우

  • 사용자가 명시적으로 AS를 사용하지 않으면, DBMS는 다음과 같은 규칙으로 이름을 만듭니다.

    • PostgreSQL: ?column?
    • SQL Server: Expr1, Expr2 등 자동 번호
    • MySQL/SQLite: price + tax 같은 표현식을 그대로 사용하거나 빈 문자열

🔹 (3) 특수문자 ? ?의 의미

  • PostgreSQL은 내부적으로 생성한 컬럼임을 알리기 위해 ? ?로 감쌉니다.
  • 이는 **“사용자가 지정한 이름이 아님”**을 나타내는 시각적 신호입니다.

✅ 2. 예제 비교

-- 별칭을 지정하지 않은 경우
SELECT price + tax FROM orders;

PostgreSQL 결과

?column?
110
220

-- 별칭을 지정한 경우
SELECT price + tax AS total_price
FROM orders;

결과

total_price
110
220

✅ 3. DBMS별 임시 컬럼명 동작 차이

DBMS별칭 미지정 시 컬럼명예시 출력
PostgreSQL?column??column?
SQLite연산식 그대로 반환price + tax
MySQL연산식 그대로 또는 빈 문자열price + tax
SQL Server자동으로 Expr1, Expr2 등 생성Expr1
Oracle연산식 그대로price + tax

💡 PostgreSQL만 특수문자로 감싼 ?column?을 사용한다는 점이 포인트입니다.


✅ 4. 왜 AS를 사용하는 것이 중요한가?

  • 가독성 향상: 결과 컬럼이 무엇을 의미하는지 명확해짐
  • 유지보수 용이: 다른 개발자나 본인이 코드를 다시 볼 때 이해하기 쉬움
  • 쿼리 재사용 가능: ORDER BY, GROUP BY 등에서 별칭을 활용할 수 있음

✅ 5. 실무 팁: 별칭 지정 Best Practice

  • 계산식이나 집계 함수에는 항상 별칭을 붙이자.
  • 별칭은 의미 있는 이름으로 지정하자.
-- 나쁜 예시
SELECT SUM(price) FROM sales;

-- 좋은 예시
SELECT SUM(price) AS total_sales
FROM sales;

✅ 6. 요약

  • ?column?PostgreSQL이 연산 결과 컬럼에 자동으로 붙이는 임시 이름
  • DBMS마다 임시 컬럼명 규칙이 다르다.
  • 실무에서는 항상 AS 키워드로 명확한 별칭을 지정하는 것이 권장된다.
profile
AI/ML Engineer

0개의 댓글