본문 바로가기

개발(IT)/DB

[개발/MYSQL] Charset / Collation 란

728x90
반응형

처음에 데이터베이스를 생성할 경우 스키마명과 Charset/Collation을 지정하라고 합니다.

그렇다면 Charset/Collation이 무엇인지 알아보도록 하겠습니다.

 

* Charset / Collation 이란

- Charset(Character Set)은 문자의 집합으로 즉, 텍스트 데이터에 대한 저장공간의 크기를 지정하기 위함이다.

대표적으로는 utf8, euckr 그리고 utf8mb4가 있다.

- Collation은 정렬방식으로 저장된 텍스트 데이터를 정렬할 경우 어떻게 비교하여 정렬할 것인가에 대해 지정하기 위함이다.

예시로 "ORDER BY 'text' ASC"에 대해 데이터로 a, b, A, B가 있을 경우 어떤 방식으로 비교하여 정렬이 되었으면 하는가?

주로 많이 사용되는 collation은 utf8_bin(or utf8mb4), utf8_general_ci(or utf8mb4_general_ci) 그리고 utf8_unicode_ci(or utf8mb4_unocode_ci)가 있다.

 

위에서 자주 나오고 자주 사용하는 utf8과 utf8mb4는 서로 어떤 차이가 있을까요?

찾아보니깐 utf8은 utf8mb3로 3바이트 가변 자료형이다.

대부분? 모든? 언어는 utf8 자료형으로 저장하는데 문제가 없으나 최근에 나온 문자열 중 대표적으로 Emoji를 utf8에 저장하면 값이 소실되는 현상이 발생하여 나온 자료형이 utf8mb4로 4바이트 가변 자료형이다.

Emoji

 

"잘못된 부분이나 궁금하신 점은 언제든지 댓글 달아주세요."

728x90
반응형