SQL 포매터

SQL을 깔끔하게 정렬하고, 각 절의 역할을 쉬운 설명으로 분석해 보세요.

SQL 입력

들여쓰기
예약어
query.sql
보기
쿼리를 붙여넣어 정렬하거나 분석해 보세요.

SQL 정렬 및 분석은 브라우저 내에서 직접 처리됩니다. BroBroGo 서버로 어떠한 데이터도 전송되지 않습니다.

자주 묻는 질문

어떤 SQL 종류(Dialect)를 지원하나요?

표준 SQL, PostgreSQL, MySQL, MariaDB, SQL Server (T-SQL), Oracle (PL/SQL), SQLite, BigQuery, Snowflake 및 Spark SQL을 지원합니다. 사용 중인 데이터베이스에 맞는 종류를 선택하면 예약어와 따옴표 처리가 해당 엔진의 방식에 맞게 최적화됩니다.

쉬운 한국어 설명 기능은 어떻게 작동하나요?

쿼리 구조를 읽고 SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY와 같은 각 절의 역할과 문(statement)의 유형을 파악하여 쉬운 설명으로 라벨을 붙여줍니다. 이는 데이터베이스 실행 계획(Execution Plan)이 아닌 쿼리의 형태와 구조를 설명하는 것이므로, 불완전하거나 특정 벤더 전용인 SQL에서도 작동합니다.

실제 운영 환경의 쿼리를 붙여넣어도 안전한가요?

네, 안전합니다. 모든 정렬 및 분석 작업은 사용자의 브라우저 내에서 완전히 로컬로 실행되므로, 입력하신 SQL 데이터가 페이지 외부로 절대 전송되지 않습니다.

SQL 가독성의 중요성과 정렬 도구의 역할

복잡하게 얽히고설킨 SQL 코드는 데이터베이스 관리자(DBA), 데이터 분석가, 개발자 간의 협업을 저해하고 디버깅 속도를 늦추는 주된 원인이 됩니다. 줄바꿈과 들여쓰기가 일관되지 않은 쿼리는 구조를 한눈에 파악하기 어렵기 때문에 사소한 구문 오류를 찾는 데에도 많은 시간을 허비하게 만듭니다.

SQL 포매터는 최대 300,000자 이하의 SQL 쿼리를 입력받아 가독성이 높은 깔끔한 코드로 즉시 재정렬합니다. 사용자는 2칸 공백, 4칸 공백, 탭(tab) 중에서 원하는 들여쓰기 스타일을 선택할 수 있으며, SQL 예약어의 대소문자 규칙도 대문자, 소문자, 기존 상태 유지(Keep) 중 하나로 지정하여 일관된 코드 스타일을 유지할 수 있습니다.

다양한 SQL 종류 지원 및 구문 처리 규칙

데이터베이스 엔진마다 지원하는 SQL 문법과 예약어, 따옴표 처리 방식에는 미세한 차이가 존재합니다. 본 도구는 다음과 같은 총 10가지의 다양한 SQL 종류(Dialect)를 지원하여 각 엔진의 특성에 맞는 최적화된 정렬 결과를 제공합니다:

  • 표준 SQL (Standard SQL)
  • PostgreSQL
  • MySQL
  • MariaDB
  • SQL Server (T-SQL)
  • Oracle (PL/SQL)
  • SQLite
  • BigQuery
  • Snowflake
  • Spark SQL

정렬을 수행할 때 입력된 SQL에 구문 오류가 있는 경우, 도구는 "이 SQL을 정렬할 수 없습니다. 구문을 확인해 주세요."라는 오류 메시지를 표시하며 기존에 출력되어 있던 결과물은 그대로 유지합니다. 입력 가능한 최대 글자 수인 300,000자를 초과하는 경우에는 "쿼리 크기가 너무 커서 처리할 수 없습니다. 더 작은 쿼리로 시도해 주세요."라는 메시지가 나타납니다. "지우기" 버튼을 클릭하면 입력 영역과 출력 영역이 모두 비워지고 발생했던 오류 세부 정보가 숨겨지며 "지워졌습니다."라는 상태가 표시됩니다. 또한, 사용자의 편의를 위해 작성 중인 초안과 테마 설정은 브라우저 내에 로컬로 자동 저장됩니다.

쿼리 구조 분석과 실행 계획의 차이점

이 도구는 정렬 기능 외에도 SQL 쿼리가 수행하는 작업을 문장(statement) 및 절(clause) 단위로 나누어 쉬운 한국어 설명으로 분석해 주는 기능을 제공합니다.

이 분석 기능은 데이터베이스 엔진이 쿼리를 수행하는 물리적 경로를 보여주는 '데이터베이스 실행 계획(Execution Plan)'이 아닙니다. 대신 SQL의 논리적 구조와 형태를 분석하여 설명하는 방식이므로, 실제 데이터베이스에 연결하지 않고도 작동하며 불완전하거나 특정 벤더에 종속적인 SQL 문장에서도 구조적 분석 결과를 제공할 수 있습니다. 하나의 쿼리 내에 여러 개의 SQL 문이 포함되어 있는 경우 최대 25개 문장까지 분석하여 보여주며, 이를 초과하면 "처음 25개 문장만 표시됩니다."라는 안내가 함께 표시됩니다.

