Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL

SQL 별칭(Alias) 완벽 가이드: 쿼리를 더 간결하게

SQL 별칭(alias)은 테이블이나 컬럼을 대신하는 참조 이름입니다. 테이블 이름이 길 때 쿼리를 짧게 줄이는 데 유용하며, 테이블 별칭과 컬럼 별칭 모두 AS 키워드로 정의합니다. 별칭은 쿼리가 실행되는 동안에만 유효하며 영구적으로 저장되지 않습니다.

복잡한 쿼리에서 긴 컬럼 이름이나 테이블 이름을 일일이 입력하는 데 지치신 적이 있나요? SQL을 배워가다 보면 누구나 겪는 상황입니다. 바로 이럴 때 별칭이 해결책이 됩니다. 별칭을 활용하면 쿼리를 훨씬 간결하게 만들 수 있습니다.

이 가이드에서는 SQL 별칭이 무엇인지, 왜 사용하는지 살펴보고, 실제로 별칭이 활용되는 두 가지 시나리오를 단계별로 다루며 사용법을 자세히 설명합니다. 그럼 바로 시작해 보겠습니다!

참고: 이 튜토리얼은 PostgreSQL 기준으로 작성되었습니다.

SQL 별칭이란 무엇일까?

SQL 별칭은 사람의 별명과 비슷한 개념입니다. SQL 별칭은 테이블 또는 테이블 내 컬럼에 임시 이름을 부여하며, 쿼리와 그 결과를 더 읽기 쉽고 이해하기 편하게 만들어 줍니다.

좋은 별칭이란 최대한 빠르게 이해할 수 있는 별칭입니다. 예를 들어 name이라는 컬럼 옆에 number_of_products라는 컬럼이 있다면, n이라는 별칭은 두 컬럼 모두 'n'으로 시작하기 때문에 어떤 컬럼을 가리키는지 혼동을 줄 수 있습니다.

반면 full name의 각 단어 첫 글자를 딴 fn은 훨씬 적절한 별칭입니다. 이렇게 지으면 혼동될 가능성이 크게 줄어듭니다.

작성한 SQL 쿼리는 본인만이 아니라 다른 사람도 사용할 수 있다는 점을 기억하세요. 모든 독자가 직관적으로 이해할 수 있도록 쿼리를 작성하는 데 항상 신경 써야 합니다.

SQL 별칭: 컬럼

컬럼 이름에도 별칭을 사용할 수 있습니다. 컬럼 별칭을 사용하면 쿼리 출력 결과에서 컬럼의 이름을 원하는 대로 변경할 수 있습니다.

예제 데이터베이스의 두 테이블 employees(직원)와 branches(지점)를 살펴보겠습니다.

Employees
Branches
nametitlebranch_idsalary
branch_idbranch_name
GeoffSenior Sales Associate138000
1San Francisco
AdamSenior Sales Associate238000
2Cambridge
EmmaMarketing Executive250000
3Los Angeles
LukeMarketing Assistant332000


employees 테이블은 4개의 컬럼과 4개의 행을, branches 테이블은 2개의 컬럼과 3개의 행을 가집니다.

각 지점에서 가장 높은 연봉을 알려주는 SQL SELECT 문을 작성해 보겠습니다:

SELECT branches.branch_name, MAX(employees.salary)
FROM employees LEFT JOIN branches
ON employees.branch_id = branches.branch_id
GROUP BY branches.branch_name;

SQL 집계 함수 MAX()를 사용해 employees 테이블 salary 컬럼에서 가장 큰 값을 선택합니다. LEFT JOIN 문으로 branches와 employees 테이블을 연결하여 각 지점별 최대 연봉을 확인할 수 있습니다.

쿼리 실행 결과는 다음과 같습니다:

branch_namemax
San Francisco38000
Los Angeles32000
Cambridge50000

쿼리는 잘 동작하지만, 결과의 컬럼 제목이 직관적이지 않습니다. 이 쿼리를 작성하지 않은 사람에게는 "max"라는 제목이 다소 혼란스러울 수 있습니다.

