• 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.4 연결 문자 집합 및 데이터 정렬

여러 문자 집합 및 데이터 정렬 시스템 변수는 서버와 클라이언트의 통신을 포함하고 있습니다. 이들 중 일부는 이전 절에서 이미 설명되어 있습니다.

  • 서버 문자 집합 및 데이터 정렬은 character_set_server 및 collation_server 시스템 변수의 값입니다.

  • 기본 데이터베이스 문자 집합 및 데이터 정렬은 character_set_database 및 collation_database 시스템 변수의 값입니다.

다른 문자 집합 및 데이터 정렬 시스템 변수는 클라이언트와 서버 간의 연결 트래픽의 처리에 관여합니다. 모든 클라이언트 연결 관련 문자 집합 및 데이터 정렬 시스템 변수를 가지고 있습니다.

"연결"서버에 연결할 때 작성하는 것입니다. 클라이언트는 연결을 통해 SQL 문 (쿼리)를 서버로 전송합니다. 서버는 연결을 통해 결과 집합 또는 오류 메시지 등의 응답을 클라이언트에 보냅니다. 따라서 다음과 같은 클라이언트 연결을 처리 문자 집합 및 데이터 정렬에 대한 의문이있을 수 있지만, 이들은 시스템 변수의 관점에서 답변 할 수 있습니다.

  • 클라이언트에서 전송 될 때, 문은 어느 캐릭터 세트로 전송됩니까?

    서버는 character_set_client 시스템 변수 값을 클라이언트가 보내는 명령문의 문자 세트합니다.

  • 문을받은 후에 서버는 이것을 어떤 문자 세트로 변환합니까?

    여기에는 서버 character_set_connection 및 collation_connection 시스템 변수 값을 사용합니다. 클라이언트에서 보낸 문은 character_set_client 에서 character_set_connection 로 변환됩니다 ( _latin1 과 _utf8 등의 인트로 듀서가 문자열 리터럴을 제외). collation_connection 는 리터럴 문자열 비교에서 중요합니다. 컬럼 값이 문자열 비교는 collation_connection 는 중요시되지 않습니다. 왜냐하면 컬럼은 고유의 데이터 정렬이이 데이터 정렬이 우선되기 때문입니다.

  • 결과 세트 또는 오류 메시지를 클라이언트에 반환하기 전에 서버가 이들을 어떤 문자 세트로 변환합니까?

    character_set_results 시스템 변수 값은 서버가 클라이언트에 쿼리 결과를 회신 할 때 사용하는 문자 집합을 나타냅니다. 여기에는 컬럼 값 등의 결과 데이터와 컬럼 이름 또는 오류 메시지 등의 결과 메타 데이터가 포함됩니다.

클라이언트는 이러한 변수의 설정을 조정하거나 기본에 따를 수 있습니다 (이 경우이 섹션의 나머지를 건너 뛸 수 있습니다). 기본값을 사용하지 않는 경우, 서버에 연결마다 문자 설정을 변경해야합니다.

2 개의 문은 연결 관련 문자 집합 변수에 그룹으로 영향을 미칩니다.

  • SET NAMES ' charset_name ' [COLLATE ' collation_name ']

    SET NAMES 는 클라이언트에서 서버에 SQL 문을 보내는 데 사용되는 문자 집합을 나타냅니다. 따라서 SET NAMES 'cp1251' 은 "이 클라이언트에서 지금부터 수신되는 메시지가 문자 세트 cp1251 전송되는 "것을 서버에 알립니다. 또한 클라이언트에 결과를 회신 할 때 서버가 사용하는 문자 집합을 지정합니다. (예를 들어, SELECT 문을 사용하는 경우, 컬럼 값에 사용되는 문자 집합을 지정합니다.)

    SET NAMES ' charset_name ' 문은 다음 3 개의 문과 동일합니다.

     SET character_set_client = charset_name ;
     SET character_set_results = charset_name ;
     SET character_set_connection = charset_name ;
    

    character_set_connection 을 charset_name 으로 설정하면 collation_connection 도 암묵적으로 charset_name 의 기본 데이터 정렬로 설정됩니다. 이 데이터 정렬을 명시 적으로 설정할 필요가 없습니다. 특정 데이터 정렬을 지정하려면 옵션의 COLLATE 절을 사용합니다.

     SET NAMES ' charset_name 'COLLATE' collation_name '
    
  • SET CHARACTER SET charset_name

    SET CHARACTER SET 은 SET NAMES 와 비슷하지만, character_set_connection 과 collation_connection 을 character_set_database 과 collation_database 로 설정합니다. SET CHARACTER SET charset_name 문은 다음 3 개의 문과 동일합니다.

     SET character_set_client = charset_name ;
     SET character_set_results = charset_name ;
     SET collat​​ion_connection = @@ collat​​ion_database;
    

    collation_connection 을 설정하면 character_set_connection 도 연결된 문자 세트에 암묵적으로 설정됩니다 ( SET character_set_connection = @@character_set_database 의 실행과 동일합니다). character_set_connection 을 명시 적으로 설정할 필요가 없습니다.

참고

