13.1.1 ALTER DATABASE 구문
ALTER {DATABASE | SCHEMA} [
db_name
]alter_specification
... ALTER {DATABASE | SCHEMA}db_name
UPGRADE DATA DIRECTORY NAMEalter_specification
: [DEFAULT] CHARACTER SET [=]charset_name
| [DEFAULT] COLLATE [=]collation_name
ALTER DATABASE
를 사용하여 데이터베이스의 전반적인 특성을 변경할 수 있습니다. 이러한 특성은 데이터베이스 디렉토리의 db.opt
파일에 저장됩니다. ALTER DATABASE
를 사용하려면 데이터베이스에 대한 ALTER
권한이 필요합니다. ALTER SCHEMA
는 ALTER DATABASE
의 동의어입니다.
첫 번째 구문에서 데이터베이스 이름을 생략 할 수 있습니다. 그 경우,이 문은 기본 데이터베이스에 적용됩니다.
각 국어에 관한 특성
CHARACTER SET
절은 기본 데이터베이스 문자 집합을 변경합니다. COLLATE
절은 기본 데이터베이스 데이터 정렬을 변경합니다. 섹션 10.1 "문자 집합 지원" 는 문자 셋과 콜레 션 이름에 대해 설명하고 있습니다.
어떤 문자 셋과 콜레 션을 사용할 수 있을지는 각각 SHOW CHARACTER SET
및 SHOW COLLATION
명령문을 사용하여 확인할 수 있습니다. 자세한 내용은 섹션 13.7.5.4 "SHOW CHARACTER SET 구문" 및 섹션 13.7.5.5 "SHOW COLLATION 구문" 을 참조하십시오.
데이터베이스의 기본 문자 세트 또는 데이터 정렬을 변경하는 경우 데이터베이스의 기본을 사용하는 스토어드 루틴을 제거하고 새 기본값을 사용하도록 다시 작성해야합니다. (스토어드 루틴은 문자 집합 또는 데이터 정렬을 명시 적으로 지정되어 있지 않은 경우, 문자 데이터 형식을 따른 변수는 데이터베이스의 기본값을 사용합니다. 섹션 13.1.15 "CREATE PROCEDURE 및 CREATE FUNCTION 구문" 을 참조 하십시오.)
MySQL 5.1 이전 버전에서 업그레이드
UPGRADE DATA DIRECTORY NAME
절이 포함 된 구문은 데이터베이스에 연결된 디렉토리의 이름을 데이터베이스 이름을 데이터베이스 디렉토리 이름에 매핑하는 MySQL 5.1에서 구현 된 인코딩을 사용하도록 업데이트합니다 ( 섹션 9.2. 3 "식별자와 파일 이름 매핑" 을 참조하십시오). 이 절은 다음의 조건 하에서 사용되는 것을 목적으로하고 있습니다.
MySQL을 이전 버전에서 5.1 버전으로 업그레이드하는 것을 목적으로하고있다.
데이터베이스 디렉토리 이름에 인코딩이 필요한 특수 문자가 포함되어있는 경우는 그 이름을 현재 인코딩 형식으로 업데이트하는 것을 목적으로하고있다.
이 문이 (mysql_upgrade에서 호출 된) mysqlcheck에 의해 사용되고있다.
예를 들어, MySQL 5.0에서 데이터베이스 이름이 abc
인 경우, 그 이름은 -
(대시) 문자의 인스턴스가 포함되어 있습니다. MySQL 5.0에서는 데이터베이스 디렉토리의 이름도 반드시 모든 파일 시스템에서 안전하지 않은 abc
됩니다. MySQL 5.1 이상에서는 파일 시스템에 의존하지 않는 디렉토리 이름을 생성하기 위해 동일한 데이터베이스 이름이 a@002db@002dc
로 인코딩됩니다.
MySQL 설치가 이전 버전에서 MySQL 5.1 이상으로 업그레이드되면 서버에서는 abc
등 (오래된 형식의) 이름이 #mysql50#abc
로 표시되기 때문에 #mysql50#
접두어를 사용하여 이름을 참조 할 필요 수 있습니다. 이 경우 UPGRADE DATA DIRECTORY NAME
을 사용하여 데이터베이스 디렉토리 이름을 현재 인코딩 형식으로 다시 인코딩하도록 서버에 명시 적으로 지시합니다.
ALTER DATABASE`# mysql50 # abc` UPGRADE DATA DIRECTORY NAME;
이 문을 실행 한 후에는 특수한 #mysql50#
접두어없이 해당 데이터베이스를 abc
로 볼 수 있습니다.