MySQL에서 테이블을 생성할 때 테이블 이름을 references로 지정하면 오류가 발생합니다. 그 이유는 references가 MySQL의 예약어(reserved keyword)이기 때문입니다. 예약어는 데이터베이스 시스템 내부에서 특별한 의미로 사용되는 단어이므로, 식별자(테이블 이름, 컬럼 이름 등)로 직접 사용할 수 없습니다.
해결 방법: 백틱(`)으로 감싸기
예약어를 테이블 이름으로 반드시 사용해야 한다면, 이름을 백틱(backtick, `)으로 감싸주면 됩니다. 예를 들어 다음과 같이 작성합니다.
`references`
예제: 테이블 생성하기
백틱을 사용하여 references라는 이름의 테이블을 실제로 생성해 보겠습니다.
mysql> create table `references`(Subject text); Query OK, 0 rows affected (0.44 sec)
정상적으로 테이블이 생성된 것을 확인할 수 있습니다.
데이터 삽입하기
이제 insert 명령을 사용하여 테이블에 레코드를 추가합니다.
mysql> insert into `references` values('Introduction To MySQL');
Query OK, 1 row affected (0.28 sec)
mysql> insert into `references` values('Introduction To MongoDB');
Query OK, 1 row affected (0.15 sec)
mysql> insert into `references` values('Introduction To Spring and Hibernate');
Query OK, 1 row affected (0.13 sec)
mysql> insert into `references` values('Introduction To Java');
Query OK, 1 row affected (0.18 sec)데이터 조회하기
select 문을 사용하여 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select *from `references`;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+--------------------------------------+ | Subject | +--------------------------------------+ | Introduction To MySQL | | Introduction To MongoDB | | Introduction To Spring and Hibernate | | Introduction To Java | +--------------------------------------+ 4 rows in set (0.00 sec)
추가 팁
백틱은 MySQL에서 기본적으로 식별자를 감싸는 데 사용되는 기호입니다. 참고로 ANSI_QUOTES SQL 모드가 활성화된 환경에서는 큰따옴표(")로도 식별자를 감쌀 수 있습니다. 다만 가독성과 유지보수를 고려하면, 애초에 예약어와 겹치지 않는 테이블 이름을 사용하는 것이 가장 좋은 습관입니다.