MySQL에서 order는 예약어(reserved word)입니다. 따라서 이 단어를 테이블 이름으로 그대로 사용하면 쿼리 오류가 발생합니다.
해결 방법: 백틱(Backticks) 사용하기
예약어를 테이블 이름이나 컬럼 이름으로 사용하려면 이름을 백틱(`)으로 감싸주어야 합니다. 아래 예제를 통해 실제 동작 과정을 살펴보겠습니다.
1. 백틱으로 테이블 생성하기
mysql> create table `order`
-> (
-> StudentId int
-> );
Query OK, 0 rows affected (1.78 sec)`order`라는 이름의 테이블이 정상적으로 생성되었습니다.
2. INSERT 명령으로 데이터 삽입하기
mysql> insert into `order` values(101); Query OK, 1 row affected (0.26 sec) mysql> insert into `order` values(210); Query OK, 1 row affected (0.18 sec) mysql> insert into `order` values(190); Query OK, 1 row affected (0.28 sec) mysql> insert into `order` values(180); Query OK, 1 row affected (0.46 sec) mysql> insert into `order` values(205); Query OK, 1 row affected (0.28 sec)
총 5개의 학생 ID(StudentId)를 테이블에 삽입했습니다.
3. SELECT 문으로 전체 레코드 조회하기
mysql> select * from `order`;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+-----------+ | StudentId | +-----------+ | 101 | | 210 | | 190 | | 180 | | 205 | +-----------+ 5 rows in set (0.00 sec)
4. ORDER BY 절과 함께 사용하기
테이블 이름뿐 아니라 ORDER BY 절까지 포함된 쿼리에서도 백틱을 사용하면 충돌 없이 정상 실행됩니다. 아래는 `order` 테이블에서 StudentId를 내림차순으로 정렬하여 가장 큰 값 하나만 조회하는 쿼리입니다.
mysql> select * from `order` order by StudentId desc limit 1;
실행 결과는 다음과 같습니다.
+-----------+ | StudentId | +-----------+ | 210 | +-----------+ 1 row in set (0.03 sec)
정리
order처럼 MySQL의 예약어는 테이블 이름으로 직접 사용할 수 없으며, 반드시 백틱(`)으로 감싸야 합니다. 다만 가독성과 유지보수를 고려하면, 애초에 orders처럼 복수형 또는 다른 이름으로 테이블을 설계하는 것이 더 안전하고 권장되는 방법입니다.