Mysql에서 DB를 생성할 때 Character Set과 Collation을 지정할 때가 있다.
CREATE DATABASE hardlearner CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Character Set은 무엇인가?
문자들과 그 문자들을 코드화한 인코딩들의 조합이다.
mysql 공식문서는 character set을 다음과 같이 설명하고 있다.
https://dev.mysql.com/doc/refman/8.0/en/charset-general.html
A character set is a set of symbols and encodings. Suppose that we have an alphabet with four letters: A, B, a, b. We give each letter a number: A = 0, B = 1, a = 2, b = 3. The letter A is a symbol, the number 0 is the encoding for A, and the combination of all four letters and their encodings is a character set.
Character set은 기호들과 인코딩들의 집합이다.
기호라고 한 이유는 우리가 일반적으로 생각하는 문자(A, a, B, b ...)이외에도 악센트를 표기하는 기호, 구두점 등이 포함되기 때문인 것 같다.
가정해보자. 우리는 4개의 문자들을 가지고 있다: A, B, a, b. 각 문자에 숫자를 부여한다: A = 0, B = 1, a = 2, b = 3. 여기서 문자 A는 symbol이며 숫자 0은 문자 A를 위한 인코딩(코드화)이다.
* '코드화'란 주어진 정보를 약호나 기호를 사용하여 일정한 규칙에 따라 표준적인 형태로 변환하는 일이다. (네이버 국어사전)
따라서 위에 주어진 4개의 문자(A, B, a, b) 그리고 그 문자들의 인코딩들(A=0, B=1, a=2, b=3)의 조합이 character set이다.
Collation은 무엇인가?
문자열을 비교, 정렬하기 위해 정의된 규칙들의 집합이다.
이 또한 mysql 공식문서를 살펴보자
A collation is a set of rules that defines how to compare and sort character strings. Each collation in MySQL belongs to a single character set. Every character set has at least one collation, and most have two or more collations. A collation orders characters based on weights. Each character in a character set maps to a weight. Characters with equal weights compare as equal, and characters with unequal weights compare according to the relative magnitude of their weights.
collation은 어떻게 문자열을 비교하고 정렬할지 정의한 규칙들의 집합이다.
각 collation은 하나의 character set에 속해있다.
모든 character set은 적어도 1개 이상의 collation을 가지고 있다.
collation은 문자들을 가중치에 기반하여 나열한다.
Character set에 포함된 각 문자는 가중치에 맵핑된다.
동일한 가중치를 가지는 문자들을 비교하면 같다고 판단한다.
그리고 서로 다른 가중치를 가지는 문자들을 비교하면 각 문자가 가지는 가중치의 크고 작음에 따라 동일한 문자인지 아닌지 판단한다.
'프로그래밍' 카테고리의 다른 글
1차 캐시, 영속성 컨텍스트는 어디에 있나? (0) | 2023.10.18 |
---|---|
하이버네이트 6에서 사용자 정의 함수 추가하기 (Adding user defined function in Hibernate 6) (0) | 2023.07.08 |
세션(session)이란 무엇인가? (0) | 2020.05.07 |
CQS(Command-Query Separation) (0) | 2020.03.15 |
AWS EC2 INSTANCE SCHEDULER로 INSTANCE 자동으로 켜고 끄기 (4) | 2020.03.03 |