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은 비슷해 보이지만 주류 포매터가 망가뜨리는 방언별 키워드가 있습니다. 주의해서 쓰고 출력이 실행되는지 검증하세요.
관련 도구
보색 찾기
어떤 입력에 대해서도 보색을 찾습니다. HSL 반대 색, 분할 보색 쌍, 그리고 접근성 있는 조합 제안을 반환합니다.
Webpack 설정 생성기
순수 JavaScript, React, Vue용 webpack 5 webpack.config.js를 만드세요. TypeScript, Babel, CSS 또는 Sass, 이미지, HtmlWebpackPlugin, 개발 서버, npm install 명령까지 함께 제공합니다.
색상 혼합기
두 HEX 색상을 2-20개의 균등한 색상 견본으로 섞습니다. 양 끝 색상을 포함해 각 중간 색상을 대문자 HEX 코드로 확인하세요.
PHP 포매터
간단한 PHP 코드에 줄바꿈과 2칸 또는 4칸 들여쓰기를 추가합니다. 결과를 반드시 검토하세요. PHP 파서나 PSR-12 적용 도구가 아닙니다.
OpenAPI 검증기
OpenAPI 또는 Swagger 문서를 JSON이나 YAML로 붙여넣고 핵심 구조를 점검하세요: 버전 필드, info 객체, paths를 명확한 오류와 경고와 함께 확인합니다.
CSS 로딩 애니메이션 생성기
순수 CSS로 원형 스피너를 만듭니다. 지름, 테두리 두께, 포인트 색상, 회전 속도를 설정하고 미리 보기를 확인한 뒤 바로 쓸 수 있는 CSS를 복사하세요. SVG도 자바스크립트도 필요 없습니다.
이 도구는 다른 언어로도 제공됩니다
- SQLフォーマッター [JA]
- SQL-formaterare [SV]
- Formateur SQL [FR]
- SQL-Formatter [DE]
- รูปแบบ SQL [TH]
- Định dạng SQL [VI]
- Formateador SQL [ES]
- SQL-formatter [NL]
- Formater SQL [PL]
- Format SQL [ID]
- تنسيق SQL [AR]
- Formatador SQL [PT]
- Форматтер SQL [RU]
- SQL Biçimlendirici [TR]
- SQL 格式化器 [ZH]
- SQL Formatter [EN]
- Formatter SQL [IT]