MySQL 백틱은 컬럼 값에 사용할 수 없습니다
MySQL에서 백틱(backtick, `)은 테이블 이름이나 컬럼(열) 이름을 감쌀 때만 사용할 수 있습니다. 데이터 값 자체에는 절대 사용하면 안 됩니다. 만약 WHERE 절에서 컬럼 값을 백틱으로 감싸면 MySQL은 다음과 같은 오류를 발생시킵니다.
ERROR 1054 (42S22): Unknown column '191.23.41.10' in 'where clause'
이 오류는 MySQL이 백틱으로 감싼 문자열을 값(value)이 아닌 컬럼 이름으로 해석하기 때문에 발생합니다. 즉, '191.23.41.10'이라는 이름의 컬럼을 찾으려다가 존재하지 않아 오류가 나는 것입니다.
1. 예제 테이블 생성
먼저 실습용 테이블을 생성해 보겠습니다.
mysql> create table DemoTable6
(
SystemIPAddress varchar(200)
);
Query OK, 0 rows affected (0.46 sec)2. 데이터 삽입
INSERT 명령어를 사용해 몇 개의 레코드를 삽입합니다.
mysql> insert into DemoTable values('192.68.1.0');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('191.23.41.10');
Query OK, 1 row affected (0.12 sec)3. 잘못된 예제 - 백틱 사용 시 오류 발생
WHERE 조건에서 컬럼 값을 백틱으로 감싸면 다음과 같이 작성하게 됩니다.
mysql> select *from DemoTable where SystemIPAddress=`191.23.41.10`;
이 쿼리를 실행하면 앞서 언급한 오류가 그대로 출력됩니다.
ERROR 1054 (42S22): Unknown column '191.23.41.10' in 'where clause'
4. 올바른 방법 - 작은따옴표(') 사용
문자열 값은 반드시 작은따옴표(single quote, ')로 감싸야 합니다. 동일한 레코드를 조회하는 올바른 쿼리는 다음과 같습니다.
mysql> select *from DemoTable where SystemIPAddress='191.23.41.10';
이제 정상적으로 결과가 출력됩니다.
+-----------------+ | SystemIPAddress | +-----------------+ | 191.23.41.10 | +-----------------+ 1 row in set (0.00 sec)
정리: 백틱 vs 따옴표 사용 규칙
- 백틱(`): 테이블 이름, 컬럼 이름 등 식별자(identifier)를 감쌀 때 사용합니다. 특히 예약어와 충돌하는 이름에 유용합니다.
- 작은따옴표('): 문자열, IP 주소, 날짜 등 데이터 값(value)을 감쌀 때 사용합니다.
- 컬럼 값에 백틱을 사용하면 ERROR 1054 (Unknown column) 오류가 발생합니다.
이 규칙만 기억하면 MySQL에서 식별자와 값의 혼동으로 인한 오류를 손쉽게 피할 수 있습니다.