SQL 쿼리 정렬

쿼리를 줄맞춤하거나 한 줄로 압축합니다. MySQL, 오라클, MSSQL 등 20개 DB 문법을 지원합니다.

키워드
들여쓰기
AND / OR
입력1줄
결과
WITH
  recent_orders AS (
    SELECT
      customer_id,
      count(*) AS orders,
      sum(total) AS revenue
    FROM
      orders
    WHERE
      created_at >= DATE '2026-01-01'
    GROUP BY
      customer_id
  )
SELECT
  c.id,
  c.name,
  c.email,
  r.orders,
  r.revenue
FROM
  customers c
  LEFT JOIN recent_orders r ON r.customer_id = c.id
WHERE
  c.status = 'active'
  AND (
    r.revenue > 500
    OR r.orders >= 3
  )
ORDER BY
  r.revenue DESC
LIMIT
  20;
표준 SQL · 32줄

SQL 쿼리 정렬하는 방법

쿼리를 입력 칸에 붙여 넣으면 결과 칸에 줄맞춤된 쿼리가 바로 나옵니다.

  1. 쿼리를 붙여 넣거나 .sql 파일을 엽니다.
  2. DB 문법에서 사용하는 데이터베이스를 고릅니다. TOP, 백틱, ::jsonb 같은 DB 전용 문법을 이 설정으로 읽습니다.
  3. 키워드 대문자·소문자, 들여쓰기 2칸·4칸·탭, AND/OR를 줄 앞에 둘지 줄 끝에 둘지 정합니다.
  4. 결과를 복사하거나 .sql 파일로 내려받습니다. 압축은 쿼리를 한 줄로 만듭니다.

쿼리 정렬과 ORDER BY 정렬은 다릅니다

이 페이지의 정렬은 쿼리 문장의 줄맞춤과 들여쓰기입니다. 조회 결과의 행 순서를 바꾸는 정렬은 ORDER BY로 합니다. 기본은 오름차순(ASC)이고, 내림차순은 DESC를 붙입니다. 두 개 이상의 컬럼으로 정렬할 때는 쉼표로 이어 쓰며, 앞의 컬럼 값이 같을 때 뒤의 컬럼으로 순서를 정합니다.

SELECT name, dept, salary
FROM employees
ORDER BY dept ASC, salary DESC;

정렬하면 무엇이 바뀌나요

바뀌는 것은 배치뿐이고 쿼리의 동작은 그대로입니다. SELECT, FROM, WHERE, GROUP BY, ORDER BY 같은 절은 새 줄에서 시작하고, 조회할 컬럼은 한 줄에 하나씩 놓입니다. JOIN은 FROM 아래로 맞추고, 서브쿼리와 WITH 절은 한 단계 더 들여 씁니다. 따옴표 안의 값, 주석, 테이블·컬럼 이름은 바꾸지 않습니다.

정렬 전

select id,name from users u join orders o on o.user_id=u.id where o.total>100 and u.active=1

정렬 후

SELECT
  id,
  name
FROM
  users u
  JOIN orders o ON o.user_id = u.id
WHERE
  o.total > 100
  AND u.active = 1

SQL 들여쓰기 규칙

공식 규칙은 없지만 팀마다 정하는 규칙은 대체로 비슷합니다. 많이 인용되는 Simon Holywell의 SQL Style Guide와 이 도구의 기본값이 따르는 내용은 다음과 같습니다.

  • 키워드는 대문자, 테이블·컬럼 이름은 소문자 snake_case로 씁니다.
  • 조회할 컬럼은 한 줄에 하나씩 둡니다. 컬럼을 하나 바꿔도 변경 이력에 한 줄만 남습니다.
  • 절은 새 줄에서 시작하고, 그 절에 딸린 내용은 들여 씁니다.
  • 계산한 컬럼과 조인한 테이블에는 AS로 별칭을 붙입니다.
  • 여러 겹의 서브쿼리 대신 WITH ... AS(CTE)를 씁니다.
  • 테이블을 쉼표로 나열하지 않고 JOIN ... ON으로 조인 조건을 씁니다.

DBeaver·DataGrip·SSMS·VS Code 쿼리 정렬 단축키

자주 쓰는 SQL 편집기에도 정렬 기능이 있습니다. 편집기가 설치되지 않은 PC에서는 이 페이지에서 정렬할 수 있습니다.

