SQL Format

아래 상자에 SQL을 붙여넣고 사용 가능한 옵션으로 포맷하세요. SQL-Format은 데이터베이스 관리자들이 업계 및 대형 테크 기업의 표준에 따라 제작했습니다. 즐겨보세요!

서식 옵션
줄: 1 문자: 0 줄 1, 열 1 SQL · UTF-8

SQL Format이란 무엇이며 누구를 위한 것인가

SQL Format은 빽빽하거나 한 줄로 작성되었거나 들여쓰기가 일관되지 않은 SQL을 깔끔하고 예측 가능한 레이아웃으로 바꿔 주는 무료 온라인 포맷터입니다. 각 절은 새 줄에서 시작하고, 열 목록은 한 줄에 항목 하나씩 나뉘며, 조인과 그 조건은 해당 테이블 아래에 들여쓰기되고, 중첩 쿼리는 괄호 안에서 들여쓰기됩니다.

하루 종일 SQL을 읽는 사람들을 위해 만들어졌습니다. 풀 리퀘스트를 리뷰하는 개발자, 로그에서 수집한 느린 쿼리를 풀어 보는 DBA, 보고서를 공유하기 전에 정리하는 분석가, 그리고 한 줄로 작성된 300줄짜리 구문을 물려받은 모든 사람이 그 대상입니다. 레이아웃은 데이터베이스 팀이 오랫동안 사용해 온 관례를 따르며, 아래 옵션으로 팀의 스타일에 맞출 수 있습니다.

포맷터 사용 방법

  1. SQL을 편집기에 붙여 넣거나 입력합니다. 여러 구문을 한 번에 붙여 넣을 수 있으며, 세미콜론을 기준으로 나뉘어 차례로 포맷됩니다.
  2. 필요하면 옵션을 조정합니다. 들여쓰기 크기, 최대 줄 너비, 쉼표 위치, 키워드 대소문자, 여는 괄호를 별도 줄에 둘지 여부를 설정할 수 있습니다.
  3. 포맷을 클릭하거나 Ctrl + Enter(Mac에서는 ⌘ + Enter)를 누릅니다. 포맷된 SQL이 편집기의 텍스트를 대체합니다.
  4. 복사로 결과를 클립보드에 복사하거나, 지우기로 처음부터 다시 시작합니다. 상태 표시줄에는 줄 수와 문자 수, 커서 위치가 표시됩니다.

서식 옵션

다섯 가지 옵션이 출력을 제어합니다. 기본값(4칸 들여쓰기, 120열, 뒤쪽 쉼표, 대문자 키워드, 괄호를 같은 줄에)은 대부분의 팀에 적합하며, 각 옵션에는 더 많은 예제가 담긴 별도 페이지가 있습니다.

들여쓰기 공백

들여쓰기 공백은 각 중첩 수준에 사용할 공백 수를 0 이상으로 설정하며, 기본값은 4입니다. 입력에 있는 탭 문자는 문자열 리터럴과 따옴표로 묶은 식별자 안에 있는 경우를 제외하고 그 수만큼의 공백으로 바뀝니다. 아래 예제는 2를 사용합니다.

변경 후 (SQL Format으로 포맷)
옵션: 들여쓰기 공백 2 · 최대 열 수 120 · 쉼표: 뒤 · 키워드: 대문자 · 괄호를 새 줄에: 아니요
SELECT c.name,
  SUM(o.total) AS revenue
FROM customers c
  JOIN orders o
    ON  o.customer_id = c.id
WHERE o.status = 'PAID'
GROUP BY c.name

자세히 보기: '들여쓰기 공백' 옵션

최대 열 수

최대 열 수는 포맷터가 목표로 하는 줄 너비입니다(기본값 120). 긴 식은 이 너비를 넘지 않도록 여러 줄로 나뉘며, 0이면 줄 바꿈을 하지 않습니다.

변경 후 (SQL Format으로 포맷)
옵션: 들여쓰기 공백 4 · 최대 열 수 60 · 쉼표: 뒤 · 키워드: 대문자 · 괄호를 새 줄에: 아니요
SELECT order_id,
    quantity * unit_price * (1 - discount_rate) * (1 +
      tax_rate) + shipping_fee - loyalty_credit AS
      amount_due
FROM order_lines
WHERE order_id = 42

자세히 보기: '최대 열 수' 옵션

쉼표

쉼표는 뒤쪽 쉼표(각 항목 뒤, 기본값)와 앞쪽 쉼표(다음 줄의 시작) 중에서 선택합니다. 앞쪽 쉼표를 사용하면 열을 주석 처리하기 쉽고, 끝에 열을 추가할 때 diff가 더 작아집니다.

변경 후 (SQL Format으로 포맷)
옵션: 들여쓰기 공백 4 · 최대 열 수 120 · 쉼표: 앞 · 키워드: 대문자 · 괄호를 새 줄에: 아니요
SELECT id
    ,email
    ,country_code
    ,created_at
