Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 예약 키워드로 테이블 생성 시 발생하는 구문 오류와 해결 방법

문제 상황: 예약 키워드 "groups"로 인한 MySQL 구문 오류

MySQL에서 테이블을 생성할 때 예약 키워드(reserved keyword)를 테이블 이름으로 그대로 사용하면 구문 오류가 발생합니다. 대표적인 예가 바로 "groups"입니다. "groups"는 MySQL에서 예약된 키워드이기 때문에 일반적인 방식으로는 테이블 이름으로 사용할 수 없습니다.

실제로 "groups"라는 이름으로 테이블을 생성하려고 하면 다음과 같은 오류가 발생합니다.

mysql> create table groups
-> (
-> id int,
-> name varchar(40)
-> );
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 'groups
(
id int,
name varchar(40)
)' at line 1

위와 같이 ERROR 1064 구문 오류가 출력되며, 테이블 생성에 실패하게 됩니다.

해결 방법: 백틱(Backticks) 사용하기

예약 키워드를 테이블 이름으로 사용하려면 백틱(backtick, `)으로 이름을 감싸주면 됩니다. 백틱은 MySQL에게 해당 문자열을 식별자(identifier)로 취급하도록 지시하는 역할을 합니다.

백틱을 적용하여 다시 테이블을 생성해 보겠습니다.

mysql> create table `groups`
-> (
-> id int,
-> name varchar(40)
-> )
-> ;
Query OK, 0 rows affected (3.08 sec)

이번에는 정상적으로 테이블이 생성되었습니다.

1. 데이터 삽입하기

INSERT 명령을 사용하여 테이블에 레코드를 추가합니다. 이때에도 테이블 이름을 반드시 백틱으로 감싸야 합니다.

mysql> insert into `groups` values(10,'John');
Query OK, 1 row affected (0.30 sec)

mysql> insert into `groups` values(11,'Bob');
Query OK, 1 row affected (0.32 sec)

mysql> insert into `groups` values(12,'Mike');
Query OK, 1 row affected (0.40 sec)

2. 데이터 조회하기

SELECT 문을 사용하여 테이블의 레코드를 확인할 수 있습니다.

mysql> select *from `groups`;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+------+------+
| id   | name |
+------+------+
|   10 | John |
|   11 | Bob  |
|   12 | Mike |
+------+------+
3 rows in set (0.04 sec)

정리

MySQL에서 "groups"처럼 예약 키워드에 해당하는 이름으로 테이블을 생성하면 ERROR 1064 구문 오류가 발생합니다. 이 경우 백틱(`)으로 테이블 이름을 감싸주면 예약 키워드라도 정상적으로 사용할 수 있습니다. 다만 가독성과 유지보수를 고려하면, 가능한 한 예약 키워드와 겹치지 않는 테이블 이름을 사용하는 것이 좋습니다.