10.1.3.4 컬럼 문자 집합 및 데이터 정렬
각 "문자"컬럼 ( CHAR , VARCHAR , 또는 TEXT 형태의 컬럼)은 컬럼 문자 세트 및 열 데이터 정렬이 있습니다. CREATE TABLE 및 ALTER TABLE 의 컬럼 정의 구문에는 열 문자 집합 및 정렬 순서를 지정하는 옵션 절이 있습니다.
col_name{CHAR | VARCHAR | TEXT} (col_length) [CHARACTER SETcharset_name] [COLLATEcollation_name]
이 어구는 ENUM 및 SET 컬럼에도 사용할 수 있습니다.
col_name{ENUM | SET} (val_list) [CHARACTER SETcharset_name] [COLLATEcollation_name]
예 :
CREATE TABLE t1 ( col1 VARCHAR (5) CHARACTER SET latin1 COLLATE latin1_german1_ci ); ALTER TABLE t1 MODIFY col1 VARCHAR (5) CHARACTER SET latin1 COLLATE latin1_swedish_ci;
MySQL은 컬럼 문자 집합과 열 데이터 정렬을 다음과 같이 선택됩니다.
CHARACTER SET와XCOLLATE가 모두 지정된 경우 문자 집합YX와 데이터 정렬Y가 사용됩니다.CREATE TABLE t1 ( col1 CHAR (10) CHARACTER SET utf8 COLLATE utf8_unicode_ci ) CHARACTER SET latin1 COLLATE latin1_bin;
컬럼에 문자 셋과 콜레 션이 지정되어 있기 때문에 이들이 사용됩니다. 이 컬럼은 문자 집합
utf8과 콜레utf8_unicode_ci수 있습니다.CHARACTER SET는 지정되어 있지만XCOLLATE는 지정되어 있지 않으면 문자 집합X와 기본 데이터 정렬이 사용됩니다.CREATE TABLE t1 ( col1 CHAR (10) CHARACTER SET utf8 ) CHARACTER SET latin1 COLLATE latin1_bin;
컬럼에 문자 세트는 지정되어 있지만 데이터 정렬은 지정되어 있지 않습니다. 이 컬럼은 문자 집합
utf8과utf8의 기본 데이터 정렬 인utf8_general_ci이 있습니다. 각 문자 집합의 기본 데이터 정렬을 확인하려면SHOW COLLATION명령문을 사용합니다.COLLATE는 지정되어 있지만YCHARACTER SET는 지정되어 있지 않은 경우,Y에 관련된 캐릭터 셋과 콜레 션Y가 사용됩니다.CREATE TABLE t1 ( col1 CHAR (10) COLLATE utf8_polish_ci ) CHARACTER SET latin1 COLLATE latin1_bin;
컬럼에 데이터 정렬은 지정되어 있지만 문자 세트는 지정되어 있지 않습니다. 이 컬럼에는 데이터 정렬
utf8_polish_ci가이 데이터 정렬에 관련된 캐릭터 세트이다utf8수 있습니다.그렇지 않은 경우는 테이블 문자 세트와 테이블 데이터 정렬이 사용됩니다.
CREATE TABLE t1 ( col1 CHAR (10) ) CHARACTER SET latin1 COLLATE latin1_bin;
컬럼에 문자 세트도 데이터 정렬 지정되어 있지 않기 때문에 테이블의 기본값이 사용됩니다. 이 컬럼은 문자 세트
latin1과 콜레latin1_bin수 있습니다.
CHARACTER SET 과 COLLATE 절은 표준 SQL입니다.
ALTER TABLE 을 사용하여 문자 세트에서 다른 문자 집합에 열을 변환하는 경우, MySQL은 데이터 값을지도하려고하지만 문자 세트에 호환되지 않는 경우 데이터 손실이 발생할 수 있습니다.