본문으로 건너뛰기
데이터 도구

SQL 포매터

SQL 쿼리를 즉시 포맷하고 정리합니다.
특정 SQL 방언(MySQL, PostgreSQL 등)을 선택하여 올바른 구문 강조 및 들여쓰기를 보장하세요.
복잡한 쿼리 정리, 생성된 SQL 디버깅 또는 검토를 위한 코드 준비에 완벽합니다.

가이드: 사용 방법 및 특징

  • 「Dialect」 메뉴에서 대상 데이터베이스 형식을 선택하세요 (기본값 MySQL).
  • SQL 쿼리를 입력창에 붙여넣으면 즉시 정렬된 결과가 표시됩니다.
  • 「Copy」 버튼을 눌러 정리된 쿼리를 클립보드에 복사할 수 있습니다.

샘플: 입출력 예시

SELECT 문 정렬 예시

입력 예시

select a,b,c from table1 join table2 on table1.id = table2.id where a > 10 order by b desc

출력 예시

SELECT
  a,
  b,
  c
FROM
  table1
  JOIN table2 ON table1.id = table2.id
WHERE
  a > 10
ORDER BY
  b DESC

FAQ: 자주 묻는 질문

  • 어떤 SQL 방언을 지원하나요?

    MySQL, PostgreSQL, SQL Server, MariaDB, SQLite, Oracle 등 대부분의 주요 언어를 지원합니다.
  • 들여쓰기 너비를 변경할 수 있나요?

    현재는 일반적인 2칸 들여쓰기로 고정되어 있으며, 향후 업데이트를 통해 설정 기능을 제공할 예정입니다.
  • 보안이 중요한 쿼리를 입력해도 안전한가요?

    네. 모든 변환 처리는 브라우저 내부에서만 실행되며, 서버로 어떠한 데이터도 전송되지 않습니다.

활용: 주요 활용 사례

  • 복잡한 쿼리 분석

    중첩된 서브쿼리와 조인이 많은 SQL을 정리하여 데이터 구조를 쉽게 파악합니다.

  • 코드 리뷰 준비

    SQL을 일관된 포맷으로 자동 정리하여 리뷰 효율을 높이고 가독성을 확보합니다.

  • 어플리케이션 로그 가시화

    로그에 찍힌 긴 한 줄짜리 쿼리를 정리해 문법 오류나 논리적 결함을 빠르게 찾아냅니다.

주의: 주의사항 및 제한

  • 구문 오류 주의

    입력된 SQL에 구문 오류가 있을 경우, 정렬이 올바르게 되지 않거나 오류가 발생할 수 있습니다.

  • 특수 구문 제한

    일부 데이터베이스 고유의 특수한 문법이나 실험적인 기능은 지원되지 않을 수 있습니다.

SQL 포매터

긴 SQL, minify된 SQL, ORM이 생성한 SQL은 읽기 어렵습니다. 이 SQL 포매터는 줄바꿈과 들여쓰기를 적용해 JOIN, WHERE, GROUP BY, 서브쿼리, 정렬 조건을 더 쉽게 검토할 수 있도록 도와줍니다.

언제 사용하면 좋은가

  • 코드 리뷰 전: 복잡한 query를 팀원이 읽기 쉬운 형태로 정리합니다.
  • ORM 출력 디버깅: 로그에 찍힌 SQL을 정리해 조건과 join을 확인합니다.
  • 성능 튜닝 중: 필터, group, order 조건을 더 명확하게 살펴봅니다.

실무 메모

포맷팅은 가독성을 높여주지만 query의 정확성이나 성능을 보장하지 않습니다. 실제 데이터베이스에서 실행 결과와 실행 계획을 함께 확인하세요.

이 도구의 관련 기사

도구 소개
2026-02-09

SQL 포맷터로 쿼리를 읽기 쉽게 만드는 방법: 방언(dialect) 선택이 왜 중요한가

로그나 ORM에서 뽑아낸 지저분한 SQL을 읽기 쉬운 쿼리로 정리하는 방법을 해설합니다. 방언(PostgreSQL/MySQL/BigQuery) 선택이 정리 결과를 바꾸는 기술적 이유와, 정리가 구문 검사 역할도 하는 이유를 다룹니다.

도구 소개
2026-07-21

SQL 빌더로 SELECT·JOIN 쿼리를 시각적으로 작성하는 방법