ucs2 , utf16 , utf16le 및 utf32 를 클라이언트 문자 집합으로 사용할 수 없습니다. 즉, 이들은 SET NAMES 또는 SET CHARACTER SET 에는 작동하지 않습니다.

MySQL 클라이언트 프로그램 mysql , mysqladmin , mysqlcheck , mysqlimport 및 mysqlshow 는 다음과 같이 사용하는 기본 문자 집합을 식별합니다.

  • 다른 정보가 부족한 경우 프로그램은 컴파일시 기본 문자 집합 (일반적으로 latin1 )를 사용합니다.

  • 프로그램은 운영 체제 설정 (예를 들어, Unix 시스템에서는 LANG 및 LC_ALL 로컬 환경 변수의 값 Windows 시스템에서는 코드 페이지 설정)에 따라 사용할 문자 집합을 자동으로 감지합니다. 로케일이 OS에서 사용할 수있는 시스템의 경우 클라이언트는 컴파일시 기본값을 사용하는 것이 아니라,이 로케일을 사용하여 기본 문자 집합을 설정합니다. 예를 들어, LANG 을 ru_RU.KOI8-R 로 설정하면 koi8r 문자 세트가 사용됩니다. 따라서 사용자는 MySQL 클라이언트가 사용할 수 있도록 자신의 환경에서 로케일을 구성 할 수 있습니다.

    OS 문자 집합은 정확하게 일치하는 것이 없으면 가장 가까운 MySQL 문자 집합에 매핑됩니다. 일치하는 문자 집합을 지원하지 않는 경우, 클라이언트는 컴파일이 기본값을 사용합니다. 예를 들어, ucs2 연결 문자 집합을 지원하지 않습니다.

    C 응용 프로그램은 서버에 연결하기 전에 다음과 같이 mysql_options() 를 호출하여 OS 설정에 따라 문자 세트 자동 감지를 사용할 수 있습니다.

     mysql_options (mysql,
                   MYSQL_SET_CHARSET_NAME,
                   MYSQL_AUTODETECT_CHARSET_NAME);
    
  • 프로그램은 --default-character-set 옵션을 지원하고 있으며, 사용자는이 옵션을 사용하면 문자 세트를 명시 적으로 지정할 수 클라이언트가 다른 어떤 기본값을 지정 있어도 그것을 무시할 수 합니다.

클라이언트는 서버에 연결할 때 사용하는 문자 집합 이름을 보냅니다. 서버는이 이름을 사용하여 character_set_client , character_set_results 및 character_set_connection 시스템 변수를 설정합니다. 사실, 서버는 문자 집합 이름을 사용하여 SET NAMES 작업을 수행합니다.

mysql 클라이언트의 경우 기본값과 다른 문자 집합을 사용하려면 시작할 때마다, SET NAMES 를 명시 적으로 실행할 수 있습니다. 더 쉽게 동일한 결과를 얻으려면 --default-character-set 옵션 설정을 mysql 명령 행 또는 옵션 파일에 추가합니다. 예를 들어, 다음의 옵션 파일 설정은 mysql을 호출 할 때마다 koi8r 에 설정된 3 개의 연결 관련 문자 집합 변수를 변경합니다.

 [mysql]
 default-character-set = koi8r

자동 재 연결을 사용하여 mysql 클라이언트를 사용하는 경우 (권장하지 않음), SET NAMES 보다는 charset 명령을 사용하는 것이 좋습니다. 예 :

 mysql> charset utf8
 Charset changed

charset 명령은 SET NAMES 명령문을 발행하고 연결 해제 후 다시 연결할 때 mysql이 사용하는 기본 문자 집합을 변경합니다.

예 : column1 이 CHAR(5) CHARACTER SET latin2 로 정의되어 있다고합니다. SET NAMES 또는 SET CHARACTER SET 를 지정하지 않는 경우, SELECT column1 FROM t 에 대해 서버는 연결시 클라이언트가 지정된 문자 세트를 사용하여 column1 의 모든 값을 돌려 보냅니다. 반대로, SET NAMES 'latin1' 또는 SET CHARACTER SET latin1 을 SELECT 문을 실행하기 전에 지정된 경우 서버는 결과를 회신하기 직전에 latin2 값을 latin1 로 변환합니다. 두 문자 집합에없는 문자가있는 경우 변환 손실이 커질 가능성이 있습니다.

서버에 결과 세트 또는 오류 메시지의 변환을 실행하지 않으면 character_set_results 를 NULL 또는 binary 로 설정하십시오.

 SET character_set_results = NULL;

연결에 적용 할 문자 집합 및 데이터 정렬 시스템 변수의 값을 확인하려면 다음 문을 사용하십시오.

 SHOW VARIABLES LIKE 'character_set %';
 SHOW VARIABLES LIKE 'collat​​ion %';

MySQL 응용 프로그램을 실행하는 환경도 고려해야합니다. 섹션 10.1.5 "응용 프로그램의 문자 집합 및 정렬 순서 구성" 을 참조하십시오.

문자 세트 및 오류 메시지의 자세한 내용은 섹션 10.1.6 "오류 메시지의 문자 세트" 를 참조하십시오.

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