• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 1. 문자 세트 지원
    1. 일반 문자 집합 및 데이터 정렬
    2. MySQL에서의 문자 셋과 콜레션
    3. 문자 셋과 콜레션 지정
    4. 연결 문자 집합 및 데이터 정렬
    5. 응용 프로그램의 문자 집합 및 정렬 순서 구성
    6. 오류 메시지의 문자 세트
    7. 데이터 정렬 문제
    8. 문자열의 레퍼토리
    9. 문자 세트 지원의 영향을받는 연산
    10. Unicode 지원
    11. 이전 Unicode 지원에서 현재 Unicode 지원으로 업그레이드
    12. 메타 데이터에 UTF-8
    13. 컬럼 문자 집합 변환
    14. MySQL에서 지원되는 문자셋과 콜레션
    2. 오류 메시지 언어 설정
    3. 문자 세트 추가
    4. 문자 세트에 데이터 정렬 추가
    5. 문자 세트 구성
    6. MySQL Server에서 시간대 지원
    7. MySQL Server의 로케일 지원
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

10.1.13 컬럼 문자 집합 변환

특정 문자 세트를 사용하도록 이진 문자열 또는 비 이진 문자열 열을 변환하려면 ALTER TABLE 을 사용합니다. 제대로 변환을 수행하려면 다음 조건 중 하나를 적용해야합니다.

  • 열에 이진 데이터 형식 ( BINARY , VARBINARY , BLOB )가있는 경우, 포함 된 모든 값은 단일 문자 집합 (열 변환 된 문자 집합)를 사용하여 인코딩해야합니다. 바이너리 컬럼을 사용하여 여러 문자 세트에서 정보를 저장하는 경우 MySQL은 어떤 값이 어떤 문자 집합을 사용할지 여부를 인식하지 못하고 데이터를 정확하게 변환 할 수 없습니다.

  • (Column)에 이진 데이터 형식 ( CHAR , VARCHAR , TEXT )가있는 경우 그 내용은 컬럼의 문자 세트 인코딩해야 다른 문자 집합을 사용할 수 없습니다. 내용이 다른 문자 집합으로 인코딩 된 경우 먼저 이진 데이터 형식을 사용하도록 열을 변환하고 사용하는 문자 집합 비 바이너리 컬럼으로 변환 할 수 있습니다.

VARBINARY(50) 로 정의 된 col1 라는 이름의 테이블 t 에 바이너리 컬럼이 있다고합니다. 컬럼의 정보를 단일 문자 집합을 사용하여 인코딩되어 있다고하면,이 컬럼을 해당 문자 세트를 포함한 비 바이너리 컬럼으로 변환 할 수 있습니다. 예를 들어, col1 에 greek 문자 세트를 나타내는 이진 데이터가 포함 된 경우 다음과 같이 변환 할 수 있습니다.

 ALTER TABLE t MODIFY col1 VARCHAR (50) CHARACTER SET greek;

원래 컬럼에 BINARY(50) 의 형태가있는 경우이를 CHAR(50) 으로 변환 할 수 있지만 그 결과 얻어지는 값은 끝이 0x00 바이트로 패딩되어 이것이 바람직하지 않을 수 있습니다. 이러한 바이트를 제거하려면 TRIM() 함수를 사용합니다.

 UPDATE t SET col1 = TRIM (TRAILING 0x00 FROM col1);

테이블 t 에 CHAR(50) CHARACTER SET latin1 로 정의 된 col1 라는 비 바이너리 열이 있지만 utf8 을 사용하도록이를 변환하고 많은 언어 값을 저장할 수 있도록합니다. 다음 문에서이를 실행할 수 있습니다.

 ALTER TABLE t MODIFY col1 CHAR (50) CHARACTER SET utf8;

두 문자 세트에없는 문자가 열에 포함되어 있으면 변환 손실이 커질 수 있습니다.

MySQL 4.1 이전의 낡은 테이블이있는 경우, 실제로는 서버의 기본 문자 집합과 다른 문자 집합으로 인코딩 된 값이 아닌 바이너리 컬럼에 포함 된 특수한 상황이 발생할 수 있습니다. 예를 들어, MySQL의 기본 문자 집합이 latin1 에도 응용 프로그램은 sjis 값을 컬럼에 저장합니다. 적절한 문자 세트를 사용하기 위해 열을 변환 할 수 있지만 추가 단계가 필요합니다. 예를 들어, 서버의 디폴트 문자 집합이 latin1 에서 col1 은 CHAR(50) 로 정의되어 있음에도 불구하고 내용은 sjis 값이라고합니다. 첫 번째 단계에서는 이진 데이터 형식에 열을 변환하여 문자 변환을 수행하지 기존 문자 집합 정보를 제거합니다.

 ALTER TABLE t MODIFY col1 BLOB;

다음 단계에서는 적절한 문자 세트를 사용하여 비 이진 데이터 형식에 열을 변환합니다.

 ALTER TABLE t MODIFY col1 CHAR (50) CHARACTER SET sjis;

이 단계에서는 MySQL 4.1 이상으로 업그레이드 한 후 테이블이 INSERT 나 UPDATE 등의 문에서 변경되지 않아야합니다. 이 경우 MySQL은 latin1 을 사용하여 컬럼에 새 값을 저장하고, 그 컬럼은 sjis 값과 latin1 값을 동시에 포함하고 있으며, 정확하게 변환 할 수 없습니다.

먼저 열을 만들 때 속성을 지정하는 경우 ALTER TABLE 을 사용하여 테이블을 변경하는 경우에도 속성을 지정해야합니다. 예를 들어, NOT NULL 명시적인 DEFAULT 값을 지정했을 경우, ALTER TABLE 문에서 지정해야합니다. 지정하지 않으면, 결과의 컬럼 정의에 이러한 속성이 포함되지 않습니다.

테이블의 모든 문자 열을 변환하려면 ALTER TABLE ... CONVERT TO CHARACTER SET charset 문이 도움이 될 수 있습니다. 섹션 13.1.7 "ALTER TABLE 구문" 을 참조하십시오.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved