• 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. 문자 세트 지원
    2. 오류 메시지 언어 설정
    3. 문자 세트 추가
    4. 문자 세트에 데이터 정렬 추가
    1. 데이터 정렬의 구현 유형
    2. 데이터 정렬 ID의 선택
    3. 8 비트 문자 세트에 대한 간단한 데이터 정렬 추가
    4. Unicode 문자 세트에 UCA 데이터 정렬 추가
    1. LDML 구문을 사용한 UCA 데이터 정렬의 정의
    2. MySQL에서 지원되는 LDML 구문
    3. Index.xml의 구문 분석 중의 진단
    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.4.4.2 MySQL에서 지원되는 LDML 구문

이 섹션에서는 MySQL이 인식 LDML 구문에 대해 설명합니다. 이것은 http://www.unicode.org/reports/tr35/ 에서 구할 수 LDML 사양에서 설명 된 구문의 부분 집합이며, 자세한 내용은이 사양을 참조하십시오. MySQL은 큰 구문의 부분 집합을 인식하기 때문에 종종 Unicode 공통 로케일 데이터 저장소에서 데이터 정렬 정의를 다운로드하여 해당 부분 ( <rules> 태그와 </rules> 태그 사이의 부분 )를 MySQL Index.xml 파일에 붙여 넣을 수 있습니다. 여기서 설명하는 규칙은 문자의 정렬이 기본 레벨로 진행되는 것을 제외한 모든 지원됩니다. 보조 이상의 정렬 수준에서 차이를 지정하는 규칙은 인식되지만 (예를 들어, 데이터 정렬의 정의에 포함 할 수 있습니다) 기본 수준에 등호로 처리됩니다.

MySQL Server는 Index.xml 파일의 구문 분석 중 문제가 발견되면 진단을 생성합니다. 섹션 10.4.4.3 "Index.xml의 구문 분석 중 진단" 을 참조하십시오.

문자 표현

LDML 규칙 이름이 붙은 문자는 문자 적 또는 \u nnnn 형식으로 쓸 수 있습니다. 그러나 nnnn 는 16 진수 Unicode 코드 포인트입니다. 예를 들어, A 와 á 은 문자 그대로 또는 \u0041 와 \u00E1 로 쓸 수 있습니다. 16 진수 값에서 A 에서 F 숫자는 대소 문자를 구별하지 않습니다. \u00E1 와 \u00e1 것은 동일합니다. UCA 4.0.0 데이터 정렬의 경우 16 진수는 Basic Multilingual Plane 문자에만 사용할 수 있으며 0000 에서 FFFF 의 BMP 범위 밖의 문자는 사용할 수 없습니다. UCA 5.2.0 데이터 정렬의 경우 16 진수를 모든 문자에 사용할 수 있습니다.

Index.xml 파일 자체는 UTF-8 인코딩을 사용하여 작성해야합니다.

구문 규칙

