ZeroTool Workbench
SQL 포매터
SQL 쿼리를 정렬·미화·압축합니다. 무료, 브라우저에서 완결.
사용 방법
- SQL 쿼리를 입력창에 붙여넣습니다.
- 서식 지정을 클릭하여 읽기 쉬운 SQL 형식으로 변환합니다.
- 최소화를 클릭하여 공백을 제거한 한 줄 형식으로 만듭니다.
- 결과를 복사합니다.
SQL 포매팅에 대하여
정렬된 SQL은 읽기 쉽고 코드 리뷰나 디버깅이 용이해집니다. 또한 ORM이 생성한 압축된 SQL을 읽을 때 정렬 도구가 매우 유용합니다. 반면 로그나 API 파라미터로 전달할 때는 압축 형식이 적합합니다.
정렬 예시
정렬 전:
select u.id, 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 limit 10;
정렬 후(기본 옵션):
SELECT
u.id,
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
LIMIT 10;
서브쿼리 예시
기본 옵션(공백 2칸 들여쓰기, 키워드 대문자)으로 실제 출력한 결과입니다. 괄호 안의 서브쿼리는 한 단계 더 들여씁니다.
select * from users where id in (select user_id from orders where total > 100);
SELECT
*
FROM users
WHERE id IN (
SELECT
user_id
FROM orders
WHERE total > 100
);
CTE 예시
WITH ... AS (...)의 본문은 서브쿼리처럼 들여씁니다. SUM(total) 같은 함수 호출은 한 줄에 남고, ROW_NUMBER() OVER (PARTITION BY ... ORDER BY ...) 같은 윈도 함수도 마찬가지입니다.
with recent as (select user_id, sum(total) as spent from orders group by user_id) select u.name, r.spent from users u join recent r on r.user_id = u.id order by r.spent desc;
WITH recent AS (
SELECT
user_id,
SUM(total) AS spent
FROM orders
GROUP BY user_id
)
SELECT
u.name,
r.spent
FROM users u
JOIN recent r ON r.user_id = u.id
ORDER BY r.spent DESC;
제한 사항
- 범용 방언 하나뿐이며 문법 검사를 하지 않습니다. MySQL, PostgreSQL, SQL Server 모드가 없고, 잘못된 SQL도 오류 없이 정렬합니다.
CASE는 한 줄로 남습니다.CASE WHEN ... THEN ... END를WHEN마다 줄바꿈하지 않습니다.- 최소화하면 주석이 사라지고 닫는 괄호 뒤 공백도 없어집니다(예:
SELECT COUNT(*)FROM events).
FAQ
어떤 SQL 방언을 지원합니까?
방언별 모드는 없고 범용 SQL 문법으로 정렬합니다. MySQL, PostgreSQL, SQLite, SQL Server의 일반적인 쿼리를 정렬할 수 있습니다.
데이터가 서버로 전송됩니까?
아니요. 모든 처리는 브라우저 내에서 완결됩니다. 기밀성이 높은 SQL 쿼리도 안전하게 처리할 수 있습니다.
길고 복잡한 쿼리도 정렬할 수 있습니까?
JOIN, 서브쿼리, CTE(WITH 절)는 정렬됩니다. CASE 식은 한 줄로 남습니다(아래 '제한 사항' 참고).
정렬 옵션을 커스터마이즈할 수 있습니까?
들여쓰기(공백 2칸·4칸·탭)와 키워드 대문자 변환을 설정할 수 있습니다.