10.1.3.2 데이터베이스 문자 집합 및 데이터 정렬
각 데이터베이스에는 데이터베이스 문자 집합 및 데이터베이스 데이터 정렬이 있습니다. CREATE DATABASE
및 ALTER DATABASE
문은 데이터베이스 문자 집합 및 정렬 순서를 지정하는 옵션 절이 있습니다.
CREATE DATABASEdb_name
[DEFAULT] CHARACTER SETcharset_name
] [DEFAULT] COLLATEcollation_name
] ALTER DATABASEdb_name
[DEFAULT] CHARACTER SETcharset_name
] [DEFAULT] COLLATEcollation_name
]
SCHEMA
키워드는 DATABASE
대신 사용할 수 있습니다.
모든 데이터베이스 옵션은 데이터베이스 디렉토리의 db.opt
라는 텍스트 파일에 저장됩니다.
CHARACTER SET
과 COLLATE
절을 사용하면 문자 셋과 콜레 션이 다른 여러 데이터베이스를 동일한 MySQL Server에 만들 수 있습니다.
예 :
CREATE DATABASE db_name
CHARACTER SET latin1 COLLATE latin1_swedish_ci;
MySQL은 데이터베이스 문자 집합 및 데이터베이스 데이터 정렬을 다음과 같이 선택됩니다.
CHARACTER SET
와X
COLLATE
가 모두 지정된 경우 문자 집합Y
X
와 데이터 정렬Y
가 사용됩니다.CHARACTER SET
는 지정되어 있지만X
COLLATE
는 지정되어 있지 않으면 문자 집합X
와 기본 데이터 정렬이 사용됩니다. 각 문자 집합의 기본 데이터 정렬을 확인하려면SHOW COLLATION
명령문을 사용합니다.COLLATE
는 지정되어 있지만Y
CHARACTER SET
는 지정되어 있지 않은 경우,Y
에 관련된 캐릭터 셋과 콜레 션Y
가 사용됩니다.그렇지 않은 경우는 서버 문자 집합 및 서버 데이터 정렬이 사용됩니다.
기본 데이터베이스의 문자 셋과 콜레 션은 character_set_database
및 collation_database
시스템 변수에서 확인할 수 있습니다. 기본 데이터베이스가 변경 될 때마다 서버는 이러한 변수를 설정합니다. 기본 데이터베이스가없는 경우, 변수는 character_set_server
및 collation_server
는 해당 서버 수준의 시스템 변수와 같은 값입니다.
특정 데이터베이스의 디폴트 문자 집합 및 정렬 순서를 확인하려면 다음 문을 사용합니다.
USE db_name
;
SELECT @@ character_set_database @@ collation_database;
또한 기본 데이터베이스를 변경하지 않고 값을 표시하려면 다음 문을 사용합니다.
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = ' db_name
';
데이터베이스 문자 집합 및 데이터 정렬은 서버 조작의 다음과 같은 측면에 영향을줍니다.
CREATE TABLE
문은 테이블 문자 집합 및 정렬 순서가 지정되어 있지 않은 경우, 데이터베이스 문자 집합 및 정렬 순서가 테이블 정의의 기본값으로 사용됩니다. 이를 무시하려면CHARACTER SET
과COLLATE
테이블 옵션을 명시 적으로 지정합니다.CHARACTER SET
절이없는LOAD DATA
명령문은 서버character_set_database
시스템 변수에 의해 나타난 문자 세트를 사용하여 파일의 정보를 해석합니다. 이를 무시하려면CHARACTER SET
절을 명시 적으로 지정합니다.스토어드 루틴 (저장 프로 시저 및 저장 함수)는
CHARACTER SET
속성도COLLATE
속성도 선언에 포함되지 않은 문자 데이터 파라미터의 캐릭터 세트 및 데이터 정렬로 루틴을 만들 때 유효한 데이터베이스 문자 집합 및 정렬 순서가 사용됩니다 합니다. 이를 무시하려면CHARACTER SET
과COLLATE
속성을 명시 적으로 지정합니다.