데이터베이스 및 SQL 도구

SQL 포맷터쿼리의 계층과 원문을 함께 확인

쿼리의 계층과 원문을 함께 확인

SQL 포맷터

SQL 입력

결과

브라우저에서만 처리합니다. 데이터베이스 연결이나 이력 저장은 없습니다.

방언 및 표시

연결, 스키마 조회, 권한 검사나 EXPLAIN을 수행하지 않습니다. 정렬 성공은 문법 검증이 아니며 AST 분석 성공도 실제 데이터베이스에서 동작함을 증명하지 않습니다. 구조 키워드만 대소문자를 바꿉니다. ACTION이나 NO 같은 문맥 의존 단어는 식별자 보호를 위해 원문 표기를 유지합니다.

입력은 UTF-16 단위 100,000개, 토큰 20,000개, 괄호 50단계, 문장 200개까지입니다. AST는 토큰 5,000개와 30단계입니다. 출력은 1,000,000단위까지이며 미리보기는 20,000씩 늘어나고 내보내기는 전체를 담습니다.

SQL을 입력하거나 예제를 선택하세요.

SQL 포맷터는 로그에서 꺼낸 긴 쿼리나 리뷰 전의 복잡한 문장을 읽는 데 유용합니다. 먼저 쿼리가 작성된 방언을 고르세요. 비슷한 따옴표도 데이터베이스에 따라 다른 의미를 가질 수 있습니다.

SQL 정렬로 조인과 하위 쿼리를 드러내고 SQL 들여쓰기를 통일하세요. SQL 압축은 토큰 밖의 공백을 줄입니다. 보기 좋게 정리됐다는 사실과 실제 서버에서 실행 가능하다는 사실은 구분해야 합니다.

SQL 포맷터를 쓰는 이유

절의 흐름을 읽기 쉽게

SQL 포맷터는 절을 나누고 들여쓰기를 맞춥니다. 문자열, 숫자 표기와 주석을 원문과 대조하며, 보존 여부를 확인할 수 없는 변경은 결과로 내보내지 않습니다.

밀집된 쿼리가 들여쓰기된 여러 줄로 펼쳐지고 문자열과 주석 블록은 그대로 유지됩니다.

표시와 구문 트리를 분리

AST 모드는 별도 파서로 네 방언의 지원 범위를 분석합니다. Oracle은 서식만 지원하고 AST는 제공하지 않습니다. 트리는 파서의 해석이며 데이터베이스 실행 계획이 아닙니다.

쿼리에서 분기한 구문 트리 옆에 독립된 서식 결과 패널이 있습니다.

스타일보다 해석을 먼저 선택

01

실제 방언 선택

MySQL, PostgreSQL, SQLite, SQL Server, Oracle은 인용 규칙이 다릅니다. PostgreSQL 선택은 MySQL 쿼리를 번역하는 기능이 아니라 이번 처리에 사용할 문법을 바꾸는 기능입니다.

02

정렬·압축·AST 구분

정렬은 읽기 편한 배치, 압축은 공백 감소, AST는 JSON 구조 확인에 쓰세요. AST에는 숫자와 입력 복잡도에 대한 더 엄격한 한도가 있습니다.

03

원문 교체 전 검토

자동 처리는 350ms 뒤 갱신합니다. 끄면 버튼이나 Ctrl/Cmd+Enter로 실행하세요. 결과를 입력으로 사용하면 미리보기가 열리며, 적용 후 이전 설정과 결과까지 되돌릴 수 있습니다.

각 출력의 역할

다섯 방언 서식

sql-formatter를 사용하며 공백 2개, 4개 또는 탭을 고를 수 있습니다. 키워드는 대문자·소문자·원문 유지가 가능하고 식별자, 함수와 자료형의 대소문자는 설정으로 유지합니다. 구조 키워드만 대소문자를 바꿉니다. ACTION이나 NO 같은 문맥 의존 단어는 식별자 보호를 위해 원문 표기를 유지합니다.

주석을 남기는 압축

