MySQL에서 select처럼 예약어(키워드)로 이미 등록된 이름과 동일한 컬럼을 조회하려면, 컬럼 이름을 백틱(`)으로 감싸주어야 합니다. MySQL에서 SELECT는 쿼리를 실행하는 데 사용되는 핵심 예약어이기 때문에, 이를 그대로 컬럼 이름으로 사용하면 문법 오류가 발생할 수 있습니다.
예약어를 컬럼 이름으로 가진 테이블 생성하기
실습을 위해 컬럼 이름을 select로 지정한 테이블을 생성해 보겠습니다. 이때 반드시 백틱으로 컬럼 이름을 감싸야 정상적으로 테이블이 생성됩니다.
mysql> create table DemoTable (`select` varchar(100)); Query OK, 0 rows affected (0.53 sec)
테스트 데이터 삽입하기
다음은 INSERT 명령문을 사용해 테이블에 샘플 데이터를 추가하는 쿼리입니다.
mysql> insert into DemoTable values('Records');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('All Data');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('Information');
Query OK, 1 row affected (0.32 sec)테이블 전체 데이터 조회하기
SELECT 명령문으로 테이블의 모든 레코드를 확인해 보겠습니다.
mysql> select * from DemoTable;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+-------------+ | select | +-------------+ | Records | | All Data | | Information | +-------------+ 3 rows in set (0.00 sec)
백틱을 사용해 예약어 컬럼 선택하기
이제 핵심 부분입니다. 예약어인 select라는 이름의 컬럼을 조회하려면 아래와 같이 백틱으로 컬럼 이름을 감싸서 쿼리를 작성합니다.
mysql> select `select` from DemoTable;
실행 결과는 다음과 같습니다.
+-------------+ | select | +-------------+ | Records | | All Data | | Information | +-------------+ 3 rows in set (0.00 sec)
정리
MySQL에서 예약어와 동일한 이름의 컬럼을 다룰 때는 다음 두 가지 상황에서 모두 백틱(`)을 사용해야 합니다.
1. 테이블 생성 시: 예약어를 컬럼 이름으로 지정할 때
2. 데이터 조회 시: 해당 컬럼을 SELECT 문에서 참조할 때
참고로 ANSI SQL 표준에서는 큰따옴표(")를 식별자 구분 기호로 사용하지만, MySQL은 기본 설정에서 백틱(`)을 사용한다는 점도 함께 기억해 두면 좋습니다.