MySQL에서 'group' 예약어로 인한 구문 오류란?
MySQL에서 group은 예약어(reserved keyword)이기 때문에 테이블 이름으로 그대로 사용할 수 없습니다. 예약어를 테이블 이름으로 사용하면 SELECT 쿼리 실행 시 구문 오류(syntax error)가 발생하게 됩니다.
이러한 오류를 피하려면 테이블 이름 'group' 앞뒤를 역따옴표(backtick, `)로 감싸 주어야 합니다. 역따옴표로 감싸면 MySQL이 해당 이름을 예약어가 아닌 식별자(테이블 이름)로 인식합니다.
1. 역따옴표를 사용하여 테이블 생성하기
다음 예제를 통해 `group` 테이블을 생성해 보겠습니다.
mysql> create table `group`
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(20)
-> );
Query OK, 0 rows affected (1.26 sec)2. insert 명령으로 레코드 삽입하기
insert 명령을 사용하여 테이블에 레코드를 추가합니다.
mysql> insert into `group`(Name) values('Chris');
Query OK, 1 row affected (0.47 sec)
mysql> insert into `group`(Name) values('David');
Query OK, 1 row affected (0.36 sec)
mysql> insert into `group`(Name) values('Mike');
Query OK, 1 row affected (0.26 sec)
mysql> insert into `group`(Name) values('Sam');
Query OK, 1 row affected (0.16 sec)3. select 문으로 전체 레코드 조회하기
select 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select * from `group`;
위 쿼리는 다음과 같은 결과를 출력합니다.
+----+-------+ | Id | Name | +----+-------+ | 1 | Chris | | 2 | David | | 3 | Mike | | 4 | Sam | +----+-------+ 4 rows in set (0.00 sec)
정리 및 참고 사항
MySQL에는 group, order, select, table 등 SQL 문법에서 특별한 의미를 가지는 예약어들이 많습니다. 이러한 예약어를 테이블이나 컬럼 이름으로 사용해야 하는 상황이라면 반드시 역따옴표(`)로 감싸야 합니다.
다만 가능하다면 groups, user_group처럼 예약어와 겹치지 않는 이름을 사용하는 것이 좋습니다. 예약어 사용을 피하면 쿼리 작성 시 실수를 줄일 수 있고, 코드의 가독성과 유지보수성도 향상됩니다.