본문으로 건너뛰기
SPCXTools

SQL 포매터

길고 복잡한 SQL을 깔끔하고 읽기 쉬운 일관된 들여쓰기의 쿼리로 변환하세요.

로컬 실행 — 파일이 기기 외부로 전송되지 않습니다

도구 불러오는 중…

SQL 포매터 사용 방법

  1. 1입력 창에 SQL 쿼리를 붙여넣거나 샘플을 클릭하여 예제를 확인하세요.
  2. 2데이터베이스별 구문을 인식할 수 있도록 SQL 종류를 선택하세요.
  3. 3키워드 표기 방식(대문자, 소문자 또는 원본 유지)과 들여쓰기를 선택하세요.
  4. 4정렬된 쿼리를 복사하거나 .sql 파일로 다운로드하세요.

읽기 쉬운 SQL 만들기

로그에서 복사하거나, ORM이 생성하거나, 급하게 작성한 쿼리는 종종 한 줄로 길게 이어져 있어 읽기 어렵고 디버깅하기는 더욱 어렵습니다. 이 SQL 포맷터는 쿼리를 SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY 등 명확한 절로 나누고, 각 컬럼과 조건을 개별 줄에 배치하며, 서브쿼리와 CASE 표현식을 일관되게 들여쓰기합니다. 그 결과 코드를 검토하거나, 버전 관리 시스템에서 비교하거나, 동료와 공유하기가 훨씬 쉬워집니다.

주요 기능

  • 12가지 SQL 방언 지원: 표준 SQL부터 MySQL, PostgreSQL, SQL Server, Oracle, BigQuery, Snowflake까지 지원합니다.
  • 키워드 대소문자 변환: 대문자(UPPER), 소문자(lower) 또는 입력한 그대로 유지할 수 있으며, 키워드, 데이터 타입, 함수에 적용됩니다.
  • 들여쓰기: 스페이스 2개, 스페이스 4개 또는 탭(Tab)을 사용할 수 있습니다.
  • 다중 명령문: 세미콜론으로 구분된 여러 개의 쿼리를 지원합니다.
  • 주석 유지: -- 한 줄 주석과 /* */ 블록 주석이 모두 보존됩니다.
  • 복사 및 다운로드: 결과를 복사하거나 .sql 파일로 다운로드할 수 있습니다.
  • 개인정보 보호: 포맷터가 브라우저 내에서 로컬로 실행됩니다.

변환 전후 비교

다음과 같은 쿼리가:

select u.id, u.name, count(o.id) as orders from users u left join orders o on o.user_id = u.id where u.status = 'active' group by u.id, u.name order by orders desc;

이렇게 변환됩니다:

SELECT
  u.id,
  u.name,
  COUNT(o.id) AS orders
FROM
  users u
  LEFT JOIN orders o ON o.user_id = u.id
WHERE
  u.status = 'active'
GROUP BY
  u.id,
  u.name
ORDER BY
  orders DESC;

SQL 스타일 팁

  • 한 줄에 하나의 절 작성. 주요 절을 새 줄에서 시작하면 쿼리 구조를 한눈에 파악할 수 있습니다.
  • 의미 있는 별칭 사용. u나 o 같은 짧은 별칭은 간단한 쿼리에 적합하지만, 긴 리포트에서는 직관적인 별칭을 사용하는 것이 좋습니다.
  • 컬럼명 명확히 지정. 조인 시 모호성을 방지하기 위해 user_id 대신 orders.user_id와 같이 컬럼명을 명확히 지정하세요.
  • 일관된 포맷 유지. 프로젝트 전체에서 포맷을 일관되게 유지해야 diff에서 공백이 아닌 실제 변경 사항을 확인할 수 있습니다.

관련 도구

쿼리 결과를 다루고 계신가요? 추출한 데이터를 CSV JSON 변환기로 변환하거나, JSON 포매터로 API 응답을 깔끔하게 출력해 보세요. 텍스트 비교기를 사용해 두 쿼리 버전을 비교할 수도 있습니다.

자주 묻는 질문 (FAQ)

어떤 SQL 방언(Dialect)을 지원하나요?
Standard SQL, MySQL, MariaDB, PostgreSQL, SQLite, SQL Server (T-SQL), Oracle PL/SQL, Google BigQuery, Snowflake, Amazon Redshift, Spark SQL 및 IBM Db2를 지원합니다. 백틱 식별자, 대괄호, 달러 기호 문자열 또는 특수 연산자 등 데이터베이스 고유의 구문을 올바르게 처리하려면 알맞은 방언을 선택해야 합니다.
포맷팅하면 쿼리 동작이 변경되나요?
아닙니다. 포맷터는 공백과 줄바꿈만 변경하며, 설정에 따라 키워드, 데이터 타입, 함수 이름의 대소문자를 변경할 수 있습니다. 테이블 이름, 컬럼 이름, 문자열 및 주석은 원본 그대로 유지됩니다.
오류가 발생하는 이유는 무엇인가요?
포맷터가 쿼리 구조를 분석할 수 있어야 합니다. 오류는 주로 오타, 닫히지 않은 따옴표나 괄호, 또는 다른 데이터베이스의 구문을 사용했을 때 발생합니다. 다른 방언을 선택해 보세요. {{ name }} 같은 템플릿 플레이스홀더도 파싱 오류의 원인이 될 수 있습니다.
여러 개의 쿼리문을 한 번에 포맷팅할 수 있나요?
네. 세미콜론으로 쿼리문을 구분하면 각각 포맷팅되며, 각 쿼리문 사이에 빈 줄이 추가됩니다.
입력한 SQL 쿼리가 서버로 전송되나요?
아닙니다. 모든 포맷팅 작업은 브라우저 내에서만 처리되므로, 내부 테이블 이름이나 샘플 데이터가 포함된 쿼리도 안전하게 변환할 수 있습니다.
SQL 키워드는 대문자로 작성해야 하나요?
SQL 키워드는 대소문자를 구분하지 않으므로 코딩 스타일에 따라 다릅니다. 대문자 키워드(SELECT, FROM, WHERE)는 테이블 및 컬럼명과 쉽게 구분되어 전통적으로 많이 쓰이는 반면, 최근에는 소문자를 선호하는 팀도 많습니다. 어느 방식이든 하나를 선택해 일관성 있게 사용하는 것이 좋습니다.