편집기정렬 방법
DBeaver쿼리를 선택하고 Ctrl+Shift+F, 또는 오른쪽 클릭 → Format → Format SQL
DataGripReformat Code: Windows·Linux Ctrl+Alt+L
SSMS 22.10.2 이상쿼리 창에서 오른쪽 클릭 → Format SQL, 또는 Ctrl+K, Ctrl+Q. 스타일은 Tools > Options > SQL Formatter
Oracle SQL Developer워크시트에서 Format SQL 실행. 서식은 Tools > Preferences > Code Editor > Format에서 정합니다
VS Code기본 기능에는 SQL 정렬이 없습니다. SQL Formatter VSCode 확장을 설치한 뒤 문서 서식(Shift+Alt+F, macOS는 Shift+Option+F)

SSMS의 정렬 기능은 22.7 버전(2026년 6월)에 미리보기로 들어왔고 22.10.2 버전(2026년 9월)부터 정식 기능입니다. 그보다 낮은 버전은 Redgate SQL Prompt 같은 추가 도구가 필요합니다. VS Code 확장은 이 페이지와 같은 오픈소스 엔진을 씁니다.

DB 문법은 무엇을 골라야 하나요

SQL 표준은 ISO/IEC 9075(현재판 SQL:2023)이지만 데이터베이스마다 고유 문법이 있습니다. 특히 이름을 감싸는 따옴표가 달라서, 문법을 잘못 고르면 정렬 중 오류가 납니다.

DB이름 감싸기대표 전용 문법
MySQL / MariaDB`name`LIMIT, GROUP_CONCAT, # 주석
PostgreSQL"name"::type 형변환, $$ ... $$ 문자열, RETURNING
SQL Server (MSSQL)[name], "name"TOP (n), @변수, GO
Oracle"NAME"BEGIN ... END; 블록, :바인드 변수
BigQuery`project.dataset.table`STRUCT, ARRAY, QUALIFY
SQLite"name", [name], `name`AUTOINCREMENT, PRAGMA

SQL 압축은 언제 쓰나요

압축(Minify)은 쿼리를 한 줄로 만듭니다. 단어 사이 공백은 하나로 줄이고, 쉼표와 괄호 앞뒤 공백과 주석은 지웁니다. JSON 설정 파일, 환경 변수, 로그, 코드 안의 문자열에 쿼리를 넣을 때 씁니다. 따옴표 안의 값은 그대로라서 '공백 두 칸'도 바뀌지 않습니다.

정렬 엔진: sql-formatter 15.9.0(2026년 9월 23일 배포), MIT 라이선스. 단축키는 DBeaver SQL Formatting, DataGrip Reformat code, SSMS 22 릴리스 노트, Oracle SQL Developer 사용자 가이드 문서 기준입니다. DB 문법은 MySQL, PostgreSQL, SQL Server 공식 문서와 대조했습니다. 2026년 10월 확인.

자주 묻는 질문

입력한 쿼리가 서버로 전송되나요?

아니요. 정렬과 압축은 모두 브라우저 안에서 처리되며 쿼리는 외부로 전송되지 않습니다. 운영 DB 쿼리나 사내 테이블 이름이 들어 있는 쿼리도 마찬가지입니다.

정렬하면 쿼리 결과가 달라지나요?

아니요. 공백, 줄바꿈, 키워드의 대소문자만 바뀝니다. 테이블·컬럼 이름, 따옴표 안의 값, 주석은 그대로 둡니다. 압축할 때도 따옴표 안의 문자열은 바뀌지 않습니다.

오류가 나는 이유는 무엇인가요?

선택한 DB 문법으로 쿼리를 읽지 못했기 때문입니다. 백틱(`)으로 감싼 이름은 MySQL, 대괄호([ ])는 SQL Server, $$로 감싼 문자열은 PostgreSQL을 골라야 합니다. 닫히지 않은 따옴표나 괄호가 있으면 상태 줄에 나온 위치에서 멈춥니다.

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

SQL 키워드는 대소문자를 구분하지 않으므로 규칙이 아니라 습관입니다. 키워드는 대문자, 테이블·컬럼 이름은 소문자로 쓰는 방식이 가장 많이 쓰입니다. 쿼리 구조와 이름이 한눈에 구분되기 때문입니다.

여러 쿼리를 한 번에 정렬할 수 있나요?

네. 세미콜론(;)으로 구분된 스크립트를 통째로 붙여 넣으면 쿼리마다 한 줄씩 띄워 차례로 정렬합니다.

오라클이나 티베로 쿼리도 정렬되나요?

오라클은 DB 문법에서 Oracle PL/SQL을 고르면 BEGIN … END 블록과 :바인드 변수까지 읽습니다. 티베로(Tibero)는 오라클 호환을 내세운 DBMS라 Oracle PL/SQL로 먼저 정렬해 보고, 오류가 나는 부분만 직접 확인합니다.