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

MySQL 테이블 이름으로 'references' 사용 시 오류 발생하는 이유와 해결 방법

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 모드가 활성화된 환경에서는 큰따옴표(")로도 식별자를 감쌀 수 있습니다. 다만 가독성과 유지보수를 고려하면, 애초에 예약어와 겹치지 않는 테이블 이름을 사용하는 것이 가장 좋은 습관입니다.