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
와X
COLLATE
가 모두 지정된 경우 문자 집합Y
X
와 데이터 정렬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
는 지정되어 있지만X
COLLATE
는 지정되어 있지 않으면 문자 집합X
와 기본 데이터 정렬이 사용됩니다.CREATE TABLE t1 ( col1 CHAR (10) CHARACTER SET utf8 ) CHARACTER SET latin1 COLLATE latin1_bin;
컬럼에 문자 세트는 지정되어 있지만 데이터 정렬은 지정되어 있지 않습니다. 이 컬럼은 문자 집합
utf8
과utf8
의 기본 데이터 정렬 인utf8_general_ci
이 있습니다. 각 문자 집합의 기본 데이터 정렬을 확인하려면SHOW COLLATION
명령문을 사용합니다.COLLATE
는 지정되어 있지만Y
CHARACTER 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은 데이터 값을지도하려고하지만 문자 세트에 호환되지 않는 경우 데이터 손실이 발생할 수 있습니다.