10.1.3.7 문자 셋과 콜레 션 할당의 예
MySQL에서 어떻게 기본 문자 집합 및 데이터 정렬 값이 결정되는지를 다음의 예에서 보여줍니다.
예 1 : 테이블 및 컬럼의 정의
CREATE TABLE t1 ( c1 CHAR (10) CHARACTER SET latin1 COLLATE latin1_german1_ci ) DEFAULT CHARACTER SET latin2 COLLATE latin2_bin;
여기에서는 latin1
문자 집합과 latin1_german1_ci
데이터 정렬이 컬럼에 지정되어 있습니다. 이 정의는 명확하고 간단 명료합니다. 덧붙여 latin1
컬럼을 latin2
테이블에 저장하는 데 문제가 없습니다.
예 2 : 테이블 및 컬럼의 정의
CREATE TABLE t1 ( c1 CHAR (10) CHARACTER SET latin1 ) DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci;
여기에서는 latin1
캐릭터 세트와 디폴트 조합 순서가 컬럼에 지정되어 있습니다. 당연한 듯하지만, 기본 데이터 정렬은 테이블 수준에서 검색되지 않습니다. latin1
의 기본 데이터 정렬은 항상 latin1_swedish_ci
이기 때문에 컬럼 c1
에 latin1_danish_ci
아니고 latin1_swedish_ci
의 데이터 정렬이 설정됩니다.
예 3 : 테이블 및 컬럼의 정의
CREATE TABLE t1 ( c1 CHAR (10) ) DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci;
여기에서는 디폴트 캐릭터 세트와 디폴트 조합 순서가 컬럼에 지정되어 있습니다. 이 상황에서는 MySQL은 테이블 수준을 확인하고 컬럼의 문자 집합 및 정렬 순서를 결정합니다. 따라서, 컬럼 c1
의 캐릭터 세트는 latin1
데이터 정렬은 latin1_danish_ci
입니다.
예 4 : 데이터베이스, 테이블 및 컬럼의 정의
CREATE DATABASE d1 DEFAULT CHARACTER SET latin2 COLLATE latin2_czech_ci; USE d1; CREATE TABLE t1 ( c1 CHAR (10) );
문자 셋과 콜레 션을 지정하지 않고 열을 만듭니다. 테이블 수준의 문자 셋과 콜레 션도 지정하지 않습니다. 이 상황에서는 MySQL은 데이터베이스 수준을 확인하고 테이블 설정을 확인합니다. 그 후,이 설정이 컬럼 설정됩니다. 따라서, 컬럼 c1
의 캐릭터 세트는 latin2
데이터 정렬은 latin2_czech_ci
입니다.