본문으로 건너뛰기

SQL 정렬

SQL Formatter

키워드 대소문자·들여쓰기·쉼표 위치를 정해 주요 방언의 SQL을 정렬합니다.

SQL 쿼리를 읽을 수 있게 배치합니다. 키워드를 맞추고, 절마다 줄을 나누고, 조인은 붙는 테이블 아래에 들여씁니다. 방언 다섯 가지를 압니다. 방언 차이는 대부분 문자열·식별자·주석을 어떻게 인용하느냐에 있고, 그걸 틀리면 포매터가 쿼리를 망가뜨리기 때문입니다.

🔒 브라우저 안에서만 처리sqlformatdatabasebeautify
방언

ANSI 인용: 식별자는 큰따옴표로, 문자열 안의 따옴표는 두 번 씁니다.

키워드
들여쓰기
쉼표
줄 폭

SQL 입력

.sql 파일 놓기

이 탭에서 읽습니다. 올라가지 않습니다.

정렬 결과

입력

253byte

출력

0byte

문장

0

토큰 보존

예

이 도구는 SQL을 배치할 뿐 검증하지 않습니다. FROM 이 빠진 쿼리도 깔끔하게 정렬되고, 데이터베이스에서는 그대로 거절됩니다.

사용 방법

  1. 방언을 먼저 고릅니다

    MySQL의 백틱, PostgreSQL의 달러 인용, SQL Server의 대괄호 — 각각 무엇이 식별자이고 무엇이 문자열인지를 바꿉니다. 표준은 ANSI 해석이고, 이식성 있는 쿼리라면 그쪽이 맞습니다.

  2. 팀의 스타일을 맞춥니다

    키워드 대소문자, 들여쓰기 폭, 쉼표를 앞에 둘지 뒤에 둘지, select 목록을 접을 줄 폭입니다. 앞쪽 쉼표는 컬럼 목록에 git blame을 해 보기 전까지는 이상해 보입니다.

  3. "토큰 보존"을 확인합니다

    실행할 때마다 출력을 다시 토큰화해 입력과 비교합니다. 아니오가 나오면 포매터가 무언가를 잘못 읽은 것이고, 거의 항상 방언이 안 맞아서입니다. 그럴 때는 출력이 아니라 입력을 쓰세요.

자주 묻는 질문

쿼리를 검증해 주나요?

아니요. 배치만 합니다. 스키마를 모르고, 뜻을 파악하려고 파싱하지도 않습니다. `FROM`이 빠진 쿼리도 깔끔하게 정렬되고 데이터베이스에서는 전과 똑같이 거절됩니다.

`--` 주석이 왜 `/* */`로 바뀌었나요?

압축할 때만 그렇습니다. `--` 주석은 줄 끝까지 이어지므로, 쿼리를 한 줄로 만들면 그 뒤가 전부 주석이 되어 버립니다. 몇 개를 바꿨는지 세어 보여 주기 때문에 조용히 일어나지는 않습니다.

"닫히지 않은 문자열"은 무슨 뜻인가요?

닫히지 않은 따옴표입니다. 대개 방언이 안 맞아서 생깁니다. 표준 모드의 백틱이나 MySQL 모드의 `$$` 블록 같은 경우죠. 그 뒤는 전부 같은 문자열의 일부로 읽혀서 출력의 나머지가 엉망으로 보입니다.

마이그레이션 파일 전체를 붙여넣어도 되나요?

됩니다. 세미콜론으로 문장을 나누고 개수를 보여 줍니다. 정렬은 워커에서 돌기 때문에 큰 파일이어도 페이지가 멈추지 않습니다. 아주 긴 파일은 잠시 걸립니다.

이 도구로 이어지는 것

다음 단계

이 도구의 결과를 그대로 받을 수 있는 도구들입니다.