SQL 포매터
로그나 ORM에서 복사한 한 줄짜리 SQL 문을 붙여 넣으면, 포매터가 이를 들여쓰기된 절로 나눕니다, 일관된 키워드 대소문자, SELECT·FROM·WHERE·GROUP BY 앞 줄 바꿈, 프로젝션의 정렬된 컬럼까지요. MySQL, PostgreSQL, SQL Server, Oracle, SQLite, BigQuery 방언을 지원하며, 각각 키워드와 예약어가 조금씩 다릅니다.
포매팅이 작동하는 방식
-
1
SQL 붙여넣기
한 줄짜리 덩어리, Hibernate의 압축된 출력 등 무엇이든요. `;`로 구분된 여러 문장도 모두 포맷됩니다.
-
2
방언과 스타일 선택
방언은 키워드 목록을 제어하고, 스타일은 쉼표 위치(선행 vs 후행), 들여쓰기 폭, 키워드 대/소문자를 제어합니다.
-
3
정규식 치환이 아니라 토큰 파싱
토크나이저가 문자열, 주석, 괄호, 서브쿼리를 올바르게 처리합니다. 문자열 리터럴은 그대로 보존됩니다.
-
4
포맷된 출력 복사
검증된 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.created_at>='2024-01-01' GROUP BY u.id,u.name HAVING COUNT(o.id)>5 ORDER BY orders DESC LIMIT 50;
변환 후(선행 쉼표, 대문자 키워드, 2칸 들여쓰기):
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.created_at >= '2024-01-01'
GROUP BY u.id, u.name
HAVING COUNT(o.id) > 5
ORDER BY orders DESC
LIMIT 50;
중요한 스타일 선택
- 대문자 vs 소문자 키워드. 대문자는 전통적이고 눈에 잘 띕니다. 소문자는 구문 강조가 있는 현대 코드 에디터에서 더 깔끔합니다.
- 선행 vs 후행 쉼표. 선행(
, col)은 단일 컬럼을 주석 처리하기 쉽습니다. 후행(col,)은 글로 읽을 때 더 자연스럽습니다. GROUP BY의 쉼표 위치. 긴 절은 한 줄에 하나씩, 짧은 절은 인라인으로 두는 경우가 많습니다.- JOIN 들여쓰기.
ON을 다음 줄에(걸린 들여쓰기) vs 같은 줄에. 긴 조건은 걸린 들여쓰기가 유리합니다. - 서브쿼리. 여는 괄호만이 아니라 서브쿼리 전체를 들여씁니다.
방언별 함정
- MySQL 백틱 vs PostgreSQL 식별자용 큰따옴표.
WITHCTE, MS SQL은WITH앞에;가 필요합니다. 포매터가 처리합니다.- 윈도우 함수, 긴
OVER (...)절은PARTITION BY와ORDER BY를 줄 바꿈하면 유리합니다. - BigQuery에는 토크나이저가 깨뜨려서는 안 되는
ARRAY_AGG,STRUCT, 테이블 접미사(*_yyyymmdd)가 있습니다. - Oracle에는
(+)외부 조인 구문이 있습니다, 포매터는 이를 보존하되 레거시로 표시합니다.
포매터가 하지 않는 것
- 버그 수정, 잘못된 JOIN은 잘못된 채로 남습니다.
SELECT *전개, 컬럼 목록은 스키마에서 추론되지 않습니다.- 쿼리 최적화, 레이아웃만, 실행 계획은 아닙니다.
- 서브쿼리를 CTE로 재작성, 별개의 문제입니다.
자주 묻는 질문
아니요, 순전히 외형적입니다. 공백, 줄 바꿈, 쉼표 위치는 이동하지만 키워드, 연산자, 리터럴, 식별자는 정확히 보존됩니다.
지원합니다, CREATE TABLE, ALTER, CREATE PROCEDURE, 트리거까지요. 포매터는 블록 구문(BEGIN ... END)과 프로시저 내부의 줄 연속을 처리합니다.
깨지지 않아야 합니다, 만약 깨진다면 방언 불일치일 가능성이 높습니다. 방언을 바꿔 보세요. 지속되는 실패는 신고해 주세요. 버그로 취급합니다.
Flink SQL과 Cassandra CQL은 비슷해 보이지만 주류 포매터가 망가뜨리는 방언별 키워드가 있습니다. 주의해서 쓰고 출력이 실행되는지 검증하세요.
관련 도구
ASCII 표 참조
NUL, LF, DEL 같은 제어 문자를 포함해 모든 문자에 대한 10진수, 16진수, 8진수, 2진수, HTML 숫자 문자 참조를 담은 0부터 127까지의 전체 ASCII 표.
HTML 문자 참조
HTML 엔티티의 검색 가능한 목록, 각 엔티티의 이름 및 숫자 코드, 그리고 특수 문자 및 기호에 대한 1클릭 복사 기능을 제공합니다.
FPS 카운터
requestAnimationFrame으로 브라우저 FPS를 측정하세요. 스무딩, 최소/최대 프레임레이트, 경고 임계값, 선택형 그래프를 제공합니다. 업로드나 API 없이 로컬에서 실행됩니다.
키보드 단축키 참고표
macOS, Windows, Linux에서 VS Code, Chrome, GNU Readline을 쓰는 Bash의 문서화된 기본 단축키를 검색합니다.
색상 혼합기
두 HEX 색상을 2-20개의 균등한 색상 견본으로 섞습니다. 양 끝 색상을 포함해 각 중간 색상을 대문자 HEX 코드로 확인하세요.
색상 틴트 생성기
기준 색의 밝은 틴트를 생성합니다. 디자인 시스템 토큰, 배경, 호버 상태를 위한 3-20단계 스케일.
이 도구는 다른 언어로도 제공됩니다
- Format SQL [ID]
- تنسيق SQL [AR]
- Formateur SQL [FR]
- รูปแบบ SQL [TH]
- SQLフォーマッター [JA]
- Formater SQL [PL]
- Định dạng SQL [VI]
- Formatador SQL [PT]
- SQL-formaterare [SV]
- Formateador SQL [ES]
- SQL-Formatter [DE]
- SQL-formatter [NL]
- SQL Biçimlendirici [TR]
- SQL 格式化器 [ZH]
- SQL Formatter [EN]
- Formatter SQL [IT]
- Форматтер SQL [RU]