MySQL 식별자 인용의 기본 원칙
MySQL에서 테이블 이름, 저장 프로시저, 뷰 이름, 컬럼(열) 이름과 같은 모든 식별자(identifier)는 백틱(`)으로 감싸 인용하거나, 감싸지 않고 그대로 사용할 수 있습니다. 다만 식별자가 예약어(reserved keyword)인 경우에는 반드시 인용해야 하며, 그렇지 않으면 오류가 발생합니다.
예약어를 필드 이름으로 사용한 테이블 생성
먼저 테이블을 생성해 보겠습니다. 여기서는 필드 이름을 의도적으로 예약어로 지정했습니다.
mysql> create table `INT` (`select` int,`varchar` varchar(100));
Query OK, 0 rows affected (0.50 sec)
위 예제에서는 테이블 이름을 INT, 필드 이름을 select와 varchar로 지정했습니다. 이들은 모두 MySQL의 예약어이므로 백틱으로 감싸야만 정상적으로 생성됩니다.
INSERT 문으로 데이터 삽입
insert 명령을 사용해 테이블에 레코드를 삽입합니다.
mysql> insert into `INT` values(1,'MySQL');
Query OK, 1 row affected (0.14 sec)
mysql> insert into `INT` values(2,'MongoDB');
Query OK, 1 row affected (0.34 sec)
mysql> insert into `INT` values(3,'Java');
Query OK, 1 row affected (0.15 sec)
mysql> insert into `INT` values(4,'C');
Query OK, 1 row affected (0.19 sec)
SELECT 문으로 전체 레코드 조회
select 문을 사용해 테이블의 모든 레코드를 조회합니다.
mysql> select *from `INT`;
위 쿼리는 다음과 같은 결과를 출력합니다.
+--------+---------+
| select | varchar |
+--------+---------+
| 1 | MySQL |
| 2 | MongoDB |
| 3 | Java |
| 4 | C |
+--------+---------+
4 rows in set (0.00 sec)
정리
일반적인 식별자는 인용 없이 사용해도 무방하지만, 예약어와 충돌하는 이름은 반드시 백틱(`)으로 감싸야 합니다. 이는 SQL 구문 분석 과정에서 예약어와 일반 식별자를 구분하기 위한 필수 규칙입니다. 실무에서는 가독성과 호환성을 위해 예약어를 식별자 이름으로 사용하지 않는 것이 좋습니다.