SQL 포매터·정렬기 — 11가지 방언, 압축, 구문 강조

지저분한 SQL을 PostgreSQL, MySQL, T-SQL, BigQuery 등에 맞춰 일관되게 들여쓴 읽기 쉬운 쿼리로 정리하세요. 브라우저에서 실행됩니다.

SQL 문 2개 · 717자
포매터 불러오는 중…

전적으로 브라우저에서 실행됩니다. SQL은 서버로 전송되지 않으므로 쿼리 속 스키마 이름과 데이터가 외부에 노출되지 않습니다. 모든 무료 도구 보기.

문제를 발견하셨거나 개선할 점이 있나요? 모든 메시지를 읽고 빠르게 고칩니다.

이 무료 SQL 포매터는 로그, ORM, 한 줄짜리 마이그레이션에서 붙여 넣은 쿼리를 읽기 쉬운 SQL로 바꿔 줍니다. 절마다 한 줄, 일관된 들여쓰기, 원하는 대소문자로 쓴 키워드입니다. 데이터베이스 방언을 고르면 PostgreSQL :: 캐스트와 $$ 함수 본문, MySQL 백틱, T-SQL [대괄호]와 @변수, BigQuery와 Snowflake의 QUALIFY 절 같은 문법을 망가뜨리지 않고 제대로 이해합니다.

포매팅은 공백과 키워드, 데이터 타입, 함수 이름의 대소문자만 바꿉니다. 문자열 리터럴, 따옴표로 묶은 식별자, 주석은 작성한 그대로 둡니다. 레이아웃을 잡으려면 SQL을 구문 분석해야 하므로, 템플릿 SQL(dbt나 Jinja {{ }} 블록)과 일부 벤더 고유 문은 실패할 수 있습니다. 그럴 때는 멈춘 지점의 줄과 열을 알려 줍니다. 압축은 그 반대로, 한 줄로 만들고 주석을 제거하되 /*+ INDEX(...) */ 같은 옵티마이저 힌트는 유지합니다.

사용 방법

  1. 입력란에 SQL 문을 하나 이상 붙여 넣으세요. 결과를 먼저 볼 수 있도록 샘플 쿼리가 들어 있습니다.
  2. 사용하는 데이터베이스의 방언을 고르세요. 따옴표, 파라미터, 벤더 고유 문법에서 특히 중요합니다.
  3. 키워드 대소문자, 들여쓰기, 문 사이 빈 줄 수를 설정하세요. 바꾸는 즉시 결과가 갱신됩니다.
  4. JSON 설정이나 셸 명령 안에 넣는 등 쿼리를 한 줄로 만들어야 한다면 압축으로 전환하세요.
  5. 결과를 복사하거나 .sql 파일로 다운로드하세요.

자주 묻는 질문

포매팅하면 SQL 쿼리의 동작이 바뀌나요?

아니요. 포매터는 공백과, SQL 데이터베이스가 대소문자를 구분하지 않는 키워드, 데이터 타입, 함수의 대소문자만 바꿉니다. 문자열 값, 따옴표로 묶은 식별자("Column", `col`, [col]), 주석은 그대로 복사되므로 쿼리는 같은 결과를 반환합니다. 테이블과 열 이름의 대소문자는 바꾸지 않지만 예외가 하나 있습니다. 따옴표 없는 이름이 선택한 방언의 키워드이기도 하면(예: month라는 별칭) 키워드 대소문자를 따릅니다. 대부분의 데이터베이스에서 따옴표 없는 이름은 대소문자를 구분하지 않으므로 거의 문제가 되지 않지만, MySQL 테이블 이름은 Linux에서 대소문자를 구분할 수 있습니다. 작성한 그대로 두려면 그대로 유지를 선택하세요.

어떤 SQL 방언을 골라야 하나요?

사용하는 데이터베이스의 방언입니다. 표준 SQL은 간단한 SELECT, INSERT, UPDATE 문에는 잘 맞지만, PostgreSQL :: 캐스트와 $1 파라미터, MySQL 백틱 식별자와 # 주석, T-SQL 대괄호, @변수, TOP, Oracle PL/SQL 블록, BigQuery와 Snowflake의 QUALIFY 절은 알지 못합니다. 구문 분석 오류로 포매팅이 실패하면 가장 먼저 올바른 방언을 골라 보세요.

포매터에 "구문 분석 오류"가 뜨는 이유는 무엇인가요?

선택한 방언에서 예상하지 못한 토큰을 만났기 때문입니다. 흔한 원인은 방언 불일치, 닫히지 않은 괄호나 따옴표, dbt의 {{ ref("orders") }} 같은 템플릿 플레이스홀더, 파서가 다루지 않는 절차형 코드입니다. 상태 줄에 줄과 열이 표시되고 아래 상자가 해당 문자를 가리키므로, 대개 이것만으로 문제를 찾을 수 있습니다.

SQL 키워드는 대문자로 써야 하나요?

