SQL 포매터

벽처럼 붙어 있는 SQL을 읽을 수 있게 — 필요할 때는 다시 한 줄로.

100% 비공개 — 전적으로 브라우저에서 실행됩니다. 데이터는 사용자의 기기에서 처리되며 인터넷으로 전송되지 않습니다.

                        
.sql 내려받기

입력하는 대로 정렬되므로 누를 버튼이 없습니다. 쿼리는 이 페이지에 머물고, 문자열과 주석 안은 절대 들여다보지 않으며, 식별자는 쓴 그대로의 대소문자를 유지합니다.

SQL을 정렬한다는 것

SQL은 대개 거대한 한 줄로 도착합니다. ORM의 로그에서, 버그 리포트에서, 누군가의 클립보드에서. 아주 잘 돌아가지만 도저히 읽을 수 없고, 찾는 부분은 그 한가운데 어딘가에 있습니다.

붙여 넣으면 짜인 모습으로 돌아옵니다. 절마다 한 줄, 열은 SELECT 아래로 들여쓰기, JOIN과 그 ON 조건은 나란히 정렬되어 쿼리의 모양이 한눈에 보입니다.

사용 방법

  • 왼쪽 상자에 SQL을 붙여 넣으세요 — 색이 입혀진 정렬 결과가 입력에 맞춰 오른쪽에 나타납니다
  • 원하면 들여쓰기, 예약어 대소문자, 쉼표 위치를 바꾸세요. 결과가 바로 갱신됩니다
  • 복사하거나 .sql 파일로 내려받으세요
  • 한 줄로로 바꾸면 다시 한 줄이 됩니다. 계속 입력해도 그 상태가 유지됩니다

정렬을 위해 눌러야 할 버튼은 없습니다. 결과를 바꾸는 버튼은 정렬한 줄로 둘뿐이며,

이는 둘 중 무엇을 보고 있을지를 고르는 것입니다.

색은 쿼리를 읽은 같은 결과에서 나옵니다

출력의 색은, 배치를 만든 바로 그 토크나이저를 완성된 글에 한 번 더 돌려서 입힙니다.

예약어는 청록, 문자열은 노랑, 숫자는 주황, 주석은 회색, 문장 부호는 분홍, 그리고 여러분의

테이블과 열 이름은 색 없이 두어 주변 SQL과 구분되게 합니다.

이건 보기 좋으라고만 하는 일이 아닙니다. 쿼리를 한 번 읽은 결과가 배치와 색을 함께 만들기

때문에 둘이 어긋날 수가 없습니다. 문자열로 칠해진 것은 포매터가 실제로 문자열로 다룬 것입

니다. 어딘가 따옴표가 짝이 맞지 않으면 색이 그대로 흘러가며 그 자리를 알려 줍니다. 대개

눈으로 찾는 것보다 빠릅니다.

복사와 내려받기는 순수한 텍스트를 건넵니다. 색이 입혀진 표시가 아닙니다.

특히 조심하는 두 가지

빠른 SQL 포매터 대부분은 정규식으로 동작하는데, 이 두 지점이 바로 그 방식이 무너지는 곳입니다.

  • 문자열과 주석 안은 절대 들여다보지 않습니다. WHERE note = 'from a, b'가 들어간 쿼리에는 문자열 리터럴 안에 예약어와 쉼표와 공백이 있습니다. 정규식 포매터는 거기서 줄을 끊어 쿼리가 하는 일을 바꿔 버립니다. 이 도구는 쿼리를 먼저 토큰으로 읽으므로, 리터럴 안쪽은 공백까지 들어간 그대로 나옵니다
  • 식별자는 쓴 그대로의 대소문자를 지킵니다. 대문자나 소문자로 바꾸는 것은 예약어뿐입니다. 대소문자를 구분하는 서버에서 userIduserid는 서로 다른 열이고, 그것을 '정리'하는 포매터는 보기 좋게 만들려다 쿼리를 망가뜨린 것입니다

인용 방식은 모두 이해합니다. ''로 escape 하는 '문자열', "따옴표 식별자", MySQL의 백틱 , SQL Server의 [대괄호], PostgreSQL의 $$ 달러 인용 $$.

선택 항목

  • 들여쓰기 — 공백 4칸, 공백 2칸, 또는 탭
  • 예약어 — 대문자, 소문자, 또는 쓴 그대로
  • 쉼표 — 줄 끝에, 또는 팀의 관례가 그렇다면 줄 앞에

한 줄로

한 줄로 줄이면 쿼리가 다시 한 줄이 됩니다. 공백은 없애면 뜻이 달라지거나 새 토큰이 생기는 자리에만 남기므로, 결과는 안전한 범위에서 가장 짧습니다.

줄 주석은 버려집니다. 모두 한 줄이 되면 -- 이런 것이 뒤의 내용을 통째로 삼켜 버리기 때문입니다. 블록 주석은 쓰인 그대로 남습니다.

이런 때 씁니다

  • ORM 로그에 찍힌 쿼리를 읽을 수 있게 만들기
  • 풀 리퀘스트나 마이그레이션에 넣기 전에 SQL 정리하기
  • 남이 쓴 긴 쿼리 이해하기
  • 버그 리포트 속 쿼리를 손댈 수 있는 형태로 꺼내기
  • 설정 파일이나 셸 명령에 넣으려고 쿼리를 한 줄로 만들기
  • 커밋하기 전에 .sql 파일이 든 폴더의 스타일 통일하기

알아 두면 좋은 점

  • 쿼리는 이 페이지에 머물고 어디로도 전송되지 않습니다. 실제 테이블과 열 이름이 들어 있을 때 유용합니다
  • 이 도구는 SQL을 배치할 뿐, 유효한지는 검사하지 않습니다. 문법 오류가 있는 쿼리도 거절하지 않고 할 수 있는 만큼 정렬합니다
  • 방언별 인용 방식은 지원하지만, 방언 사이로 바꿔 쓰지는 않습니다
  • 아주 큰 쿼리도 괜찮습니다 — 여러분의 기기에서 단순한 일을 하는 것뿐입니다
  • 모든 브라우저에서 작동하며 휴대폰에서도 됩니다

관련 도구

새로운 도구를 꾸준히 추가하고 있습니다 — 공개될 때 알림을 받으려면 YouTube에서 구독하세요.

다른 도구

전체 보기

추천 앱

전체 보기