브라우저에서 시각적 SQL 빌더로 SELECT, WHERE, JOIN을 조립하는 방법을 해설합니다. 값의 자동 따옴표 판정 원리, JOIN 사용 구분표, 여러 테이블 JOIN 작성법까지 다룹니다.

활용 사례
2026-08-06

SQL 절 실행 순서 레퍼런스|WHERE에서 SELECT 별칭을 못 쓰는 이유

SQL은 작성한 순서대로 실행되지 않습니다. 논리적 실행 순서(FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT)를 축으로, 별칭이 WHERE에서 안 되는 이유, WHERE와 HAVING의 구분, ONLY_FULL_GROUP_BY, COUNT(*)와 COUNT(컬럼)의 차이, LEFT JOIN + WHERE 함정을 예제로 정리합니다.

활용 사례
2026-07-21

SQL JOIN 완전 레퍼런스|INNER·LEFT·RIGHT·FULL의 차이와 결과 행 수 이해하기

SQL JOIN 종류(INNER/LEFT/RIGHT/FULL/CROSS/SELF)를 치트시트와 결과 행 수 예제로 정리합니다. 1대다 JOIN에서 행이 늘어나는 이유, WHERE절과 ON절의 NULL 처리 차이, 여러 테이블 JOIN 작성법까지 다룹니다.

최신 아티클

활용 사례
2026-08-07

curl 옵션 정리|-X -H -d 가 실제로 하는 일과 함정

실무에서 만나는 curl 옵션을 표로 정리했습니다. -d 만으로 이미 POST가 되는 이유, -d 와 --data-raw 의 차이, 앞의 @ 가 조용히 파일을 읽는 함정, 작은따옴표와 큰따옴표의 구분, -k 와 -L 을 쉽게 붙이면 안 되는 이유까지 예제로 설명합니다.

도구 소개
2026-08-06

JSON Schema와 Zod를 상호 변환하는 원리|required와 .optional()의 대응

JSON Schema에서 Zod 스키마를 만들고 Zod 코드에서 다시 JSON Schema를 뽑아내는 양방향 변환기의 구현을 해설합니다. required와 .optional()의 기본값이 반대인 문제, 제약 조건 대응표, 코드를 실행하지 않고 해석하는 방법까지 정리합니다.

활용 사례
2026-08-06

SQL 절 실행 순서 레퍼런스|WHERE에서 SELECT 별칭을 못 쓰는 이유

SQL은 작성한 순서대로 실행되지 않습니다. 논리적 실행 순서(FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT)를 축으로, 별칭이 WHERE에서 안 되는 이유, WHERE와 HAVING의 구분, ONLY_FULL_GROUP_BY, COUNT(*)와 COUNT(컬럼)의 차이, LEFT JOIN + WHERE 함정을 예제로 정리합니다.

활용 사례
2026-08-06

unified diff 형식 읽는 법|git diff의 @@ 헤더 완전 해설

git이 출력하는 unified diff 형식을 읽는 법을 정리했습니다. @@ -12,7 +12,9 @@ 의 네 숫자가 뜻하는 것, 한 글자만 고쳐도 줄 전체가 바뀐 것처럼 보이는 이유, 공백과 줄바꿈 문자의 함정, \ No newline at end of file, 머지 커밋의 @@@, similarity index를 통한 이름 변경 감지까지 예제로 설명합니다.

활용 사례
2026-08-06

UTC⇄JST/KST 변환 레퍼런스|9시간 시차 대조표와 타임존 사고 예방법

UTC와 일본 시간(JST)·한국 시간(KST)의 변환을 대조표로 정리했습니다. ISO 8601의 Z와 +09:00의 의미, JavaScript 날짜 파싱이 9시간 어긋나는 조건, MySQL/PostgreSQL의 타임존 동작, GitHub Actions cron이 UTC로 도는 함정까지 예제와 함께 해설합니다.

활용 사례
2026-08-04

CREATE TABLE 레퍼런스|MySQL·PostgreSQL·SQLite의 타입과 제약 조건 차이

CREATE TABLE(DDL) 작성법을 3개 데이터베이스 비교표로 정리했습니다. 타입 대응표, 자동 증가(AUTO_INCREMENT / IDENTITY / rowid)의 방언 차이, 외래 키의 ON DELETE 동작, MySQL이 조용히 무시하는 CHECK 제약까지 예제와 함께 해설합니다.

광고

광고