LDML에는 문자 순서를 지정 재설정 규칙 및 이동 규칙이 있습니다. 순서 부는 기준점을 설정하는 재설정 규칙에서 시작하여 그 기준점을 기준으로 문자를 정렬하는 방법을 보여 시프트 규칙이 계속되는 일련의 규칙으로 지정됩니다.

  • <reset> 규칙은 그 자체로는 어떤 순서 지정도 지정하지 않습니다. 그 대신 이것은 소정의 문자와 관련하여 후속 시프트 규칙을 수행 할 수 있도록 순서를 "재설정"합니다. 다음 두 규칙도 문자 'A' 와 관련하여 실행되도록 후속 시프트 규칙을 재설정합니다.

     <reset> A </ reset>
    
     <reset> \ u0041 </ reset>
    
  • <p> < <s> 및 <t> 의 시프트 규칙은 문자와 문자의 초등, 중등 및 3 차의 차이를 정의합니다.

    • 주의 차이를 사용하여 개별 문자를 구분합니다.

    • 보조 차이를 사용하여 악센트 변형을 구분합니다.

    • 3 차의 차이를 사용하여, 대문자와 소문자의 변형을 구분합니다.

    다음 두 규칙도 'G' 문자의 기본 이동 규칙을 지정합니다.

     <p> G </ p>
    
     <p> \ u0047 </ p>
    
  • <i> 시프트 규칙은 문자가 다른 문자와 동일하게 정렬하도록 지정합니다. 다음의 규칙은 'b' 가 'a' 와 같이 정렬합니다.

     <reset> a </ reset>
     <i> b </ i>
    
  • 약기 된 시프트 구문은 태그의 단일 쌍을 사용하여 여러 시프트 규칙을 지정합니다. 다음 표는 단축 된 구문 규칙과 동등한 약기 않은 규칙과 대응을 나타냅니다.

    표 10.2 약기 된 시프트 구문

    약기 된 구문 약기 않은 구문
    <pc>xyz</pc> <p>x</p><p>y</p><p>z</p>
    <sc>xyz</sc> <s>x</s><s>y</s><s>z</s>
    <tc>xyz</tc> <t>x</t><t>y</t><t>z</t>
    <ic>xyz</ic> <i>x</i><i>y</i><i>z</i>

  • 확장 형식은 여러 문자의 시퀀스의 기준점을 설정하는 초기화 규칙입니다. MySQL은 2에서 6 자 길이의 확장 형식을 지원합니다. 다음 규칙은 기본 수준 'z' 를 3 문자 시퀀스 'abc' 보다 크게합니다.

     <reset> abc </ reset>
     <p> z </ p>
    
  • 단축 형식은 여러 문자의 시퀀스를 정렬하는 시프트 규칙입니다. MySQL은 2에서 6 자 길이의 단축 형식을 지원합니다. 다음 규칙은 기본 수준에서 3 문자 시퀀스 'xyz' 를 'a' 보다 크게합니다.

     <reset> a </ reset>
     <p> xyz </ p>
    
  • 긴 확장 형식과 긴 단축 형식을 함께 사용할 수 있습니다. 다음 규칙은 기본 수준에서 3 문자 시퀀스 'xyz' 을 3 문자 시퀀스 'abc' 보다 크게합니다.

     <reset> abc </ reset>
     <p> xyz </ p>
    
  • 일반적으로 확장 형식의 구문은 <x> 와 <extend> 요소를 사용하여 확장 형식을 지정합니다. 다음 규칙은 보조 수준에서 문자 'k' 를 시퀀스 'ch' 보다 크게합니다. 즉, 'k' 는 'c' 에 'h' 가 계속 된 뒤의 문자에 확장 한 것처럼 작동합니다.

     <reset> c </ reset>
     <x> <s> k </ s> <extend> h </ extend> </ x>
    

    이 구문은 긴 시퀀스를 허용합니다. 다음 규칙은 타샤 리 수준에서 시퀀스 'ccs' 시퀀스 'cscs' 보다 크게합니다.

     <reset> cs </ reset>
     <x> <t> ccs </ t> <extend> cs </ extend> </ x>
    

    LDML 사양은 일반 확장 형식 구문을 "신중을 요하는 것"이라고 설명하고 있습니다. 자세한 내용은 사양을 참조하십시오.

  • 이전 컨텍스트 구문은 <x> 및 <context> 요소를 사용하여 문자 앞에 컨텍스트에 의해 정렬이 변경되도록 지정합니다. 다음 규칙은 보조 수준에서 '-' 를 'a' 보다 큰하지만 이것은 '-' 앞에 'b' 가있을 때뿐입니다.

     <reset> a </ reset>
     <x> <context> b </ context> <s> - </ s> </ x>
    
  • 이전 컨텍스트 구문은 <extend> 요소를 포함 할 수 있습니다. 다음 규칙은 기본 수준 'def' 를 'aghi' 보다 큰하지만 이것은 'def' 앞에 'abc' 가있을 때뿐입니다.

     <reset> a </ reset>
     <x> <context> abc </ context> <p> def </ p> <extend> ghi </ extend> </ x>
    
  • 초기화 규칙은 before 속성이 허용되어 있습니다. 일반적으로 재설정 규칙의 뒤의 이동 규칙은 다시 문자 뒤에 정렬하는 문자를 지정합니다. before 속성을 지닌 재설정 규칙 후 이동 규칙은 다시 문자 앞에 정렬하는 문자를 지정합니다. 다음 규칙은 기본 수준에서 문자 'b' 를 'a' 의 직전에 배치합니다.

     <reset before = "primary"> a </ reset>
     <p> b </ p>
    

    허용되는 before 속성 값은 이름 또는 동등한 수치로 정렬 수준을 지정합니다.

     <reset before = "primary">
     <reset before = "1">
    
     <reset before = "secondary">
     <reset before = "2">
    
     <reset before = "tertiary">
     <reset before = "3">
    
  • 초기화 규칙은 리터럴 문자가 아니라 논리 리셋 위치에 이름을 넣을 수 있습니다.

     <first_tertiary_ignorable />
     <last_tertiary_ignorable />
     <first_secondary_ignorable />
     <last_secondary_ignorable />
     <first_primary_ignorable />
     <last_primary_ignorable />
     <first_variable />
     <last_variable />
     <first_non_ignorable />
     <last_non_ignorable />
     <first_trailing />
     <last_trailing />
    

    다음 규칙은 기본 수준 'z' 를 Default Unicode Collation Element Table (DUCET) 항목을 따라 CJK이 아닌 무시할 수없는 문자보다 크게합니다.

     <reset> <last_non_ignorable /> </ reset>
     <p> z </ p>
    

    논리 위치는 다음 표에 나와있는 코드 포인트가 설정되어 있습니다.

    표 10.3 논리 리셋 위치의 코드 포인트

    논리 위치 Unicode 4.0.0 코드 포인트 Unicode 5.2.0 코드 포인트
    <first_non_ignorable/> U + 02D0 U + 02D0
    <last_non_ignorable/> U + A48C U + 1342E
    <first_primary_ignorable/> U + 0332 U + 0332
    <last_primary_ignorable/> U + 20EA U + 101FD
    <first_secondary_ignorable/> U + 0000 U + 0000
    <last_secondary_ignorable/> U + FE73 U + FE73
    <first_tertiary_ignorable/> U + 0000 U + 0000
    <last_tertiary_ignorable/> U + FE73 U + FE73
    <first_trailing/> U + 0000 U + 0000
    <last_trailing/> U + 0000 U + 0000
    <first_variable/> U + 0009 U + 0009
    <last_variable/> U + 2183 U + 1D371

  • <collation> 요소는 변화 규칙의 문자 가중치 계산에 영향을 shift-after-method 속성을 허용합니다. 이 속성은 다음 값이 허용되어 있습니다.

    • simple : before 속성이없는 재설정 규칙에서 문자의 가중치를 계산합니다. 이 속성이 지정되지 않은 경우 기본값입니다.

    • expand : 재설정 규칙 후의 변화에 확장 형식을 사용합니다.

    '0' 과 '1' 이 0E29 과 0E2A 의 무게를 가지며 모든 기본 라틴 문자를 '0' 에서 '1' 사이에 설정합니다.

     <reset> 0 </ reset>
     <pc> abcdefghijklmnopqrstuvwxyz </ pc>
    

    단순한 쉬프트 모드의 경우 가중치는 다음과 같이 계산됩니다.

     'a'has weight 0E29 +1
     'b'has weight 0E29 +2
     'c'has weight 0E29 +3
     ...
    

    그러나 '0' 에서 '1' 사이에는 26 개의 문자를 설정하는 데 충분한 미사용 위치가 없습니다. 숫자와 문자가 혼합 된 결과입니다.

    이를 해결하려면 shift-after-method="expand" 를 사용합니다. 이 경우 가중치는 다음과 같이 계산됩니다.

     'a'has weight [0E29] [233D + 1]
     'b'has weight [0E29] [233D + 2]
     'c'has weight [0E29] [233D + 3]
     ...
    

    233D 는 문자 0xA48C 의 UCA 4.0.0 무게입니다. 이것은 마지막 무시할 수없는 문자 (CJK를 제외하고 데이터 정렬 일종의 가장 큰 문자)입니다. UCA 5.2.0도 마찬가지이지만, 문자 0x1342E 에 3ACA 을 사용합니다.

MySQL 고유의 LDML 확장

MySQL 5.6에서는 LDML 규칙의 확장 기능은 <collation> 요소는 데이터 정렬을 기반으로 UCA 버전을 나타내는 version 옵션 속성을 <collation> 태그에 포함 할 수 있습니다. version 속성을 생략하면 기본값은 4.0.0 입니다. 예를 들어, 다음의 지정은 UCA 5.2.0에 따라 데이터 정렬을 나타냅니다.

 <collation id = " nnn "name ="utf8_ xxx _ci "version ="5.2.0 ">
 ...
 </ collat​​ion>


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