SQL 쿼리를 포맷하는 방법
지저분한 SQL은 버그를 도입하는 가장 빠른 방법 중 하나입니다. 쿼리가 들여쓰기 없이 한 긴 줄에 있을 때 어떤 조건이 어떤 조인에 적용되는지, 하위 쿼리가 어디서 시작하고 끝나는지, 또는 논리가 올바른지 보기 어렵습니다.
왜 포맷팅이 중요한가
- 디버깅 — 잘 포맷된 쿼리는 논리 오류를 가시적으로 만듭니다. 추측 없이 SELECT에서 WHERE로, JOIN으로 흐름을 따라갈 수 있습니다.
- 코드 검토 — 검토자는 포맷된 SQL을 몇 초 안에 읽습니다. 한 줄 쿼리는 먼저 정신적으로 분석하도록 강요합니다.
- 유지 관리 — 몇 달 후 쿼리로 돌아오면 포맷팅이 한눈에 무엇을 하는지 알려줍니다.
- 협업 — 팀 전체에서 일관된 포맷팅은 모두가 SQL을 같은 방식으로 읽는 것을 의미합니다.
SQL을 포맷하는 방법
- SQL 붙여넣기 — 포매터에 압축되거나 지저분한 쿼리를 입력하세요. SELECT, INSERT, UPDATE, DELETE, CREATE TABLE은 물론 하위 쿼리와 조인이 있는 복잡한 쿼리도 처리합니다.
- 옵션 구성 — 들여쓰기 크기와 키워드를 대문자로 표시할지 선택하세요. 이러한 설정은 프로젝트의 스타일 가이드와 일치해야 합니다.
- 결과 복사 — 포맷된 SQL이 편집기, 데이터베이스 클라이언트 또는 문서에 다시 붙여넣을 준비가 되었습니다.
좋은 포맷팅의 모습
select u.name, o.total from users u join orders o on u.id = o.user_id where o.total > 100 and u.active = 1 order by o.total desc와 같은 쿼리는 다음과 같이 됩니다:
SELECT
u.name,
o.total
FROM users u
JOIN orders o
ON u.id = o.user_id
WHERE o.total > 100
AND u.active = 1
ORDER BY o.total DESC
각 절은 자체 줄에서 시작합니다. 조건은 부모 절 아래에 들여쓰기됩니다. 조인과 ON 조건이 명확하게 짝지어집니다.
팁
- 커밋 전에 포맷 — 버전 관리에 추가하기 전에 SQL을 포매터에 통과시키세요. 이는 diff를 깨끗하게 유지하고 검토를 스타일이 아닌 논리에 집중시킵니다.
- 일관된 키워드 대소문자 사용 — 대문자나 소문자를 선택하고 전체 프로젝트에서 고수하세요. 혼합된 스타일은 쿼리를 읽기 어렵게 만듭니다.
- 복잡한 쿼리 분할 — 쿼리가 포맷되어도 여전히 읽기 어렵다면 CTE(Common Table Expressions) 또는 뷰로 분할하세요. 포맷팅은 근본적으로 복잡한 논리를 수정할 수 없습니다.
- 구문 강조 표시 확인 — 좋은 포매터는 키워드, 문자열 및 숫자를 구별하는 강조 표시를 제공하여 오타를 발견하는 데 도움이 됩니다.
자주 묻는 질문
SQL 키워드를 대문자로 작성해야 합니까?
SQL 키워드(SELECT, FROM, WHERE)를 대문자로, 테이블이나 컬럼 이름을 소문자로 쓰는 것은 널리 따르는 규칙입니다. 쿼리를 시각적으로 더 읽기 쉽게 만듭니다. 대부분의 스타일 가이드가 이를 권장하지만 어떤 데이터베이스 엔진도 이를 강제하지 않습니다.
포맷팅이 쿼리 실행을 변경합니까?
아니요. 공백과 들여쓰기는 SQL 실행에 영향을 미치지 않습니다. 포맷팅은 순전히 사람이 읽을 수 있게 하기 위한 것입니다. 압축된 쿼리와 들여쓰기된 쿼리는 동일한 결과를 생성합니다.
어떤 들여쓰기 크기를 사용해야 합니까?
공백 2개 또는 4개가 모두 일반적입니다. 팀이 사용하는 것을 선택하고 일관성을 유지하세요. 대부분의 SQL 포매터는 이를 구성할 수 있게 해줍니다.
내 SQL이 서버로 전송됩니까?
아니요. 포맷팅은 완전히 브라우저에서 수행됩니다. 쿼리가 기기를 떠나지 않습니다.