규칙이 아니라 관례입니다. 대문자 키워드(SELECT, FROM, WHERE)는 테이블과 열 이름 사이에서 구조를 돋보이게 하며, 문서와 스타일 가이드에서 가장 흔한 스타일입니다. dbt나 구문 강조를 지원하는 최신 편집기를 쓰는 팀은 소문자를 선호하는 경우가 많습니다. 하나를 골라 어디서나 적용하세요. 이 도구는 어느 쪽으로든 바꾸거나 작성한 그대로 유지할 수 있습니다.

SQL을 압축해도 안전한가요?

쿼리 자체에는 안전합니다. 압축은 공백을 줄이고 -- 와 /* */ 주석을 제거하며, 문자열 내부는 절대 건드리지 않습니다. 옵티마이저 힌트(/*+ ... */)와 MySQL 버전 주석(/*! ... */)은 동작을 바꾸므로 유지합니다. 대가는 가독성이므로, 전송 용도(JSON 설정, 환경 변수, 로그 줄)로만 압축하고 저장소에는 포매팅된 버전을 두세요.

내 SQL이 서버로 전송되나요?

아니요. 포매터 라이브러리는 브라우저로 다운로드되어 거기서 실행됩니다. 테이블 이름, 열 이름, WHERE 절 속 데이터는 내 컴퓨터 밖으로 나가지 않습니다.

포매터를 망가뜨리는 방언 차이

• 식별자 따옴표: 표준 SQL과 PostgreSQL은 "큰따옴표", MySQL과 MariaDB는 `백틱`, SQL Server는 [대괄호]를 씁니다. 잘못된 방언으로 설정된 포매터는 따옴표로 묶은 이름을 문자열이나 연산자로 읽을 수 있습니다.

• 파라미터: PostgreSQL은 $1, $2, MySQL과 SQLite는 ?, SQL Server는 @name, Oracle은 :name을 씁니다. 이들은 작성한 그대로 유지됩니다.

• 캐스트와 연산자: PostgreSQL에는 value::type, JSON 연산자 ->와 ->>, ILIKE가 있습니다. BigQuery와 Snowflake에는 윈도 함수를 필터링하는 QUALIFY가 있습니다. Spark와 Hive에는 LATERAL VIEW가 있습니다.

• 문자열과 본문: PostgreSQL 함수 본문은 흔히 $$ ... $$(달러 인용)로 감싸고, 이스케이프 문자열은 E'...'를 씁니다. 그 안의 내용은 모두 하나의 문자열로 취급되어 그대로 둡니다.

• 주석: -- 와 /* */는 어디서나 작동하며, #은 MySQL과 MariaDB에서만 주석을 시작합니다. T-SQL에서 #name은 임시 테이블입니다.

읽기 쉬운 SQL 스타일 다섯 가지 규칙

공개된 SQL 스타일 가이드는 쉼표를 앞에 둘지 뒤에 둘지 같은 세부 사항에서는 서로 다르지만, 몇 가지 레이아웃 규칙에는 대부분 동의합니다. 이 포매터는 기본적으로 그 규칙을 적용합니다.

• 주요 절마다 한 줄: SELECT, FROM, JOIN, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT.

• 선택한 열마다 한 줄. 그래야 diff에서 어떤 열이 바뀌었는지 정확히 보입니다.

• WHERE와 ON 안에서 AND나 OR 뒤의 조건은 각각 별도 줄에.

• 서브쿼리와 CTE 본문은 상위보다 한 단계 더 들여쓰기.

• 스크립트에서 문 사이에 빈 줄 하나를 두어 각 문이 하나의 단위로 읽히게.

포매터가 할 수 없는 것은 이름을 잘 짓는 일입니다. 의미 있는 테이블 별칭을 쓰고(orders o는 괜찮지만 t1은 아닙니다), 계산된 열에는 AS로 이름을 명시하세요.

관련 무료 도구

  • JSON 포매터 — JSON을 보기 좋게 정렬하고, 압축하고, 검증하세요. 파싱 오류는 줄과 열 위치까지 알려 줍니다. 브라우저에서 실행, 업로드 없음.
  • JSON → TypeScript — JSON 샘플을 붙여 넣으면 TypeScript 인터페이스, Zod 스키마, JSON Schema, 또는 Go, Python, Java, C#, Kotlin, Swift, Rust 타입을 만들어 줍니다.
  • YAML 검사기 — 오류마다 정확한 줄과 열을 알려 주는 YAML 검사로, 파서가 조용히 받아들이는 실수(yes/no 불리언, 탭, 중복 키)까지 잡아내세요.
  • 정규식 테스터 — 실시간 매치 강조, 캡처 그룹, 치환 미리보기로 정규 표현식을 샘플 텍스트에 테스트하세요. 무료, 브라우저에서 실행.
  • 텍스트 비교 (Diff) — 텍스트, 코드, JSON 파일의 두 버전을 비교해 정확히 어떤 줄, 단어, 문자가 바뀌었는지 확인하세요.