FROM customers

자세히 보기: '쉼표' 옵션(쉼표 위치)

키워드

키워드는 SELECT, FROM, JOIN 같은 SQL 키워드를 대문자(기본값) 또는 소문자로 바꿉니다. 문자열 리터럴과 주석은 작성한 그대로 유지됩니다.

변경 후 (SQL Format으로 포맷)
옵션: 들여쓰기 공백 4 · 최대 열 수 120 · 쉼표: 뒤 · 키워드: 소문자 · 괄호를 새 줄에: 아니요
select id,
    name
from products
where price > 100
order by name

자세히 보기: '키워드' 옵션(대소문자)

괄호를 새 줄에

괄호를 새 줄에는 IN 뒤의 서브쿼리, CTE 본문, 여러 줄로 나뉜 목록과 같은 블록의 여는 괄호를 이전 줄 끝에 두지 않고 별도 줄로 옮깁니다.

변경 후 (SQL Format으로 포맷)
옵션: 들여쓰기 공백 4 · 최대 열 수 120 · 쉼표: 뒤 · 키워드: 대문자 · 괄호를 새 줄에: 예
SELECT name
FROM customers
WHERE id IN
(
    SELECT customer_id
    FROM orders
    WHERE total > 500
)

자세히 보기: '괄호를 새 줄에' 옵션

지원하는 SQL 방언

이 포맷터는 특정 데이터베이스 하나에 묶여 있지 않습니다. 주요 엔진이 공통으로 사용하는 SQL을 처리합니다. 조인, 서브쿼리, CASE를 포함한 SELECT, INSERT, UPDATE, DELETE, CREATE TABLE과 CREATE VIEW 같은 일반적인 DDL, 그리고 --와 /* */ 형식의 주석이 해당하며, 주석은 보존됩니다.

PostgreSQL은 추가로 지원합니다. :: 캐스트, $1 매개변수, 달러 인용 $$ … $$ 본문을 처리하며, 본문의 PL/pgSQL은 블록 단위로 배치됩니다. MySQL의 백틱 식별자와 SQL Server의 [bracket] 식별자는 그대로 유지됩니다. 방언 선택 기능은 없으므로 SQL Server의 GO 배치 구분자처럼 특정 데이터베이스 고유의 다른 구문은 특별히 처리되지 않습니다. 차이점은 방언 가이드에서 설명합니다.

SQL은 어떻게 처리되나요

포맷을 클릭하면 편집기의 SQL이 HTTPS를 통해 당사 서버로 전송되고, 메모리에서 포맷된 뒤 곧바로 페이지로 반환됩니다. 데이터베이스, 파일, 로그에 기록되지 않으며 분석 또는 광고 파트너와 공유되지 않습니다. 그래도 어떤 온라인 도구에도 실제 비밀번호, 키, 개인 데이터를 붙여 넣지 마세요. 자세한 내용은 개인정보 페이지를 참고하세요.

개인정보 정보

자주 묻는 질문

내 SQL이 어딘가에 저장되나요?

아니요. SQL은 해당 요청 하나에 대해서만 서버의 메모리에서 포맷되어 응답으로 반환됩니다. 데이터베이스, 파일, 로그에 저장되지 않습니다.

포맷하면 쿼리의 동작이 바뀔 수 있나요?

공백, 줄 바꿈, 키워드 대소문자만 바꾸고 SQL의 순서나 논리는 절대 바꾸지 않도록 설계되었습니다. 코드를 다시 쓰는 다른 도구와 마찬가지로, 운영 데이터베이스에서 실행하기 전에 결과를 확인하세요. 키워드 대소문자 설정은 month라는 이름의 열처럼 SQL 키워드인 이름에도 적용된다는 점에 유의하세요.

어떤 데이터베이스에서 사용할 수 있나요?

PostgreSQL, MySQL, SQL Server, Oracle, Db2, SQLite에 공통인 SQL을 포맷하며, PostgreSQL의 캐스트, 매개변수, PL/pgSQL 본문은 추가로 처리합니다. 방언 선택기는 없습니다.

크기 제한이 있나요?

네. 요청 하나에 최대 20,000줄의 SQL을 포함할 수 있습니다.

여러 구문을 한 번에 포맷할 수 있나요?

네. 세미콜론으로 구분하면 각 구문이 개별적으로 포맷되며 원래 순서가 유지됩니다.

비용이 들거나 계정이 필요한가요?

아니요. 포맷터는 무료로 사용할 수 있으며 가입이 필요 없습니다.

자주 묻는 질문 전체 보기

가이드 및 참고 자료

도구 외에도, 다음 가이드에서 읽기 쉬운 SQL의 바탕이 되는 관례를 다룹니다.