MODOO HUB ← 모두의 툴
Data · Instrument

SQL 유효성 검사

SQL 구문 체크 및 포맷팅

결과
포맷 결과

📖 SQL 유효성 검사기는 사실 파서가 아니다 가이드 보기

SQL 유효성 검사란?

이 도구의 '검증'은 실제 SQL 파서가 아니라 문자 단위로 딱 세 가지만 확인합니다 — 괄호가 열고 닫힌 개수가 맞는지, 따옴표로 시작한 문자열이 제대로 닫혔는지, 그리고 SELECT·INSERT·UPDATE 등 인식 가능한 SQL 키워드가 문장 안에 하나라도 있는지입니다. 키워드들이 올바른 순서나 문법 구조로 배치됐는지는 검사하지 않으므로, 키워드가 뒤죽박죽 섞여 있어도 이 세 조건만 만족하면 '유효함'으로 표시될 수 있습니다. '포맷' 기능 역시 SQL을 구조적으로 이해해서 다시 그리는 것이 아니라, 미리 정한 키워드 목록과 정규식으로 대문자화·줄바꿈을 적용하는 텍스트 치환 방식이라, 컬럼·테이블 이름이 우연히 키워드와 같거나 문자열 리터럴 안에 특정 단어가 들어있으면 의도치 않게 바뀔 수 있습니다.

자주 묻는 질문

구문 검증이 실제로 어떤 오류까지 잡아내나요?

괄호 개수 불일치, 닫히지 않은 문자열, 인식 가능한 SQL 문장 키워드 부재 이 세 가지뿐입니다. 컬럼명 오타, FROM 절 누락, 잘못된 JOIN 조건처럼 문법 구조 자체의 오류는 감지하지 못합니다.

검증을 통과하면 문법적으로 완벽한 SQL이라는 뜻인가요?

아니요. 예를 들어 키워드 순서가 뒤죽박죽인 문장이라도 괄호·따옴표가 맞고 인식되는 키워드가 하나라도 포함돼 있으면 '유효'로 표시될 수 있습니다. 이 도구는 실행 가능 여부가 아니라 아주 기초적인 구문 붕괴만 걸러냅니다.

컬럼명이 SQL 키워드와 같으면 포맷 결과가 어떻게 되나요?

의도와 다르게 바뀔 수 있습니다. 포맷 함수는 문맥을 구분하지 않고 미리 정한 키워드 목록(KEY, SET, ORDER, ALL 등)에 해당하는 모든 단어를 정규식으로 찾아 대문자화하므로, key나 order 같은 이름을 실제 컬럼명으로 쓴 경우에도 SQL 키워드처럼 대문자로 바뀝니다.

문자열 리터럴 안에 있는 단어도 대문자로 바뀔 수 있나요?

네. 검증(validate) 함수는 오류 검사 전에 작은따옴표 문자열 내용을 미리 제거하고 검사하지만, 포맷(format) 함수는 원본 문자열을 그대로 놓고 정규식을 적용합니다. 그래서 WHERE status = 'select'처럼 문자열 값 안에 키워드와 같은 단어가 있으면 그 값 자체가 대문자로 바뀔 수 있습니다.

서버로 SQL이 전송되나요?

아니요. 검증과 포맷 모두 브라우저 안에서 정규식과 문자열 연산만으로 처리되며, 입력한 SQL은 어디로도 전송되지 않습니다.

저장 프로시저 전체 문법도 검사하나요?

아니요. CREATE PROCEDURE 같은 키워드가 포함돼 있으면 '인식 가능한 SQL 문장'으로 통과시킬 뿐, 프로시저 본문 내부의 문법(변수 선언, 커서, 제어문 등)까지 구조적으로 검사하지는 않습니다.

쉼표 뒤에는 항상 줄바꿈이 들어가나요?

네, 이미 줄바꿈이 없는 모든 쉼표 뒤에 정규식으로 줄바꿈과 들여쓰기를 추가합니다. 이 역시 문맥을 구분하지 않는 방식이라, 문자열이나 숫자 안에 쉼표가 포함된 경우에도 똑같이 줄바꿈이 삽입될 수 있습니다.

MySQL·PostgreSQL 등 방언별 문법 차이도 구분해서 검사하나요?

아니요. 하나의 공통 키워드 목록을 기준으로 검사·포맷하므로 특정 DBMS 전용 함수나 문법까지 인식하지는 못합니다. 표준적인 SELECT/INSERT/UPDATE/DELETE/CREATE 계열 구문의 기초적인 형태 확인에 적합합니다.