MySQL 쿼리에서 예약 키워드 다루기: 작은따옴표 대신 백틱(`)을 사용하세요
MySQL에서 쿼리에 여러 개의 예약 키워드(reserved keyword)가 포함되어 있을 때는 작은따옴표(')가 아닌 백틱(backtick, `) 기호를 사용해야 합니다. 작은따옴표는 문자열 값을 감쌀 때 사용하는 반면, 백틱은 테이블명이나 컬럼명 같은 식별자를 감싸는 용도로 사용됩니다.
먼저 테이블을 생성해 보겠습니다. 이 예제에서는 두 개의 MySQL 예약 키워드인 key와 Limit를 컬럼명으로 그대로 사용했습니다.
mysql> create table DemoTable
(
`key` int NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`Limit` int
);
Query OK, 0 rows affected (0.72 sec)이제 insert 명령어를 사용하여 테이블에 레코드를 삽입합니다.
mysql> insert into DemoTable(`key`,`Limit`) values(null,80); Query OK, 1 row affected (0.49 sec) mysql> insert into DemoTable(`key`,`Limit`) values(null,90); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable(`key`,`Limit`) values(null,100); Query OK, 1 row affected (0.10 sec)
select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+-----+-------+ | key | Limit | +-----+-------+ | 1 | 80 | | 2 | 90 | | 3 | 100 | +-----+-------+ 3 rows in set (0.00 sec)
이번에는 예약 키워드인 key로 선언된 컬럼의 값만 선택해서 조회해 보겠습니다. 해당 레코드를 정상적으로 가져오려면 반드시 백틱 기호로 컬럼명을 감싸야 합니다.
mysql> select `key` from DemoTable;
실행 결과는 다음과 같습니다.
+-----+ | key | +-----+ | 1 | | 2 | | 3 | +-----+ 3 rows in set (0.00 sec)
핵심 정리
MySQL에서 key, Limit처럼 시스템이 이미 사용 중인 예약 키워드를 컬럼명이나 테이블명으로 지정했다면, 쿼리 작성 시 반드시 백틱(`)으로 감싸야 합니다. 작은따옴표를 사용하면 해당 이름이 문자열 리터럴로 해석되어 구문 오류가 발생하거나 의도하지 않은 결과가 나올 수 있습니다. 가능하다면 애초에 예약 키워드와 겹치지 않는 이름을 사용하는 것이 가장 안전한 방법입니다.