로그나 ORM이 뱉어낸 쿼리는 대개 한 줄로 길게 이어져 있어서 어디까지가 조건이고 어디부터 정렬인지 읽어 내기 어렵습니다. 이 페이지는 그런 쿼리를 절 단위로 줄을 나눠 다시 배치하고, 반대로 잘 정돈된 쿼리를 한 줄로 압축해 코드 문자열에 넣기 좋게 만들어 줍니다.
정렬 모드는 SELECT, FROM, WHERE, GROUP BY, ORDER BY, HAVING, LIMIT, OFFSET, UNION, 각종 JOIN과 ON, INSERT INTO, UPDATE, DELETE FROM 같은 주요 절을 만날 때마다 새 줄을 시작합니다. AND와 OR도 줄을 바꿔서 조건이 여러 개 붙은 WHERE 절을 한눈에 세어 볼 수 있어요. 키워드 대문자 옵션을 켜 두면 소문자로 쓴 select도 SELECT로 통일되고, 옵션을 끄면 원래 쓰인 대소문자를 그대로 둡니다.
처리 전에 쿼리를 토큰 단위로 쪼개면서 따옴표로 감싼 문자열과 백틱 식별자, 그리고 주석을 따로 구분합니다. 그래서 문자열 값 안에 우연히 select 같은 단어가 들어 있어도 키워드로 오인해 대문자로 바꾸거나 줄을 나누지 않습니다. 다만 압축 모드는 한 줄로 만드는 것이 목적이라 주석을 제거한다는 점, 그리고 서브쿼리 안쪽을 계단식으로 더 깊게 들여쓰지는 않는다는 점은 미리 알아 두세요. 처리는 전부 브라우저에서 일어나므로 실제 운영 쿼리를 붙여넣어도 밖으로 나가지 않습니다.
A현재 구현은 주요 절 단위로 줄을 나누는 데 집중하고 괄호 깊이에 따른 계단식 들여쓰기는 적용하지 않습니다. 중첩이 깊은 쿼리는 서브쿼리만 따로 떼어 한 번 더 돌려 보면 읽기 편합니다.
A의도한 동작입니다. 한 줄로 만들면 뒤따르는 문장이 줄 주석에 통째로 먹히기 때문에 안전을 위해 두 줄 주석과 블록 주석을 모두 제거합니다. 주석을 보존해야 한다면 정렬 모드를 쓰세요.
A바뀌지 않습니다. 처리 전에 작은따옴표·큰따옴표·백틱으로 감싼 부분과 주석을 별도 토큰으로 분리해 두고 그 안쪽은 손대지 않습니다. 값에 소문자 from이 들어 있어도 그대로 남습니다.
A되지 않습니다. 미리 정해 둔 SQL 예약어 목록에 들어 있는 단어만 대문자로 바꾸고, 식별자는 원래 표기를 유지합니다. 대소문자를 구분하는 데이터베이스에서도 안전합니다.
A표준에 가까운 문법이라면 대체로 정리됩니다. 다만 예약어 목록이 공통 키워드 중심이라 특정 제품에만 있는 함수나 힌트 구문은 일반 토큰으로 취급되어 줄바꿈 대상이 되지 않습니다.
A실행도 검증도 하지 않습니다. 데이터베이스에 연결하는 기능 자체가 없고, 글자를 재배치하는 텍스트 도구입니다. 문법 오류가 있어도 그대로 모양만 정리해 출력합니다.
A기록되지 않습니다. 토큰화와 재조립 모두 브라우저 안에서 끝나고 이 페이지에는 데이터를 전송하는 코드가 없습니다. 실제 테이블명이 드러나는 쿼리도 부담 없이 넣을 수 있어요.
A됩니다. 세미콜론을 만나면 그 자리에서 줄을 끊기 때문에 문장이 여러 개인 스크립트도 한 번에 정리됩니다.