컬럼 별칭을 지정해 이 문제를 해결해 보겠습니다:

SELECT branches.branch_name AS "Branch Name", MAX(employees.salary) as "Highest Salary"
FROM employees LEFT JOIN branches
ON employees.branch_id = branches.branch_id
GROUP BY branches.branch_name;

여기서 두 개의 별칭을 지정했습니다. branch_name에는 "Branch Name", MAX() 집계 함수에는 "Highest Salary"라는 별칭을 붙였습니다. 쿼리를 다시 실행해 보겠습니다:

Branch NameHighest Salary
San Francisco38000
Los Angeles32000
Cambridge50000

쿼리가 반환하는 데이터는 동일하지만 테이블 헤더가 변경되었습니다. 이제 branch_name은 "Branch Name"으로, max는 "Highest Salary"로 표시되어 결과를 훨씬 쉽게 해석할 수 있습니다.

SQL 별칭: 테이블

테이블에도 SQL 별칭을 정의할 수 있습니다. 하나의 쿼리 안에서 같은 테이블을 여러 번 참조해야 할 때 특히 유용하며, 이런 경우는 복잡한 쿼리에서 자주 발생합니다.

여러 테이블을 조인해 쿼리할 때는 각 컬럼 앞에 소속 테이블 이름을 명시해야 합니다. 테이블 이름과 컬럼 이름은 마침표(.)로 구분하며, 이를 통해 SQL이 각 구문이 어느 테이블을 가리키는지 정확히 파악할 수 있습니다.

이 기능은 쿼리가 모호해지는 것을 막아 주지만, 가독성을 떨어뜨릴 수 있습니다. 따라서 별칭이 너무 이해하기 어렵지 않도록 주의해야 합니다.

모든 직원의 이름과 해당 직원이 근무하는 지점 이름을 함께 반환하는 쿼리를 작성해 보겠습니다:

SELECT employees.name, branches.branch_name
FROM employees LEFT JOIN branches
ON employees.branch_id = branches.branch_id;

쿼리 결과는 다음과 같습니다:

namebranch_name
GeoffSan Francisco
AdamCambridge
EmmaCambridge
LukeLos Angeles

employees와 branches 두 테이블을 조회하며, LEFT JOIN으로 두 테이블의 branch_id 값을 연결했습니다. 덕분에 각 직원이 소속된 지점 이름을 확인할 수 있습니다.

그런데 쿼리가 꽤 깁니다. "employees"와 "branches"라는 단어를 이미 두 번씩 반복했는데, 쿼리가 길어질수록 반복 횟수는 더 늘어납니다.

별칭을 사용해 쿼리를 더 짧게 만들어 보겠습니다. SQL 쿼리에서 테이블 별칭을 만들려면 AS 키워드를 사용합니다:

SELECT e.name, b.branch_name
FROM employees AS e LEFT JOIN branches AS b
ON e.branch_id = b.branch_id;

이 쿼리는 첫 번째 쿼리와 완전히 동일한 결과를 반환합니다. 여기서 두 개의 별칭을 지정했습니다:

  • "employees" → "e"
  • "branches" → "b"

쿼리에서 eb를 참조하면 SQL은 각각 "employees"와 "branches"를 가리키는 것으로 해석합니다. 테이블 별칭 덕분에 SQL 문장의 반복을 크게 줄여 코드가 훨씬 깔끔해졌습니다.

마무리

SQL 별칭은 컬럼이나 테이블을 대신하는 임시 이름입니다. 별칭은 쿼리별로만 유효하므로, 한 쿼리에서 정의한 별칭을 다른 쿼리에서 사용하려면 다시 정의해야 합니다. 별칭은 AS 키워드를 사용해 설정합니다.

SQL을 더 깊이 배우고 싶으신가요? How to Learn SQL 가이드를 확인해 보세요. 추천 학습 과정부터 유용한 온라인 SQL 리소스까지 폭넓게 다루는 종합 가이드입니다.