Loading...
MySQL 9.5 Reference Manual 9.5의 12.3.3 Database Character Set and Collation의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
각 database는 하나의 database 문자 집합과 하나의 database 정렬 규칙을 가진다. CREATE DATABASE 및 ALTER DATABASE statement에는 database 문자 집합과 정렬 규칙을 지정하기 위한 선택적 절이 있다:
1CREATE DATABASE db_name 2 [[DEFAULT] CHARACTER SET charset_name] 3 [[DEFAULT] COLLATE collation_name] 4 5ALTER DATABASE db_name 6 [[DEFAULT] CHARACTER SET charset_name] 7 [[DEFAULT] COLLATE collation_name]
SCHEMA 키워드는 DATABASE 대신 사용할 수 있다.
CHARACTER SET 및 COLLATE 절을 사용하면 동일한 MySQL 서버에서 서로 다른 문자 집합과 정렬 규칙을 가진 database들을 생성할 수 있다.
Database 옵션은 데이터 딕셔너리에 저장되며 Information Schema SCHEMATA 테이블을 확인하여 검사할 수 있다.
예:
1CREATE DATABASE db_name CHARACTER SET latin1 COLLATE latin1_swedish_ci;
MySQL은 다음과 같은 방식으로 database 문자 집합과 database 정렬 규칙을 선택한다:
CHARACTER SET charset_name과
COLLATE collation_name이 모두 지정된 경우, 문자 집합 _charset_name_과 정렬 규칙 _collation_name_이 사용된다.
CHARACTER SET charset_name이
COLLATE 없이 지정된 경우, 문자 집합 _charset_name_과 그 기본 정렬 규칙이 사용된다. 각 문자 집합에 대한 기본 정렬 규칙을 보려면 SHOW CHARACTER SET statement를 사용하거나 INFORMATION_SCHEMA CHARACTER_SETS 테이블을 조회한다.
COLLATE collation_name이
CHARACTER SET 없이 지정된 경우, _collation_name_과 연관된 문자 집합과 정렬 규칙 _collation_name_이 사용된다.
그렇지 않은 경우 (CHARACTER SET과 COLLATE가 모두 지정되지 않은 경우), 서버 문자 집합과 서버 정렬 규칙이 사용된다.
기본 database에 대한 문자 집합과 정렬 규칙은 character_set_database 및 collation_database 시스템 변수의 값으로부터 결정할 수 있다. 기본 database가 변경될 때마다 서버는 이 변수들을 설정한다.
기본 database가 없으면, 이 변수들은 해당 서버 레벨 시스템 변수인 character_set_server 및 collation_server와 동일한 값을 가진다.
특정 database에 대한 기본 문자 집합과 정렬 규칙을 보려면 다음 statement를 사용한다:
1USE db_name; 2SELECT @@character_set_database, @@collation_database;
또는, 기본 database를 변경하지 않고 값을 표시하려면 다음과 같이 한다:
1SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME 2FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'db_name';
Database 문자 집합과 정렬 규칙은 서버 동작의 다음 측면에 영향을 미친다:
CREATE TABLE statement의 경우, 테이블 문자 집합과 정렬 규칙이 지정되지 않으면 database 문자 집합과 정렬 규칙이 테이블 정의의 기본 값으로 사용된다. 이를 재정의하려면, 명시적으로 CHARACTER SET 및 COLLATE 테이블 옵션을 제공한다.
CHARACTER SET 절을 포함하지 않는 LOAD DATA statement의 경우, 서버는 파일 내 정보 해석을 위해 character_set_database 시스템 변수가 가리키는 문자 집합을 사용한다. 이를 재정의하려면, 명시적인 CHARACTER SET 절을 제공한다.
저장 루틴(프로시저 및 함수)의 경우, 루틴 생성 시점에 효력이 있는 database 문자 집합과 정렬 규칙이, 선언에 CHARACTER SET이나 COLLATE 속성이 포함되지 않은 문자 데이터 매개변수에 대한 문자 집합과 정렬 규칙으로 사용된다. 이를 재정의하려면, CHARACTER SET 및 COLLATE를 명시적으로 제공한다.
12.3.2 Server Character Set and Collation
12.3.4 Table Character Set and Collation