토큰 밖의 공백을 줄이고 줄 주석, 블록 주석과 실행 힌트를 남깁니다. PostgreSQL의 인접 문자열에 필요한 줄바꿈도 보존하므로 결과가 항상 한 줄이 되지는 않습니다.

독립된 구문 트리

node-sql-parser가 지원하는 MySQL, PostgreSQL, SQLite, Transact-SQL의 부분 문법을 분석합니다. JSON 내보내기는 현재 트리만 담고 편집 이력이나 이전 입력은 포함하지 않습니다.

실행 전에 알아둘 제한

데이터베이스 실행 없음
연결, 스키마 조회, 권한 검사나 EXPLAIN을 수행하지 않습니다. 정렬 성공은 문법 검증이 아니며 AST 분석 성공도 실제 데이터베이스에서 동작함을 증명하지 않습니다.
전체 스크립트는 범위 밖
저장 프로시저, 트리거, 함수 정의, BEGIN/DECLARE 블록, GO 배치, 사용자 DELIMITER, 템플릿과 클라이언트 메타 명령은 지원 범위 밖입니다. Oracle AST도 지원하지 않습니다.
AST 숫자 정밀도
십진 정수와 유효 숫자 15자리 이하의 일반 소수를 받아들이고 숫자 노드를 원문 값과 대조합니다. 지수 및 16진수 표기는 AST에서 거부합니다. 정렬과 압축은 원래 숫자 표기를 유지합니다. 소수점 앞에 숫자가 필요합니다(.5 대신 0.5).
필요한 줄바꿈 유지
압축이 한 줄을 보장하지는 않습니다. -- 뒤의 줄바꿈을 지우면 다음 문장까지 주석이 됩니다. 힌트나 실행 주석이 특정 서버에서 어떤 효과를 내는지는 검사하지 않습니다.
처리량 한도
입력은 UTF-16 단위 100,000개, 토큰 20,000개, 괄호 50단계, 문장 200개까지입니다. AST는 토큰 5,000개와 30단계입니다. 출력은 1,000,000단위까지이며 미리보기는 20,000씩 늘어나고 내보내기는 전체를 담습니다.

SQL 포맷터 질문

SQL 쿼리는 어떻게 정렬하면 좋나요?

방언과 들여쓰기를 일정하게 유지하면 조인, 조건과 하위 쿼리를 읽기 쉽습니다. 이 SQL 포맷터는 배치와 구문 트리 확인을 분리합니다. 바꾼 쿼리는 실제 데이터베이스 맥락에서도 검토하세요.

SQL 키워드를 대문자로 쓰는 이유가 있나요?

절을 눈에 띄게 만드는 스타일 관례입니다. 프로젝트에서 소문자를 쓴다면 소문자나 원문 유지를 고르세요. 문자열 내용이나 따옴표로 감싼 식별자를 대문자로 만드는 설정은 아닙니다.

줄 수를 크게 늘리지 않고 SQL을 정리할 수 있나요?

압축 모드를 선택하면 토큰과 주석을 남기고 바깥 공백을 줄입니다. 줄 주석 뒤나 PostgreSQL 인접 문자열 사이의 필수 줄바꿈은 유지하므로 무조건 한 줄로 만들지는 않습니다.

실행하지 않고 MySQL 쿼리가 유효한지 확인할 수 있나요?

AST는 이 파서가 해당 문법을 받아들이는지 알려줍니다. 실제 테이블, 열 자료형, 권한과 서버 동작은 검사할 수 없습니다. 서식 결과만 나온 경우에는 배치 작업이 성공했다는 뜻입니다.

클라이언트 메타 명령 때문에 서식 처리가 실패하는 이유는 무엇인가요?

psql의 역슬래시 명령 같은 문장은 일반 SQL이 아닌 클라이언트 지시문입니다. 원본 스크립트를 별도로 보관하고 정렬할 쿼리만 꺼내세요. 이 도구는 그 지시문을 해석하지 않습니다.

서식 문제를 발견했나요?

다음 쿼리를 살펴보세요

SQL 포맷터에서 읽기 쉬운 텍스트, 압축 텍스트 또는 지원되는 구문 트리를 확인한 뒤 편집기로 가져갈 결과를 선택하세요.