사용 방법
- 왼쪽 칸에 SQL을 붙여 넣으면 버튼을 누르지 않아도 바로 정리됩니다.
- 정렬은 주요 절을 줄 맨 앞으로 보내고 열 목록과 조건을 한 단계 들여씁니다. 압축은 필요 없는 공백과 줄바꿈을 지워 한 줄로 만듭니다.
- 키워드를 대문자·소문자로 맞추거나 원문 그대로 둘 수 있고, 들여쓰기는 2칸·4칸·탭, 쉼표는 줄 끝과 줄 앞 가운데 고를 수 있습니다.
- 따옴표나 주석이 닫히지 않았으면 몇 번째 줄 몇 번째 칸이 문제인지 알려 주고, 그 자리로 이동해 바로 고칠 수 있습니다.
정렬 규칙
줄 맨 앞으로 내보내는 주요 절은 SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, OFFSET, INSERT INTO, VALUES, UPDATE, SET, DELETE FROM, WITH, RETURNING, UNION, UNION ALL, INTERSECT, EXCEPT와 모든 JOIN 계열(JOIN, INNER JOIN, LEFT JOIN, LEFT OUTER JOIN, RIGHT JOIN, FULL OUTER JOIN, CROSS JOIN, NATURAL JOIN)입니다. 조인 조건 ON과 USING, 조건을 잇는 AND와 OR은 한 단계 안으로 들여써서 어디에 딸린 조건인지 눈에 보이게 합니다. 쉼표로 나뉜 열·값은 한 줄에 하나씩 두고, 괄호 안이 서브쿼리이면 한 단계 더 들여쓰며 닫는 괄호는 여는 줄의 위치에 맞춰 놓습니다. 함수 호출 괄호와 IN 목록처럼 짧은 괄호, CASE에서 END까지는 줄을 나누지 않아 한눈에 읽힙니다. BETWEEN 다음의 AND는 조건을 잇는 AND가 아니므로 줄을 바꾸지 않습니다.
| 입력 | 정렬 결과 |
|---|---|
select a, b from t where x = 1 and y = 2 | SELECT a, b FROM t WHERE x = 1 AND y = 2 |
select a from t left join u on t.id = u.id | SELECT a FROM t LEFT JOIN u ON t.id = u.id |
select a from t where id in (select id from u where flag = 1) | SELECT a FROM t WHERE id IN ( SELECT id FROM u WHERE flag = 1 ) |
insert into t (a, b) values (1, 2), (3, 4) | INSERT INTO t (a, b) VALUES (1, 2), (3, 4) |
update t set a = 1, b = 2 where id = 3 | UPDATE t SET a = 1, b = 2 WHERE id = 3 |
select a from t union all select b from u | SELECT a FROM t UNION ALL SELECT b FROM u |
문자열과 주석은 건드리지 않습니다
SQL을 줄 단위로 자르거나 정규식으로 키워드를 찾아 바꾸는 방식은 문자열 안의 낱말까지 건드려 쿼리의 뜻을 바꿔 버립니다. 이 도구는 먼저 글자를 하나씩 읽어 따옴표와 주석의 경계를 정하고, 그 안의 내용은 덩어리째 옮기기만 합니다. 작은따옴표 문자열과 안에서 두 번 겹쳐 쓴 따옴표, 큰따옴표·백틱·대괄호로 감싼 이름과 그 안에서 겹쳐 쓴 닫는 글자, 한 줄 주석과 여러 줄 주석, 그리고 PostgreSQL의 달러 인용까지 모두 원문 그대로 남습니다. 아래 표는 이 페이지를 만들 때 실제 포매터가 내놓은 결과입니다.
| 입력 | 결과 | 지키는 것 |
|---|---|---|
select 'select from where' as s | SELECT 'select from where' AS s | 문자열 안의 키워드 |
select 'It''s' as s | SELECT 'It''s' AS s | 이스케이프한 따옴표 '' |
select "from", `group`, [order] from t | SELECT "from", `group`, [order] FROM t | 인용한 이름 세 가지 |
select a -- where b = 1 from t | SELECT a -- where b = 1 FROM t | 한 줄 주석 |
select /* from t */ a from t | SELECT /* from t */ a FROM t | 여러 줄 주석 |
select $$ select 1; $$ as d | SELECT $$ select 1; $$ AS d | 달러 인용 (PostgreSQL) |
한 줄 주석은 그 줄 끝까지가 주석이라, 주석으로 끝난 줄 뒤에는 쉼표 하나도 붙이지 않습니다. 쉼표를 줄 끝에 두는 설정이어도 이때만은 다음 줄 앞에 씁니다. 압축할 때도 한 줄 주석 뒤의 줄바꿈 하나는 남깁니다. 그 줄바꿈을 지우면 뒤의 쿼리가 모두 주석 속으로 들어가 버리기 때문입니다.
옵션 비교
| 설정 | 결과 |
|---|---|
| 2칸 · 쉼표 줄 끝 | SELECT id, name, email FROM members WHERE active = 1 |
| 4칸 · 쉼표 줄 앞 | SELECT id
, name
, email
FROM members
WHERE active = 1 |
| 2칸 · 키워드 소문자 | select id, name, email from members where active = 1 |
정렬과 압축 예시
| 입력 | 정렬 | 압축 |
|---|---|---|
select u.id, u.name, count(o.id) as cnt from users u left join orders o on o.user_id = u.id where u.status = 'active' -- 활성 사용자만 and u.created_at >= '2026-01-01' group by u.id, u.name having count(o.id) > 0 order by cnt desc limit 20; | SELECT u.id, u.name, COUNT(o.id) AS cnt FROM users u LEFT JOIN orders o ON o.user_id = u.id WHERE u.status = 'active' -- 활성 사용자만 AND u.created_at >= '2026-01-01' GROUP BY u.id, u.name HAVING COUNT(o.id) > 0 ORDER BY cnt DESC LIMIT 20; | SELECT u.id,u.name,COUNT(o.id) AS cnt FROM users u LEFT JOIN orders o ON o.user_id=u.id WHERE u.status='active' -- 활성 사용자만 AND u.created_at>='2026-01-01' GROUP BY u.id,u.name HAVING COUNT(o.id)>0 ORDER BY cnt DESC LIMIT 20; |
압축은 붙여 쓰면 뜻이 달라지는 자리에는 공백을 남깁니다. 뺄셈 기호 두 개가 이어 붙어 주석이 되거나, 낱말 두 개가 하나로 붙는 일이 없도록 하고 키워드 양옆은 한 칸씩 띄웁니다. 그래서 압축한 결과를 그대로 다시 실행할 수 있습니다.
알려 주는 오류
| 입력 | 이 도구가 알려 주는 내용 |
|---|---|
select 'abc | 1줄 8칸 — 작은따옴표(')로 시작한 문자열이 닫히지 않았습니다. 값 안의 따옴표는 '' 처럼 두 번 써야 합니다. |
select "abc | 1줄 8칸 — 큰따옴표(")로 감싼 식별자가 닫히지 않았습니다. " 로 닫아 주세요. |
select `abc | 1줄 8칸 — 백틱(`)으로 감싼 식별자가 닫히지 않았습니다. ` 로 닫아 주세요. |
select [abc | 1줄 8칸 — 대괄호([)로 감싼 식별자가 닫히지 않았습니다. ] 로 닫아 주세요. |
select /* abc | 1줄 8칸 — 여러 줄 주석이 닫히지 않았습니다. 시작한 /* 를 */ 로 닫아 주세요. |
select $$abc | 1줄 8칸 — 달러 인용($$)이 닫히지 않았습니다. 같은 표시로 닫아 주세요. |
알아 둘 점
- 문법 검사기가 아닙니다. 괄호 짝이 맞지 않거나 SQL이 아닌 글이 섞여 있어도 오류 없이 있는 그대로 정리합니다. 오류로 막는 것은 닫히지 않은 따옴표와 주석뿐입니다.
- 여러 줄 주석의 중첩은 다루지 않습니다. 처음 만나는 닫는 표시에서 주석이 끝납니다. 표준 SQL과 MySQL이 같은 방식이고 PostgreSQL만 중첩을 허용합니다.
- 문자열 안의 백슬래시는 이스케이프로 보지 않습니다. 표준 SQL 규칙이며, 값 안의 따옴표는 두 번 겹쳐 쓰는 방식만 다룹니다.
- MySQL의 우물 정 기호 한 줄 주석은 다루지 않습니다. PostgreSQL의 JSON 연산자와 구분할 수 없어 연산자 글자로 둡니다.
- 한 번에 정리할 수 있는 양은 2MB, 50,000줄까지입니다. 그보다 크면 오류로 알려 줍니다.
붙여 넣은 쿼리는 서버로 전송되지 않습니다. 모든 처리는 브라우저 안에서만 일어나고, 파일로 저장하기도 브라우저가 직접 만든 파일을 내려받는 방식입니다. 오류 메시지에는 줄·칸 번호와 무엇이 잘못됐는지만 담고 입력한 쿼리는 담지 않습니다. 운영 데이터베이스의 쿼리도 그대로 붙여 넣어 정리할 수 있습니다.