SQL 초보자 필독! 가장 자주 뜨는 Syntax 에러 코드 원인과 완벽 해결책 TOP 5
데이터베이스(DB)의 세계에 처음 발을 들인 초보자들이 SQL 쿼리를 작성할 때 가장 두려워하는 것은 무엇일까요? 바로 심혈을 기울여 작성한 쿼리를 실행(Run)했을 때, 결과 표 대신 화면 하단에 무자비하게 쏟아지는 새빨간 '에러 메시지(Error Message)'들일 것입니다. 특히 논리적인 흐름은 다 맞았는데 단순히 콤마(,) 하나를 빠뜨렸거나 철자를 틀려서 발생하는 '신택스 에러(Syntax Error, 문법 오류)'는 초보자들의 멘탈을 가장 크게 뒤흔드는 주범입니다. 에러 코드는 얼핏 보면 복잡한 외계어 같지만, 사실 데이터베이스 엔진이 "주인님, 몇 번째 줄에 이런 오타가 있어서 제가 실행을 못하겠어요!"라고 아주 친절하게 알려주는 일종의 힌트입니다. 따라서 에러 메시지를 읽고 해석하는 방법만 조금 익혀두면, 구글링에 의존하지 않고도 단 10초 만에 스스로 오류를 수정하고 퇴근 시간을 앞당길 수 있습니다. 오늘은 실무와 SQLD 자격증 실습 과정에서 오라클(Oracle)과 MySQL을 막론하고 가장 빈번하게 마주치는 악명 높은 문법 에러 코드 5가지의 정확한 원인과, 이를 단숨에 타파할 수 있는 명쾌한 해결책을 아주 알기 쉽게 총정리해 드립니다. 더 이상 빨간 줄을 두려워하지 마세요!
1. ORA-00904 / Error 1054: "부르신 컬럼은 없는 컬럼입니다"
오라클에서는 'ORA-00904: 유효하지 않은 식별자(invalid identifier)', MySQL에서는 'Error 1054: Unknown column'으로 나타나는 이 에러는 초보자들이 하루에도 수십 번씩 마주치는 단골손님입니다. 이 에러의 원인은 99.9% 확률로 '단순 오타'입니다. SELECT 절이나 WHERE 절에 적어 넣은 컬럼의 철자가 실제 테이블에 존재하는 컬럼명과 다를 때 데이터베이스가 해당 컬럼을 찾지 못해 짜증을 내는 것입니다. 예를 들어 테이블에는 `customer_id`라고 저장되어 있는데 쿼리에는 `custom_id`나 `customer_no`라고 잘못 적은 경우입니다. 또한 문자열 데이터를 조회할 때 홑따옴표(' ')로 감싸지 않으면 DB는 이를 문자가 아닌 '컬럼명'으로 인식해 버리므로 이 에러를 뱉어냅니다. 해결책은 매우 간단합니다. 에러 메시지 옆에 친절하게 표시된 오타 컬럼명을 확인하고, DESC 테이블명 명령어를 통해 실제 테이블의 스키마 구조와 철자를 다시 한번 꼼꼼히 대조해 보면 바로 해결됩니다.





