• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 서비스
    • MySQL유지보수
    • MySQL라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.1 한글메뉴얼) [close]
  • 1. MySQL 5.1 Reference Manual
  • 2. Installing and MySQL 업그레이드하기
  • 3. 사용 설명서 (Tutorial)
  • 4. MySQL 프로그램 사용하기
  • 5. 데이터베이스 관리
  • 6. 리플리케이션
  • 7. 최적화 (Optimization)
  • 8. 클라이언트 및 유틸리티 프로그램
  • 9. 언어 구조 (Language Structure)
  • 10. 문자 셋 지원
  • 1. 일반적인 의미의 문자 셋과 콜레션
    2. MySQL의 문자 셋과 콜레션
    3. 문자 셋과 콜레션 지정하기
    4. 문자 셋과 콜레션 연결하기
    5. 콜레션 이슈
    6. 문자 셋 지원으로 영향을 받는 연산
    7. 유니코드 지원
    8. 메타데이터용 UTF-8
    9. 컬럼 문자 셋 변환
    10. MySQL이 지원하는 문자 셋과 콜레션
  • 24. API 및 라이브러리
  • 25. Connectors

10.1. 일반적인 의미의 문자 셋과 콜레션

 

문자 셋이란 심볼과 인코딩 (encoding)을 의미한다. 콜레션은 하나의 문자 셋에 있는 문자들을 비교하기 위한 규칙 셋을 의미한다. 가상의 문자 셋을 사용해서 설명을 보다 명확히 하도록 하자.

 

4개의 문자를 사용하는 알파벳이 있다고 가정하자: ‘A’, ‘B’, ‘a’, ‘b’. 각각의 문자에 숫자를 하나씩 부여한다: ‘A’ = 0, ‘B’ = 1, ‘a’ = 2, ‘b’ = 3. 문자 ‘A’는 심볼이고, 숫자 0 은 ‘A’에 대한 인코딩이며, 네 개의 문자를 각각의 인코딩과 결합한 것이 문자 셋이 되는 것이다.

 

두 개의 스트링 값을 비교하는 경우를 가정하자: ‘A’ 와 ‘B’. 가장 간단하게 비교하는 방법은 각 문자의 인코딩을 살펴 보는 것이다: ‘A’의 0 과 ‘B’의 1. 0 이 1보다 작기 때문에, ‘A’가 ‘B’보다 작다고 말할 수 있다. 이와 같은 방법이 문자 셋에 대해서 콜레션을 적용한 것이다. 콜레션은 규칙 셋이다 (이와 같은 경우에는 한 가지 규칙만 있음): “인코딩을 비교한다.” 위와 같이 콜레션 방법 중에 가장 간단한 방법을 우리는 바이너리 콜레션이라고 부른다.

 

하지만 소문자와 대문자를 동일하게 하고자 한다면? 이럴 경우에는 최소한 두 개의 규칙이 있어야 한다:

(1) 소문자 ‘a’ 와 ‘b’를 대문자 ‘A’ 및 ‘B’와 동일하게 취급한다; (2) 그 다음에 인코딩을 비교한다. 이러한 방식을 대소 문자 구분이 없는 콜레션 (case-insensitive collation)이라고 부른다. 이 방식은 바이너리 콜레션보다 다소 복잡하다.

 

실 생활에서는 대부분의 문자 셋이 많은 문자를 가지고 있다: ‘A’ 와 ‘B’ 뿐만 아니라 전체 알파벳, 때로는 다양한 형태의 알파벳 또는 수천 개의 문자를 사용하는 동양의 필기 시스템. 또한 실제의 생활에서는 대부분의 콜레션이 소문자를 구분하는 것 뿐만 아니라 액센트를 구분하는 규칙까지도 가지고 있다.

 

MySQL은 이와 같은 문제를 아래와 같이 처리한다:

  • 다양한 문자 셋을 사용해서 스트링을 저장한다.
  • 다양한 콜레션 규칙을 사용해서 스트링을 비교한다.
  • 동일한 서버, 동일 데이터 베이스, 또는 심지어 동일 테이블에서 서로 다른 문자 셋 또는 콜레션을 사용해서 스트링을 조합한다.
  • 어떤 레벨에서건 문자 셋과 콜레션을 지정할 수 있도록 허용한다.

MySQL은 다른 데이터 베이스 시스템보다도 우수하게 문자 셋 및 콜레션을 처리하고 있지만, 이러한 특성을 효과적으로 사용하기 위해서는 사용 가능한 문자 셋과 콜레션이 어떤 것이 있으며, 디폴트 값을 어떻게 변경 시킬 수 있는지, 그리고 이것들이 스트링 연산자와 함수에 어떻게 영향을 주는지를 잘 알고 있어야 한다.

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