다양한 스타일과 규칙으로 SQL 쿼리를 정리하고 보기 좋게 만드세요
한 줄에 400자가 넘게 이어진 SQL 쿼리를 읽어 본 적이 있다면 이 도구가 왜 필요한지 바로 아실 겁니다. 저장 프로시저에서 뽑아낸 쿼리, 메신저 대화에서 복사한 쿼리, 애플리케이션 로그에 찍힌 압축된 쿼리는 줄 바꿈이 없고 대소문자가 뒤섞인 채 절이 다닥다닥 붙어 옵니다. 그런 상태에서는 빠진 JOIN 조건이나 잘못 닫힌 괄호를 찾기가 거의 불가능하죠. SQL 포매터는 그 텍스트를 받아 들여쓰기가 정리된 읽기 쉬운 쿼리로 다시 세웁니다. SELECT 목록, FROM, WHERE, GROUP BY, 중첩된 서브쿼리가 각각 눈에 띄는 덩어리로 나뉘어 구조가 한눈에 들어옵니다.
쿼리를 붙여 넣거나 입력하면 결과가 자동으로 갱신됩니다. '표준' 스타일에서는 SELECT, FROM, WHERE, GROUP BY, ORDER BY, HAVING이 각각 새 줄에서 시작하고, JOIN도 줄을 바꾸며, SELECT 목록의 컬럼은 하나씩 한 줄을 차지하고, 괄호가 열릴 때마다 안쪽이 한 단계 들여쓰기되어 서브쿼리가 도드라집니다. '확장'은 쉼표마다 줄을 바꾸고, '컴팩트'는 최대 줄 길이를 넘을 때만 줄을 바꿉니다. 키워드 대소문자('대문자', '소문자', '첫 글자 대문자'), 공백과 탭, 들여쓰기 폭, 주석 제거 여부도 고를 수 있습니다. 다만 완전한 SQL 파서가 아니라 가벼운 토크나이저라서, 표준 SELECT·INSERT·UPDATE·CTE 쿼리는 잘 정리하지만 데이터베이스별 문법은 모릅니다. 'Oracle 스타일', 'MySQL 스타일', 'PostgreSQL 스타일', 'SQL Server 스타일'은 현재 '컴팩트'와 같은 결과를 냅니다.
포맷팅은 브라우저 안에서 처리되어 쿼리 텍스트가 어디로도 전송되지 않습니다. 내부 테이블 이름이나 업무 로직이 담긴 SQL이라면 중요한 부분입니다. 설정값과 최근 복사한 쿼리 20개는 로컬 저장소에 남고, '기록 지우기'로 지울 수 있습니다. 코드 리뷰에 올리기 전이나 마이그레이션 파일에 넣기 전에 한 번 정리해 두면, 한 줄로 뭉친 쿼리보다 버전 관리 diff를 읽기가 훨씬 수월해집니다.
빽빽하게 뭉친 SQL 쿼리를 들여쓰기가 정리된 읽기 쉬운 문장으로 바꿉니다.
데이터베이스 클라이언트나 로그, 코드에서 쿼리를 복사해 '원본 SQL' 칸에 붙여 넣습니다.
절마다 한 줄씩 나누려면 '표준', 쉼표마다 줄을 바꾸려면 '확장', 절을 한 줄에 모으고 최대 줄 길이에서만 줄을 바꾸려면 '컴팩트'를 고릅니다.
'고급 설정'에서 '키워드 대소문자', '들여쓰기'(공백/탭과 폭), '최대 줄 길이'를 정합니다. 설정을 바꾸면 0.5초쯤 뒤에 결과가 자동으로 다시 만들어집니다.
쓰기 전에 결과를 훑어봅니다. 서브쿼리가 기대한 대로 들여쓰기됐는지, 백슬래시 이스케이프나 달러 인용 본문처럼 데이터베이스 고유 문법이 흐트러지지 않았는지 봅니다.
'클립보드에 복사'로 정리된 쿼리를 복사해 SQL 파일, 마이그레이션 스크립트, 코드 리뷰에 붙여 넣습니다.
SELECT, FROM, WHERE, GROUP BY, ORDER BY, HAVING이 각각 새 줄에서 시작하고, '컬럼 정렬'이 켜져 있으면 SELECT 목록의 쉼표마다 줄이 바뀝니다.
괄호가 열릴 때마다 한 단계씩 들여쓰기되어 안쪽 쿼리가 바깥 쿼리보다 한 칸 들어가 보입니다.
'컴팩트'는 줄이 '최대 줄 길이'(기본 80자)를 넘을 때만 바꿉니다. 'Oracle 스타일', 'MySQL 스타일', 'PostgreSQL 스타일', 'SQL Server 스타일'도 현재는 이와 같은 결과를 냅니다.