SQL 문장 유형별 분석 정의

도구는 입력된 SQL 문장의 성격을 분석하여 다음과 같은 유형으로 분류하고 그 역할을 설명합니다:

SQL 문장 유형 설명 내용
SELECT 데이터를 변경하지 않고 행을 읽어와 반환하는 쿼리입니다.
INSERT 테이블에 새로운 행을 추가합니다.
UPDATE 기존 행의 값을 변경합니다.
DELETE 테이블에서 행을 삭제합니다.
CREATE 테이블, 뷰, 인덱스 등 새로운 객체를 정의합니다.
ALTER 기존 객체의 정의를 변경합니다.
DROP 데이터베이스에서 객체를 영구적으로 제거합니다.
TRUNCATE 테이블을 비우고 모든 행을 삭제합니다.
WITH 이후 쿼리에서 사용할 임시 결과 집합(CTE)을 정의합니다.
MERGE 행의 삽입, 업데이트, 삭제 작업을 하나의 결합된 연산으로 수행합니다.
기타 (OTHER) SQL 문입니다.

주요 SQL 절의 역할 분석

각 문장 내부의 세부 구성 요소인 절(clause)에 대해서도 다음과 같이 구체적인 역할 분석을 제공합니다:

  • SELECT / SELECT DISTINCT: 반환할 열(column)과 표현식 또는 중복 행을 제거하고 반환할 열을 나타냅니다.
  • FROM / JOIN: 데이터를 읽어올 대상 테이블(또는 서브쿼리)과 각 행을 다른 테이블의 일치하는 행과 결합하는 조건을 분석합니다.
  • WHERE / HAVING: 조건에 일치하는 행을 필터링하거나, 그룹화가 완료된 집계 결과를 필터링하는 역할을 설명합니다.
  • GROUP BY / ORDER BY: 행을 그룹으로 묶어 집계 함수를 계산할 수 있게 하거나 결과 행들을 정렬하는 기준을 보여줍니다.
  • LIMIT / OFFSET: 반환할 최대 행 수를 제한하거나 결과를 반환하기 전에 건너뛸 행의 수를 지정합니다.
  • UNION: 해당 결과를 다른 쿼리의 결과와 결합합니다.
  • VALUES / INTO: 삽입할 행의 값들과 새로운 행이 삽입될 대상 테이블을 정의합니다.
  • SET / UPDATE / DELETE FROM: 새로 지정할 열의 값, 행을 변경할 대상 테이블, 그리고 행을 삭제할 대상 테이블을 각각 구분하여 설명합니다.

브라우저 내 로컬 처리 방식의 보안성

본 도구를 사용할 때 입력하는 모든 SQL 코드의 정렬 및 분석 작업은 외부 서버로 전송되지 않고 사용자의 웹 브라우저 내에서 완전히 로컬로 실행됩니다. 입력한 SQL 데이터가 BroBroGo 서버를 포함한 외부 페이지로 절대 업로드되거나 전송되지 않으므로, 민감한 데이터베이스 구조나 쿼리 내용을 다룰 때에도 안심하고 정렬 및 분석 기능을 활용할 수 있습니다.

자주 묻는 질문 (FAQ)

Q: 어떤 SQL 종류(Dialect)를 지원하나요?
A: 표준 SQL, PostgreSQL, MySQL, MariaDB, SQL Server (T-SQL), Oracle (PL/SQL), SQLite, BigQuery, Snowflake 및 Spark SQL을 지원합니다. 사용 중인 데이터베이스에 맞는 종류를 선택하면 예약어와 따옴표 처리가 해당 엔진의 방식에 맞게 최적화됩니다.

Q: 쉬운 한국어 설명 기능은 어떻게 작동하나요?
A: 쿼리 구조를 읽고 SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY와 같은 각 절의 역할과 문(statement)의 유형을 파악하여 쉬운 설명으로 라벨을 붙여줍니다. 이는 데이터베이스 실행 계획(Execution Plan)이 아닌 쿼리의 형태와 구조를 설명하는 것이므로, 불완전하거나 특정 벤더 전용인 SQL에서도 작동합니다.

Q: 실제 운영 환경의 쿼리를 붙여넣어도 안전한가요?
A: 네, 안전합니다. 모든 정렬 및 분석 작업은 사용자의 브라우저 내에서 완전히 로컬로 실행되므로, 입력하신 SQL 데이터가 페이지 외부로 절대 전송되지 않습니다.

Q: 입력할 수 있는 SQL 크기에 제한이 있나요?
A: 입력 가능한 SQL의 최대 길이는 300,000자입니다. 이 크기를 초과하는 대용량 쿼리를 입력하면 크기 초과 오류 메시지가 표시되므로 더 작은 단위로 나누어 입력해야 합니다.