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 쿼리를 복사한 뒤 이 도구에 붙여넣으면 즉시 가독성 좋은 형태로 변환됩니다.