MySQL SELECT 구문 오류의 원인
MySQL에서 select ClientId, ClientName, ClientAge, from tablename과 같은 쿼리를 실행하면 오류가 발생합니다. 원인은 컬럼 이름 목록의 끝, 즉 'from tablename' 바로 앞에 불필요한 쉼표(,)가 있기 때문입니다.
실제로 이런 오류 메시지를 보셨을 겁니다:
mysql> select ClientId,ClientName,ClientAge, from DemoTable1391; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from DemoTable1391' at line 1
ERROR 1064는 SQL 문법 오류를 의미하는 코드로, MySQL이 from 키워드 앞의 잘못된 위치에 있는 쉼표를 해석하지 못해 발생합니다. SELECT 절에서 컬럼을 나열할 때는 각 컬럼 사이에만 쉼표를 넣어야 하며, 마지막 컬럼 뒤에는 쉼표를 붙이면 안 됩니다.
오류 수정 방법
해결 방법은 간단합니다. 마지막 쉼표를 제거하면 됩니다. 실제 예제를 통해 확인해 보겠습니다.
1. 테이블 생성
먼저 예제용 테이블을 생성합니다.
mysql> create table DemoTable1391
-> (
-> ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ClientName varchar(20),
-> ClientAge int
-> );
Query OK, 0 rows affected (0.50 sec)2. 데이터 삽입
INSERT 문을 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable1391(ClientName,ClientAge) values('Chris',21);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1391(ClientName,ClientAge) values('Bob',23);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1391(ClientName,ClientAge) values('David',24);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1391(ClientName,ClientAge) values('Mike',28);
Query OK, 1 row affected (0.24 sec)3. 전체 레코드 조회
SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select * from DemoTable1391;
실행 결과는 다음과 같습니다.
+----------+------------+-----------+ | ClientId | ClientName | ClientAge | +----------+------------+-----------+ | 1 | Chris | 21 | | 2 | Bob | 23 | | 3 | David | 24 | | 4 | Mike | 28 | +----------+------------+-----------+ 4 rows in set (0.00 sec)
4. 올바른 SELECT 문 작성
아래가 오류 없이 정상적으로 동작하는, 즉 올바른 방식으로 작성된 SELECT 문입니다. 마지막 컬럼인 ClientAge 뒤에 쉼표가 없다는 점에 주목하세요.
mysql> select ClientId,ClientName,ClientAge from DemoTable1391;
정상적으로 실행되면 다음과 같은 결과가 출력됩니다.
+----------+------------+-----------+ | ClientId | ClientName | ClientAge | +----------+------------+-----------+ | 1 | Chris | 21 | | 2 | Bob | 23 | | 3 | David | 24 | | 4 | Mike | 28 | +----------+------------+-----------+ 4 rows in set (0.00 sec)
정리
MySQL에서 ERROR 1064 문법 오류가 발생하면 가장 먼저 쿼리문의 쉼표 위치를 확인해 보세요. 특히 SELECT 절의 마지막 컬럼 뒤에 쉼표가 남아 있는 경우가 많습니다. 컬럼 목록은 컬럼과 컬럼 사이에만 쉼표를 사용하고, FROM 키워드 직전에는 쉼표가 없어야 한다는 규칙만 기억하면 이런 오류는 쉽게 예방할 수 있습니다.