티스토리 뷰

Backend/꾸준히 TIL

[DB/MySQL] collate 예약어

개발하는 후딘 2023. 4. 5. 17:02
728x90
반응형

개발셋팅 문서에서 데이터베이스 생성을 할때 collate 라는 예약어를 처음봤다.

CREATE DATABASE [데이터베이스명] CHARACTER SET [문자열셋] COLLATE [collation]

 

character set ?

A character set is a set of symbols and encodings.

A collation a set of rules for comparing characters in a character set

 

위의 정의를 직역하자면, character-set은  symbol(기호) 와 encoding(인코딩) 의 집합이고

collation 은 charcter-set 체계에서 문자를 구분할 수 있게 만드는 규칙을 의미이다.

 

A=0, B=1, a=2, b=3 이라 할때

A는 문자자체 기호(symbol) 이며, 0은 A를 인코딩한 값(encoding)이다.

인코딩한 값 0은 A 라는 문자를 나타내기 위한 구분자 이기도하다.

A=0 을 character-set 이다.

0이라는 값을 나타냄으로써 'A'라는 문자를 정의한거다.

 

 

collate?

[공식문서 정의]

  • 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.

 

  • 문자열을 비교하거나 정렬을 하거나 문자열을 비교에 관해 정의된 규칙
  • 각 collation 은 단일문자셋
  • 모든 문자셋은 최소한 1개의 규칙을 갖고 대부분은 여러개의 규칙을 갖는다.

 

참고 공식문서

 

MySQL :: MySQL 8.0 Reference Manual :: 10.14 Adding a Collation to a Character Set

10.14 Adding a Collation to a Character Set Warning User-defined collations are deprecated; you should expect support for them to be removed in a future version of MySQL. As of MySQL 8.0.33, the server issues a warning for any use of COLLATE user_defined_

dev.mysql.com


Conclusions

CREATE DATABASE [데이터베이스명] CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

위의 sql 문을 분석해보자면

문자열을 인코딩하게 해주는 character-set은 utf8mb4 이다. 

위의 예시를 참고하여  A=0 이라  정의할때 이 

즉 A라는 값을 0으로 인코딩하게 하는 캐릭터 셋이다. 'A'라는 문자를 구분해주는 것이다.

 

collate의 utf8mb4_general_ci 는

utf8mb4 라는 character-set 이 갖는 규칙중 하나이다.

어떤식으로 문자들을 비교하고, 정렬하는지 를 나타내는 규칙이다. character-set 은 최소 한개의 규칙(collation)을 갖는다.

 

character-set 과 collate  정의에 대해서 탐색해봤다.

다큐먼트를 읽어보면서, 내가 이해한 걸 나만의 언어로 표현하는 시도를 많이 해볼 필요가 있다.


 

이 블로그의 글을 읽다가 잘못된 내용이 있다면 코멘트로 피드백을 해주시면 감사하겠습니다.

읽어주셔서 감사합니다.

728x90
반응형

'Backend > 꾸준히 TIL' 카테고리의 다른 글

[기본기] 네트워크 1  (0) 2023.04.29
[디자인패턴] 싱글톤 패턴  (0) 2023.04.07
[IT 개념] HTTP 통신  (0) 2023.03.16
[IT 개념] CI와 CD 의미  (1) 2023.03.13
[Nestjs/AWS SES ] AWS SES 로 메일 전송하기  (0) 2023.02.11
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함