http://www.mysqlkorea.co.kr
한글매뉴얼 5.0 , 한글매뉴얼 5.1 , MySQL 5.1 HA , 사용자매뉴얼
한글매뉴얼 5.0  
한글매뉴얼 5.1  
MYSQL 5.1 HA  
사용자매뉴얼  
영문매뉴얼  
최신글
mysql 백업/복구 …
apm 설치 헤메고…
mysql bin로그 갱…
myxql 관련 지원 …
MySQL 5.7에서 프…
 
한글매뉴얼 5.1 > 매뉴얼존 > 한글매뉴얼 5.1
 

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

 

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

 

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

 

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

 

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

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

 

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

 

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

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

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

상위
10.1. 일반적인 의미의 문자 셋…
MySQL Korea 사이트의 컨텐츠 소유권은 (주)상상이비즈에 있으므로 무단전재를 금합니다.
ⓒ 2010-2011 ssebiz All Rights Reserved.