</>DevTools

SQLSQL 포맷터

SQL 쿼리를 깔끔하게 정리

SQL Formatter 완벽 가이드

SQL Formatter는 한 줄로 뭉쳐진 지저분한 SQL 쿼리를 읽기 쉽게 자동 정렬하는 무료 온라인 도구입니다. Standard SQL, MySQL, PostgreSQL 등 주요 방언을 지원하며, 키워드 대소문자 통일과 들여쓰기를 자동으로 처리합니다. 코드 리뷰, 쿼리 디버깅, 팀 내 스타일 통일에 필수적인 도구입니다.

지원 방언별 특징

데이터베이스마다 SQL 문법이 조금씩 다릅니다. 올바른 방언을 선택하면 해당 DB에 최적화된 포맷 결과를 얻을 수 있습니다.

Standard SQL

ANSI/ISO 표준 SQL 규칙을 따릅니다. 특정 DB에 종속되지 않는 범용 쿼리 작성 시 사용합니다. 이중 따옴표(") 식별자, 표준 JOIN 구문을 그대로 유지합니다.

MySQL

백틱(`) 식별자 인용, LIMIT x OFFSET y, GROUP_CONCAT 등 MySQL 고유 함수를 올바르게 포맷합니다. Laravel, Django MySQL 백엔드 프로젝트에 적합합니다.

PostgreSQL

이중 따옴표 식별자, RETURNING 절, :: 타입 캐스트, 배열/JSON 연산자(->>, @>)를 인식합니다. Supabase, AWS Aurora PostgreSQL 환경에 최적입니다.

SQL 포맷 스타일 규칙

키워드 대소문자

SQL 키워드(SELECT, FROM, WHERE, JOIN 등)는 대문자로 통일하는 것이 업계 관례입니다. 포맷터가 자동으로 정규화해 줍니다.

들여쓰기와 줄바꿈

각 절(SELECT, FROM, WHERE, GROUP BY, ORDER BY)은 새 줄에서 시작하며, 서브쿼리와 JOIN 조건은 2칸 들여쓰기를 적용합니다. 긴 SELECT 컬럼 목록은 한 줄에 하나씩 배치해 가독성을 높입니다.

실전 예시: 포맷 전후 비교

아래는 포맷터 적용 전후의 쿼리 예시입니다.

-- 포맷 전
select u.id,u.name,count(o.id) as order_count from users u left join orders o on u.id=o.user_id where u.created_at>='2024-01-01' group by u.id,u.name having count(o.id)>5 order by order_count desc limit 20

-- 포맷 후 (PostgreSQL)
SELECT
  u.id,
  u.name,
  COUNT(o.id) AS order_count
FROM
  users u
  LEFT JOIN orders o ON u.id = o.user_id
WHERE
  u.created_at >= '2024-01-01'
GROUP BY
  u.id,
  u.name
HAVING
  COUNT(o.id) > 5
ORDER BY
  order_count DESC
LIMIT
  20

자주 묻는 질문 (FAQ)

  • 포맷 후 실행 결과가 달라지나요? — 아니요. 공백과 줄바꿈만 변경되므로 쿼리 실행 결과는 동일합니다.
  • 서브쿼리와 CTE도 포맷되나요? — 네. WITH 절, 중첩 서브쿼리, UNION 모두 자동 들여쓰기가 적용됩니다.
  • 데이터가 서버로 전송되나요? — 아니요. 모든 처리는 브라우저 내부에서 이루어져 민감한 쿼리도 안전합니다.
  • T-SQL(SQL Server)은 지원되나요? — 현재 Standard SQL/MySQL/PostgreSQL 세 가지를 지원합니다. T-SQL은 Standard SQL 방언으로 포맷하면 대부분 정상 동작합니다.

팁: 브라우저 개발자 도구 네트워크 탭에서 SQL 쿼리를 복사한 뒤 이 도구에 붙여넣으면 즉시 가독성 좋은 형태로 변환됩니다.

🔗관련 도구💻 정규식/코드