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

MySQL 쿼리에서 예약 키워드 사용법 – 작은따옴표 대신 백틱(`)을 써야 하는 이유

MySQL 쿼리에서 예약 키워드 다루기: 작은따옴표 대신 백틱(`)을 사용하세요

MySQL에서 쿼리에 여러 개의 예약 키워드(reserved keyword)가 포함되어 있을 때는 작은따옴표(')가 아닌 백틱(backtick, `) 기호를 사용해야 합니다. 작은따옴표는 문자열 값을 감쌀 때 사용하는 반면, 백틱은 테이블명이나 컬럼명 같은 식별자를 감싸는 용도로 사용됩니다.

먼저 테이블을 생성해 보겠습니다. 이 예제에서는 두 개의 MySQL 예약 키워드인 keyLimit를 컬럼명으로 그대로 사용했습니다.

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처럼 시스템이 이미 사용 중인 예약 키워드를 컬럼명이나 테이블명으로 지정했다면, 쿼리 작성 시 반드시 백틱(`)으로 감싸야 합니다. 작은따옴표를 사용하면 해당 이름이 문자열 리터럴로 해석되어 구문 오류가 발생하거나 의도하지 않은 결과가 나올 수 있습니다. 가능하다면 애초에 예약 키워드와 겹치지 않는 이름을 사용하는 것이 가장 안전한 방법입니다.