MySQL 테이블 이름에 밑줄(underscore, _)을 사용해도 아무런 문제가 발생하지 않습니다. 오히려 문제가 되는 것은 대시(dash, -)입니다. 대시는 특정 MySQL 버전에서 유효하지 않은 문자로 간주되어 오류를 일으킬 수 있습니다.
밑줄이 포함된 테이블 이름 예시
다음은 밑줄로 시작하는 테이블 이름으로, 전혀 문제 없이 사용 가능한 예입니다.
_StudentTrackerDemo
실제로 이 이름으로 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table _StudentTrackerDemo -> ( -> StudentId int, -> StudentFirstName varchar(100) -> ); Query OK, 0 rows affected (0.75 sec)
위 결과에서 볼 수 있듯이 밑줄이 포함된 테이블 이름은 정상적으로 생성됩니다. 밑줄은 MySQL 테이블 이름에 허용되는 유효한 문자입니다.
대시(-)가 포함된 테이블 이름의 문제점
반면, 대시는 일부 MySQL 버전에서 테이블 이름으로 사용할 수 없습니다. 대시가 포함된 테이블 이름을 생성하려고 하면 다음과 같은 구문 오류가 발생합니다.
mysql> create table Student-table
-> (
-> Id int,
-> Name varchar(100)
-> );
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '-table
(Id int, Name varchar(100) )' at line 1참고: 대시를 꼭 사용해야 한다면?
만약 대시가 포함된 이름을 반드시 사용해야 하는 경우에는 테이블 이름을 역따옴표(backtick, `)로 감싸주면 됩니다. 예를 들어 다음과 같이 작성할 수 있습니다.
mysql> create table `Student-table`
-> (
-> Id int,
-> Name varchar(100)
-> );역따옴표로 감싼 식별자는 MySQL에서 특수 문자를 포함한 이름도 허용하기 때문입니다. 다만 가독성과 호환성 측면에서는 밑줄(_)을 사용하는 것이 가장 안전하고 권장되는 방식입니다.