데이터 정렬과 문자 집합의 차이점은 무엇입니까?


24

데이터베이스에 대한 일반적인 질문이 있습니다. 일반적으로 데이터베이스와의 데이터 정렬이라는 용어를 사용합니다. 문자 세트와 어떻게 다른지 알고 싶습니다. 데이터 정렬이 문자 집합의 하위 집합 인 것 같습니다. 그것이 사실이라면, 문자 집합에서 목적 다중 데이터 정렬은 무엇입니까?


답변:


27

문자 집합 은 기호 목록입니다. 당신이 비교하는 경우 ASCII를라틴어라틴 당신이 때문에 모든 미국 단어를 쓸 수 있습니다 라틴 모든 포함 ASCII의 모든 영어 단어를 쓰기에 충분하다 문자를. 반대로 ASCII 를 사용하면 예를 들어 'À', 'ë', 'õ', 'Ñ'과 같은 문자가 없기 때문에 서유럽 특정 언어의 모든 단어를 쓸 수 없습니다.

데이터 정렬 은 문자 간의 비교에 관한 것입니다. 문자 세트의 문자를 비교하는 규칙 세트를 정의합니다.

MySQL에서 데이터 정렬은 종종 한 언어 (예 : 'latin1_swedish_ci', 'latin1_german1_ci'등)와 관련이 있습니다. 선택 쿼리를 주문하면 'ö'로 시작하는 단어가 'o'와 'p'로 시작하는 두 단어 사이에 일부 언어 (일부 데이터 정렬)가 표시됩니다. 그러나 다른 데이터 정렬을 사용하면이 문자가 완전히 끝에 배치되어 결과 선택이 달라집니다.


고마워요, 지금 거의 분명합니다. 다국어 사이트를 계획 할 때 데이터 정렬을 선택하는 것이 심각한 문제라고 생각합니까? 예를 들어 데이터 정렬이 'latin1_swedish_ci'인 경우 유니 코드 언어를 처리하는 동안 예상되는 결과를 얻지 못할 것입니다.
Shameer

1
유니 코드를 사용하거나 언젠가는 문제가 발생할 수 있습니다 (예 : 아시아 언어). 데이터 정렬은 사용자의 언어에 따라 다릅니다. 다국어 도구를 사용하려면주의해야 할 사항입니다.
deadalnix

6

이전 답변과 같이 문자 집합은 숫자에 지정된 문자 (문자, 숫자, 표의 문자 등)입니다. 그것들을 볼 수 있으려면 폰트 (작은 "사진")가 있어야합니다. 각 X에 대해 동일한 숫자 (바이트)가 다른 문자를 나타낼 수 있기 때문에 LatinX를 사용하는 것이 중요했습니다.

요즘에는 인코딩을 선택하는 것이 더 중요합니다. 표준은 UTF-8, 유니 코드의 가장 성공적인 표현 (ASCII와 호환 가능하지만 모든 언어, 중국어 및 일본어를 포함하여 유연함) 및 W3C 표준입니다. 즉, 모든 문자 세트를 포함합니다.

데이터 정렬 : 라틴어에서 파생 된 구식 단어입니다. 의미 : 사본 (원고)을 원본과 비교하여 차이점 (오류 또는 변경)을 찾으십시오. 과거에는 매우 유용했지만 이제는 문서와 책이 컴퓨터를 사용하여 작성되고 사본이 항상 원본과 동일하기 때문에 거의 구식입니다. 예 : 이탈리아어 (라틴어에서 파생)에는 동사 "collazionare"가 있지만 사전에 있으며 아무도 사용하지 않습니다.

따라서 데이터 정렬은 비교 연산자의 동작을 정의합니다. =,>, <, <=,> = ...

물론이 연산자는 두 문자열이 같은지 또는 한 단어가 다른 문자열보다 "큰"지를 결정하는 데 사용되며, 정렬하려는 경우 매우 중요합니다. 문자는 모든 언어에 대해 동일한 순서를 갖지 않으므로 한 단어는 데이터 정렬을 사용하는 다른 단어보다 클 수 있지만 다른 언어를 사용하는 것은 아닙니다. 실제 예는 [1]을 참조하십시오.

  • "bin"데이터 정렬이 가장 엄격합니다. SELECT "b"= "B"=> FALSE

  • "ci"데이터 정렬은 대소 문자를 구분하지 않습니다. SELECT "b"= "B"=> TRUE

  • "일반"은 몇 가지 차이점을 무시하는 경향이 있습니다. SELECT "a"= "à"=> TRUE

  • 다른 언어는 하나 이상의 언어에 따라 다릅니다. "스웨덴어"예 (스웨덴이 종종 기본 설정 인 이유를 모르겠습니다)

나는 여전히 모든 데이터 정렬의 동작이 자세하게 설명되어있는 웹 사이트를 찾고 있습니다. 이러한 예제는 내 경험 때문입니다.

[1] http://www.olcot.co.uk/sql-blogs/revised-difference-between-collation-sql_latin1_general_cp1_ci_as-and-latin1_general_ci_as


1
일부 MySQL에서는 여전히 스웨덴어가 기본값입니다. 스웨덴의 작은 팀이 MySQL을 만들었을 때의 유산은 95
Chris Wood
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.