SQL 포매터
복잡한 SQL 쿼리를 보기 좋게 정렬합니다. MySQL, PostgreSQL 등 다양한 방언을 지원합니다.
SQL 입력
결과
SQL 포매터 사용 안내
한 줄로 길게 늘어진 SQL 쿼리를 사람이 읽기 좋게 들여쓰기ㆍ줄바꿈하여 정렬합니다. 코드 리뷰, 디버깅, 문서화에 유용합니다.
지원 방언
Standard SQL, MySQL, PostgreSQL, SQLite, MS SQL(T-SQL), BigQuery 등 주요 데이터베이스의 방언을 지원합니다. 각 방언별 키워드와 함수가 정확히 인식됩니다.
안전성
모든 처리는 브라우저에서만 이루어집니다. 운영 DB 쿼리나 민감한 SQL도 안전하게 가공할 수 있습니다.
방언별 주의해야 할 차이
- LIMIT vs TOP vs FETCH - MySQLㆍPostgreSQL은
LIMIT 10, SQL Server는SELECT TOP 10, Oracleㆍ표준 SQL은FETCH FIRST 10 ROWS ONLY. 다른 DB로 옮길 때 흔한 버그. - 문자열 연결 - 표준은
||, MySQL은CONCAT(), SQL Server는+. MySQL의||는 OR로 해석되어 의도와 전혀 다른 결과가 나옵니다. - 날짜 함수 -
NOW()(MySQL)ㆍCURRENT_TIMESTAMP(표준)ㆍGETDATE()(SQL Server)ㆍCURRENT_DATETIME()(BigQuery). 포팅 시 반드시 교체. - 식별자 인용 - MySQL은
`backtick`, 표준ㆍPostgreSQL은"double quote", SQL Server는[bracket]. 대소문자 구분 정책도 함께 다릅니다. - Boolean - PostgreSQL은
BOOLEAN기본형, MySQL은TINYINT(1), Oracle은 NUMBER(1)로 에뮬레이션. - RETURNING 절 - PostgreSQLㆍSQLite 3.35+ㆍMariaDB는
INSERT ... RETURNING *지원. MySQL 8은 미지원, OUTPUT(SQL Server)으로 대체.
SQL 안티패턴 - 자주 보는 5가지
- SELECT * - 프로덕션에서는 필요한 컬럼만 명시. 스키마 변경 시 의도치 않은 컬럼 추가ㆍ성능 저하ㆍ네트워크 낭비 방지.
- WHERE 함수 래핑 -
WHERE DATE(created_at) = '2026-05-05'는 인덱스를 못 쓰게 합니다.WHERE created_at >= '2026-05-05' AND created_at < '2026-04-21'로 범위 쿼리. - N+1 쿼리 - 반복문 안에서 쿼리 실행. JOIN 또는 IN 절로 한 번에 조회.
- 암시적 타입 변환 -
WHERE phone = 01012345678(숫자) vs'01012345678'(문자열). 타입이 안 맞으면 인덱스 무력화 + 로케일 따라 결과 상이. - ORDER BY 랜덤 정렬 -
ORDER BY RAND()는 전체 테이블 스캔. 큰 테이블은 Tablesample(BigQuery)ㆍsampling 서브쿼리로 우회.
공식 근거ㆍ참고 자료
- PostgreSQL SQL Commands - 표준에 가장 충실한 방언의 공식 레퍼런스.
- MySQL Reference Manual - 함수ㆍ쿼리 구문 상세.
- BigQuery Standard SQL - 데이터웨어하우스 방언.
- T-SQL Reference (SQL Server) - TOPㆍIDENTITYㆍOUTPUT 등 MS 확장 문법.
- SQLite SQL Syntax - 경량 DB 구문.
- sql-formatter (오픈소스) - 본 포매터가 내부적으로 사용하는 라이브러리.
- AI 교차 검증: 본 페이지의 인용 수치ㆍ표준 정의ㆍ기술 사양은 사람이 직접 작성한 뒤, 정확성 확인을 위해 AI 교차 검증을 거쳤습니다.
쿼리 결과를 JSON으로 가공한다면 JSON 포매터ㆍ변환기를, HTMLㆍJS 코드를 함께 정리하려면 HTMLㆍCSSㆍJS 포매터도 활용하세요.
자주 묻는 질문
Stored Procedure나 트리거도 포맷되나요?
기본적인 DDL/DML과 일부 절차적 SQL을 지원합니다. 매우 복잡한 PL/SQL이나 T-SQL 블록은 일부 한계가 있을 수 있습니다.
실행 가능한 결과가 나오나요?
네. 정렬은 시각적 변경만 수행하며 SQL 의미는 그대로 유지됩니다.
어떤 SQL 방언을 지원하나요?
표준 SQL에 더해 MySQL, PostgreSQL, Oracle PL/SQL, SQL Server T-SQL, BigQuery 등 주요 방언의 키워드를 인식합니다. 방언별 특수 함수는 일반 식별자로 처리될 수 있습니다.