SQL 포맷터
지저분한 SQL을 깔끔하고 읽기 쉬운 쿼리로 바꾸세요.
브라우저에서 실행됩니다. 입력한 내용은 어디로도 전송되지 않습니다.
- SQL 방언 6종
- 대문자·소문자 키워드
- 업로드 없음
SQL 정렬 방법
- SQL 쿼리를 붙여넣으세요.
- 방언, 키워드 대소문자, 들여쓰기 크기를 고르세요.
- 정렬된 SQL을 복사하거나 다운로드하세요.
지원하는 방언별 차이
| 방언 | 고려하는 특징 |
|---|---|
| MySQL | 백틱으로 감싼 식별자 |
| PostgreSQL | 큰따옴표 식별자와 :: 타입 캐스트 |
| SQL Server | 대괄호 식별자와 LIMIT 대신 TOP |
| SQLite | 더 느슨한 인용 규칙 |
| BigQuery | project.dataset.table 같은 백틱 테이블 경로 |
| 표준 SQL | ANSI 방식의 큰따옴표 식별자, 기본 대상 |
정렬이 바꾸는 것과 바꾸지 않는 것
- 바뀌는 것: 키워드 대소문자, 절과 JOIN의 들여쓰기, SELECT·FROM·WHERE·JOIN 앞의 줄바꿈 위치.
- 바뀌지 않는 것: 테이블명과 열 이름, 문자열 리터럴 내용, 쿼리 안의 주석.
- --나 /* */로 쓴 주석은 원래 있던 줄이나 블록에 그대로 붙어 위치가 유지됩니다.
SQL 정렬 팁
- 세미콜론으로 구분한 여러 문장을 붙여넣으면 각각 제자리에서 정렬됩니다.
- 실제로 쓰는 데이터베이스의 방언을 고르면 출력의 식별자 인용 방식이 서버가 기대하는 것과 일치합니다.
- 방언의 인용 방식이 데이터베이스에서 오류를 일으킨다면 표준 SQL을 시도하고 식별자를 손으로 조정하세요.
- 들여쓰기 크기를 키우면 각 중첩 단계가 더 두드러져 JOIN이 많은 긴 쿼리를 훑어보기 쉬워집니다.
SQL 포맷터 자주 묻는 질문
어떤 SQL 방언을 지원하나요?
표준 SQL, MySQL, PostgreSQL, SQL Server, SQLite, BigQuery를 지원합니다. 각각 인용 부호와 함수 처리 방식이 조금씩 다릅니다.
이 도구가 제 SQL이 올바른지 검사하나요?
아니요. 가독성을 위해 쿼리를 다시 정렬할 뿐입니다. 데이터베이스에 연결하거나 테이블·열 이름을 검증하지는 않습니다.
여러 쿼리가 담긴 파일 전체를 한 번에 정렬할 수 있나요?
네. 세미콜론으로 구분된 여러 문장을 붙여넣으면 각각 제자리에서 정렬됩니다.
들여쓰기 크기는 무엇을 조절하나요?
중첩 단계마다 몇 칸의 공백을 쓸지 정합니다. 간결한 쿼리는 2칸, JOIN과 서브쿼리가 깊게 중첩된 경우는 8칸까지 가능합니다.
제 SQL이 어딘가에 업로드되나요?
아니요. 정렬은 브라우저에서 이루어지므로 쿼리와 그 안의 데이터는 기기에 그대로 남습니다.
정렬하면 쿼리의 순서가 바뀌나요?
아니요. 절, JOIN, 서브쿼리는 작성한 순서 그대로 유지됩니다. 바뀌는 것은 들여쓰기, 줄바꿈, 키워드 대소문자뿐입니다.
저장 프로시저나 변수를 포함한 스크립트도 정렬할 수 있나요?
일반적인 SELECT, INSERT, UPDATE, DELETE 문은 깔끔하게 정렬됩니다. T-SQL 제어 구문이나 PL/pgSQL 블록 같은 방언별 절차형 구문은, 이 포맷터가 표준 쿼리 구문을 대상으로 하기 때문에 깔끔하게 들여쓰기되지 않을 수 있습니다.
CTE(WITH 절)나 윈도우 함수도 지원하나요?
네. 공통 테이블 표현식과 윈도우 함수도 내부에서 쓰는 sql-formatter 라이브러리가 이해하는 다른 구문과 마찬가지로 각자의 들여쓰기를 포함해 정렬됩니다.