2. ORA-00942 / Error 1146: "그런 테이블은 제게 없습니다"
두 번째로 자주 보는 에러는 오라클의 'ORA-00942: 테이블 또는 뷰가 존재하지 않습니다(table or view does not exist)'와 MySQL의 'Error 1146: Table doesn't exist'입니다. 1번 에러가 컬럼명을 틀린 것이라면, 이것은 아예 FROM 절 뒤에 적은 '테이블명'을 틀렸을 때 발생합니다. `employees` 테이블을 `employee`라고 단수형으로 적는 등 끝에 's' 하나를 빼먹어 발생하는 경우가 가장 흔합니다. 철자가 완벽하게 맞는데도 이 에러가 뜬다면, 현재 접속해 있는 데이터베이스(스키마) 계정이 올바른지 확인해야 합니다. 실습용 HR 계정에 접속해야 하는데 시스템 관리자(SYSTEM) 계정에 접속해서 테이블을 찾고 있다면 당연히 테이블이 보이지 않습니다. 이럴 때는 `SELECT * FROM hr.employees;` 처럼 테이블명 앞에 스키마 이름을 명시적으로 붙여주는 습관을 들이면 오류를 획기적으로 줄일 수 있습니다.
3. ORA-00933 / Error 1064: 쉼표와 키워드 순서의 대참사
오라클의 'ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다(SQL command not properly ended)'와 MySQL의 'Error 1064: You have an error in your SQL syntax'는 구문 구조가 아예 망가졌을 때 뜹니다. 이 에러는 주로 여러 개의 컬럼을 나열할 때 마지막 컬럼 뒤에 불필요한 콤마(,)를 하나 더 찍어놓고 FROM 절로 넘어가버렸을 때 발생합니다. (예: `SELECT col1, col2, FROM table;`) 또한 SQL의 절대적인 실행 문법 순서인 'SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY'의 순서를 무시하고, WHERE 절을 GROUP BY 뒤에 적는 등 키워드 위치를 뒤죽박죽 섞어버렸을 때도 이 에러가 발생합니다. 해결책은 작성한 쿼리문의 맨 끝에 세미콜론(;)이 잘 닫혀 있는지 확인하고, 불필요한 쉼표나 괄호의 짝이 맞는지 하나씩 찬찬히 점검해 보는 수밖에 없습니다.





4. ORA-00937 / Error 1140: 묶지 않으면 계산할 수 없습니다 (GROUP BY 누락)
통계 데이터를 추출할 때 정말 자주 마주치는 악몽 같은 에러입니다. 오라클 기준 'ORA-00937: 단일 그룹의 그룹 함수가 아닙니다(not a single-group group function)'라는 길고 어려운 문장으로 출력됩니다. 이 에러는 SUM(합계), AVG(평균), COUNT(개수)와 같은 다중 행 집계 함수를 사용할 때, SELECT 절에 집계 함수와 일반 컬럼을 같이 적어놓고 정작 맨 뒤에 'GROUP BY' 절을 빼먹었을 때 100% 발생합니다. 부서별(department_id) 급여 평균(AVG)을 구하려면, 반드시 쿼리 하단에 `GROUP BY department_id`를 명시하여 "부서 단위로 데이터를 묶어서 평균을 내라"고 친절하게 알려주어야만 DB가 제대로 계산을 수행할 수 있습니다. 집계 함수를 쓸 때는 항상 일반 컬럼들이 GROUP BY 절에 빠짐없이 들어갔는지 크로스 체크하는 습관을 들이세요.
5. ORA-00923: "FROM 키워드가 사라졌습니다!" (콤마 누락의 비극)
오라클을 사용할 때 유독 자주 보이는 'ORA-00923: FROM 키워드가 있어야 할 곳에 없습니다(FROM keyword not found where expected)' 에러는, 그 문장 그대로 FROM 절을 까먹고 안 썼을 때도 뜨지만, 더 흔한 이유는 따로 있습니다. 바로 SELECT 절에서 여러 컬럼을 나열할 때 중간에 **'쉼표(,)'를 하나 빼먹었기 때문**입니다. 예를 들어 `SELECT emp_id emp_name FROM employees` 라고 적게 되면, DB 엔진은 두 번째 컬럼인 `emp_name`을 첫 번째 컬럼인 `emp_id`의 별칭(Alias, AS)으로 오해해 버립니다. 별칭이 끝났으니 그다음에는 당연히 FROM 키워드가 와야 하는데 밑도 끝도 없이 또 문자가 이어지니 어리둥절해서 에러를 뱉는 것입니다. 에러 메시지가 FROM 절을 찾고 있더라도, 실제 범인은 그 윗줄인 SELECT 절의 콤마 누락일 확률이 대단히 높으므로 당황하지 말고 윗줄을 살펴보시길 바랍니다. 이 5가지 법칙만 외워두셔도 초보자 시절의 에러 해결 스트레스가 절반 이상 줄어들 것입니다.






