MySQL에서 별표(*)가 포함된 컬럼 이름을 직접 SELECT할 수 있을까?
결론부터 말씀드리면, 일반적인 방식으로는 불가능합니다. 별표(*)는 SQL에서 특수한 의미를 가지기 때문에 그대로 사용하면 구문 오류가 발생합니다. 하지만 역따옴표(backtick, `)로 필드 이름을 감싸주면 이 문제를 손쉽게 해결할 수 있습니다.
아래에서 별표(*)가 포함된 컬럼 이름 `Name*`을 가진 테이블을 생성하고, 해당 컬럼을 조회하는 과정을 단계별로 살펴보겠습니다.
1단계: 별표가 포함된 컬럼명으로 테이블 생성
먼저 컬럼 이름에 별표(*)가 들어간 테이블을 생성합니다. 이때도 반드시 역따옴표로 컬럼명을 감싸야 합니다.
mysql> create table DemoTable
-> (
-> `Name*` varchar(20)
-> );
Query OK, 0 rows affected (2.03 sec)
2단계: insert 명령으로 레코드 삽입
insert 문을 사용하여 테이블에 샘플 데이터를 입력합니다.
mysql> insert into DemoTable(`Name*`) values('Chris Brown');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(`Name*`) values('David Miller');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable(`Name*`) values('John Doe');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(`Name*`) values('John Smith');
Query OK, 1 row affected (0.23 sec)3단계: select 문으로 전체 데이터 확인
테이블에 저장된 모든 레코드를 조회하여 정상적으로 입력되었는지 확인합니다.
mysql> select *from DemoTable;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+--------------+
| Name* |
+--------------+
| Chris Brown |
| David Miller |
| John Doe |
| John Smith |
+--------------+
4 rows in set (0.00 sec)
4단계: 별표(*)가 포함된 컬럼 이름으로 SELECT하기
다음은 별표(*)가 포함된 필드 이름을 직접 선택하는 쿼리입니다. 핵심은 컬럼명을 역따옴표(`)로 감싸는 것입니다.
mysql> select `Name*` from DemoTable;
실행 결과는 다음과 같습니다.
+--------------+
| Name* |
+--------------+
| Chris Brown |
| David Miller |
| John Doe |
| John Smith |
+--------------+
4 rows in set (0.00 sec)
정리
MySQL에서 공백, 별표(*), 하이픈(-) 등 특수 문자가 포함된 컬럼 이름은 일반적인 방법으로 참조할 수 없으며, 반드시 역따옴표(`)로 감싸야 합니다. 다만 이러한 컬럼명은 쿼리 작성 시 실수를 유발할 수 있으므로, 가급적 영문자와 숫자, 밑줄(_)만 사용하는 것이 좋은 개발 습관입니다.