MySQL에서 order는 테이블을 정렬하는 데 사용되는 예약어(키워드)입니다. 따라서 테이블 이름을 그냥 order로 지정하면 SQL 문법 오류가 발생합니다. 이 문제를 해결하려면 테이블 이름 앞뒤에 백틱(`)을 붙여야 합니다. 백틱으로 감싸면 MySQL이 해당 단어를 예약어가 아닌 일반적인 테이블 또는 컬럼 이름으로 인식하게 됩니다.
기본 문법
백틱을 사용해 'order' 테이블을 생성하는 기본 문법은 다음과 같습니다.
CREATE TABLE `order`
(
yourColumnName1 dataType,
yourColumnName2 dataType,
yourColumnName3 dataType,
...
N
);테이블 생성 예제
실제로 'order'라는 이름의 테이블을 만들어 보겠습니다.
mysql> create table `order`
-> (
-> Id int,
-> Price int
-> );
Query OK, 0 rows affected (0.66 sec)위 쿼리를 실행하면 Id와 Price 두 개의 컬럼을 가진 'order' 테이블이 성공적으로 생성됩니다.
데이터 삽입하기
이제 INSERT 명령을 사용해 테이블에 레코드를 추가해 보겠습니다.
mysql> insert into `order` values(1,200); Query OK, 1 row affected (0.21 sec) mysql> insert into `order` values(2,100); Query OK, 1 row affected (0.17 sec) mysql> insert into `order` values(3,300); Query OK, 1 row affected (0.20 sec) mysql> insert into `order` values(4,1200); Query OK, 1 row affected (0.13 sec) mysql> insert into `order` values(5,1000); Query OK, 1 row affected (0.18 sec) mysql> insert into `order` values(6,7000); Query OK, 1 row affected (0.20 sec) mysql> insert into `order` values(7,900); Query OK, 1 row affected (0.16 sec) mysql> insert into `order` values(8,10000); Query OK, 1 row affected (0.18 sec) mysql> insert into `order` values(9,1100); Query OK, 1 row affected (0.30 sec) mysql> insert into `order` values(10,500); Query OK, 1 row affected (0.18 sec)
저장된 데이터 조회하기
SELECT 문을 사용해 테이블의 모든 레코드를 확인할 수 있습니다.
mysql> select *from `order`;
실행 결과는 다음과 같습니다.
+------+-------+ | Id | Price | +------+-------+ | 1 | 200 | | 2 | 100 | | 3 | 300 | | 4 | 1200 | | 5 | 1000 | | 6 | 7000 | | 7 | 900 | | 8 | 10000 | | 9 | 1100 | | 10 | 500 | +------+-------+ 10 rows in set (0.00 sec)
백틱을 사용하지 않으면 발생하는 오류
만약 예약어인 테이블 이름을 백틱 없이 그대로 사용하면 어떻게 될까요? 아래와 같이 문법 오류가 발생합니다.
mysql> select *from order; 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 'order' at line 1
정리
MySQL에서 order, select, group 등과 같은 예약어를 테이블 이름이나 컬럼 이름으로 사용하고 싶다면 반드시 이름 앞뒤를 백틱(`)으로 감싸야 합니다. 이렇게 하면 MySQL이 해당 단어를 식별자(identifier)로 올바르게 인식하여 오류 없이 쿼리를 실행할 수 있습니다. 다만, 가능하면 예약어와 겹치지 않는 이름(예: orders)을 사용하는 것이 유지보수 측면에서 더 권장됩니다.