SQL 포맷터

읽기 힘든 SQL을 주요 방언에 맞춰 일관된 들여쓰기와 키워드 표기로 정리합니다.

키워드
들여쓰기
입력
출력

결과가 여기에 표시됩니다

SQL을 정리하는 이유

SQL은 한 줄로 길게 쓰기는 쉽지만 그대로는 읽기 괴롭습니다. 애플리케이션 로그, ORM, 동료에게서 복사한 쿼리는 흔히 대소문자가 들쭉날쭉하고 들여쓰기 없는 끊김 없는 문자열로 도착합니다. 정리는 각 절을 저마다의 줄에 놓고 중첩된 식을 들여써 다시 배치하므로, 쿼리의 모양 — 무엇을 고르고, 어디서 조인하고, 어떻게 거르는지 — 이 곧바로 보입니다. 덕분에 쿼리를 검토·디버깅·인계하기 쉬워지고 버전 관리의 차이도 훨씬 깔끔해집니다.

정리는 쿼리가 하는 일을 결코 바꾸지 않습니다. 공백과, 선택하면 키워드 대소문자를 조정할 뿐입니다. 돌려받는 문장은 붙여넣은 것과 동등합니다.

방언과 그것이 중요한 이유

SQL은 하나의 언어가 아니라 밀접하게 관련된 언어의 무리입니다. 각 데이터베이스 엔진은 표준 위에 저마다의 키워드, 함수, 구문을 더합니다. 데이터베이스에 맞는 방언을 고르면 포맷터가 그 엔진 고유 구성을 인식해 올바르게 배치합니다. 이 도구는 다음을 지원합니다:

  • 표준 SQL — 이식 가능한 쿼리를 위한 좋은 기본값입니다.
  • PostgreSQL — Postgres 고유 구문과 함수입니다.
  • MySQL — MySQL과 MariaDB 관례를 포함합니다.
  • SQL Server(T-SQL) — Microsoft SQL Server입니다.
  • BigQuery — Google BigQuery 표준 SQL입니다.
  • SQLite — 모바일과 앱에서 널리 쓰이는 임베디드 데이터베이스입니다.
  • Oracle(PL/SQL) — Oracle Database입니다.

키워드 대소문자 관례

오래된 관례는 SQL 키워드(SELECT, FROM, WHERE, JOIN)를 대문자로, 식별자(테이블·열 이름)를 소문자로 써서 구조를 이루는 단어가 데이터에서 두드러지게 합니다. 키워드 대소문자 컨트롤로 그것을 클릭 한 번에 적용할 수 있습니다:

  • 대문자 — 키워드를 대문자로. 가장 흔한 스타일입니다.
  • 소문자 — 키워드를 소문자로. 일부 팀과 스타일 가이드가 선호합니다.
  • 유지 — 쓴 그대로의 대소문자를 남깁니다.

들여쓰기 컨트롤(공백 2칸, 4칸, 탭)은 중첩된 절과 하위 쿼리를 얼마나 깊이 들여쓸지 정하므로 팀의 기존 스타일에 맞출 수 있습니다.

읽기 좋은 SQL을 위한 팁

  • 코드 리뷰 전에 정리하세요 — 일관되게 배치된 쿼리는 검토자가 훨씬 헤아리기 쉽습니다.
  • 키워드 대소문자를 하나로 정하고 코드베이스 전체에서 지키세요 — 차이가 일관됩니다.
  • 운영과 맞는 방언을 쓰세요 — 엔진 고유 구문이 망가지지 않습니다.
  • 정리는 안전하고 기계적인 단계입니다: 동작을 결코 바꾸지 않으므로 아직 완전히 이해하지 못한 쿼리에도 마음 놓고 적용할 수 있습니다.

자주 묻는 질문

어떤 SQL 방언을 지원하나요?
표준 SQL에 더해 PostgreSQL, MySQL, SQL Server(T-SQL), BigQuery, SQLite, Oracle(PL/SQL)입니다. 데이터베이스에 맞는 것을 고르면 방언 고유 구문이 올바르게 정리됩니다.
정리하면 쿼리의 동작이 바뀌나요?
아니요. 정리는 공백과, 선택하면 키워드 대소문자를 조정할 뿐입니다. 쿼리의 로직과 결과는 바뀌지 않습니다.
제 SQL이 서버로 전송되나요?
아니요. 정리는 전적으로 브라우저 안에서 돕니다. 붙여넣은 내용은 업로드되지 않으므로 민감한 스키마나 데이터를 참조하는 쿼리도 안전하게 정리할 수 있습니다.
정리 대신 오류가 표시되는 이유는 무엇인가요?
포맷터는 먼저 SQL을 파싱하므로 정말로 잘못된 구문 — 짝이 안 맞는 괄호, 불완전한 문장 — 은 배치할 수 없어 대신 보고됩니다. 구문을 고치고 다시 정리하세요.
여러 문장을 한 번에 정리할 수 있나요?
네. 세미콜론으로 구분한 여러 문장을 붙여넣으면 각각 차례로 정리됩니다.
테이블·열 이름까지 대문자로 만드나요?
아니요. 키워드 대소문자 옵션은 예약된 SQL 키워드에만 영향을 줍니다. 식별자 — 테이블 이름, 열 이름, 별칭 — 은 쓴 그대로 남습니다.