MariaDB / 데이터베이스 이름에 하이픈(-) 또는 점(.) 포함하는 방법
MariaDB에서 이름에 하이픈(-)이나 점(.)이 들어간 데이터베이스를 만들려면 이름 전체를 백틱(`)으로 감싸세요. 예를 들어 CREATE DATABASE `test-test`;와 CREATE DATABASE `test.test`;처럼 작성합니다.
왜 백틱이 필요한가요?
데이터베이스 이름은 MariaDB에서 객체를 구분하는 식별자입니다. 백틱으로 감싸지 않은 test-test는 하이픈을 이름의 일부로 해석하지 못하고, test.test의 점은 별도의 식별자를 구분하는 기호로 해석될 수 있습니다. 따라서 다음 문장은 데이터베이스 생성 구문으로 사용할 수 없습니다.
CREATE DATABASE test-test;
CREATE DATABASE test.test;
각 문장을 실행하면 구문 오류가 발생합니다. 오류 메시지의 구체적인 내용은 서버 버전과 클라이언트에 따라 다를 수 있습니다. 백틱은 문자열을 나타내는 작은따옴표(')와 다릅니다. MariaDB의 식별자 규칙은 MariaDB 식별자 이름 문서에서 확인할 수 있습니다.
데이터베이스 생성과 확인
다음 예제는 MariaDB 서버에 연결한 SQL 클라이언트에서 실행합니다. 새 데이터베이스를 만들 권한이 필요하며, 이미 같은 이름이 있다면 생성 전에 용도를 확인하세요. 실습은 기존 데이터가 없는 별도 테스트 환경에서 진행합니다.
CREATE DATABASE `test-test`;
CREATE DATABASE `test.test`;
SHOW DATABASES;
생성이 성공하면 목록에서 두 이름을 확인할 수 있습니다. 기존 이름이 이미 있거나 권한이 부족하면 생성이 실패할 수 있습니다. 이름을 단순한 영문자, 숫자와 밑줄로 만들 수 있다면 test_test처럼 정하여 인용과 도구 호환성에 따른 혼동을 줄일 수 있습니다.
점이 포함된 이름을 사용할 때
데이터베이스를 선택할 때도 점을 포함한 이름 전체를 백틱으로 감쌉니다. 다음 문장을 실행하면 현재 데이터베이스 이름이 test.test로 표시됩니다.
USE `test.test`;
SELECT DATABASE();
데이터베이스와 테이블을 함께 지정할 때는 각각을 따로 감싸고 그 사이에 구분용 점을 둡니다. 아래 예제에서 첫 번째 점은 데이터베이스 이름의 일부이고, 백틱 바깥의 점은 데이터베이스와 테이블을 구분합니다.
CREATE TABLE `test.test`.`example` (id INT);
INSERT INTO `test.test`.`example` VALUES (1);
SELECT id FROM `test.test`.`example`;
별도의 빈 실습 데이터베이스에서 실행하면 마지막 조회는 1을 반환합니다. 테이블 생성과 데이터 입력 권한도 필요합니다. 반면 `test.test.example`처럼 전체를 한 쌍으로 감싸면 서로 다른 두 식별자가 아니라 점이 포함된 하나의 식별자를 뜻합니다.
운영할 때 확인할 점
백틱으로 감쌀 수 있다고 해서 모든 도구가 특수 문자가 들어간 이름을 같은 방식으로 처리하는 것은 아닙니다. 애플리케이션의 연결 설정, 백업·복원 도구, 관리 도구와 서버 버전에서 해당 이름을 지원하는지 별도 테스트하세요. 예를 들어 MariaDB의 카탈로그 기능에는 연결하는 클라이언트에 따라 점이 들어간 데이터베이스 이름에 제약이 있습니다. 자세한 조건은 MariaDB 카탈로그 문서를 확인하세요.
데이터베이스 이름의 대소문자 구분은 운영체제의 파일 시스템과 lower_case_table_names 설정에 영향을 받습니다. 기존 이름을 다른 대소문자로 가정하지 말고 실제 이름을 확인하세요. 이 설정은 서버 초기화와 관련이 있으므로 문제 해결을 위해 기존 운영 서버에서 임의로 바꾸지 마세요.
실습을 끝낸 뒤 데이터베이스를 삭제하려면 먼저 해당 이름과 내용을 확인하세요. DROP DATABASE는 그 안의 테이블과 데이터를 삭제하므로 실제 서비스 데이터베이스에는 예제 삭제 명령을 실행하지 마세요. 테스트용으로 직접 만든 빈 환경에서만 다음 명령을 사용합니다.
DROP DATABASE `test-test`;
DROP DATABASE `test.test`;
예제는 Windows의 격리된 MariaDB 12.3.3에서 백틱 유무에 따른 생성, 데이터베이스 선택과 테이블 조회를 확인했습니다. 다른 버전이나 관리 도구에서는 해당 환경의 동작과 권한을 확인하세요.




