ZeroTool Workbench

SQL 포매터

SQL 쿼리를 정렬·미화·압축합니다. 무료, 브라우저에서 완결.

100% 클라이언트 사이드 데이터가 브라우저 밖으로 나가지 않습니다 무료 · 회원가입 불필요

사용 방법

  1. SQL 쿼리를 입력창에 붙여넣습니다.
  2. 서식 지정을 클릭하여 읽기 쉬운 SQL 형식으로 변환합니다.
  3. 최소화를 클릭하여 공백을 제거한 한 줄 형식으로 만듭니다.
  4. 결과를 복사합니다.

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칸·탭)와 키워드 대문자 변환을 설정할 수 있습니다.