콘솔에서 Database 생성시 Character Set 설정하기

2021. 10. 17. 19:18프로그래밍/데이터베이스

반응형

MySQL 콘솔모드에서 데이터베이스를 생성할 때 아래와 같은 명령어로 간단하게 생성할 수 있다.

mysql> CREATE DATABASE test;

위의 명령어를 해석하면 test라는 데이터베이스를 생성 가 된다.

test라는 DB에 특정 문자 세트를 지정한 것이 아니기 때문에 test라는 데이터베이스의 기본 문자세트(character set)는 디폴트로 latin1으로 설정된다.

 

Character set을 지정해줘야 하는 이유

latin1 문자세트는 영어를 주 언어로 사용하는 영어권 국가들이 사용하는 경우 인코딩 및 디코딩 결과에 문제를 일으키진 않지만 한국과 같은 아시아 국가들의 언어는 문자가 깨져서 입력되거나 출력시 깨져 보이는 결과가 나올 수 있다.

이러한 이유 때문에 문자가 깨지지 않는 UTF-8 같은 유니코드 문자세트의 사용을 권장한다.

 

mysql> CREATE DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

위의 명령어를 해석하면 test라는 데이터베이스를 생성하되 기본 문자세트를 UTF-8로 지정하고, 정령 방식은 utf8_unicode_ci로 생성하시오 가 된다.

 

Character set ➡️ UTF-8 , UTF8MB4 ?

MySQL, MariaDB는 UTF8로 세팅하는 경우 emoji 문자가 입력되지 않는다.

이런 문제점을 해결하기 위해 utf8mb4 라는 character set이 나오게 되었다.

utf8는 가변3바이트를 사용하고, utf8mb4는 내부적으로 한 문자를 표현하는데 4바이트를 사용한다.

요즘에는 emoji문자를 많이 사용하기 때문에 기본적으로 utf8mb4 세팅을 하는게 좋을 것 같다.

mysql> CREATE DATABASE test DEFAULT CHARACTER SET utfmb8 COLLATE utfmb8_general_ci;

 

Character set 확인

mysql> show variables like 'character_set%';

 

정리

MS-SQL에서 데이터베이스를 생성할 땐, SSMS(SqlServerManagementSystem)에서 단순하게 데이터베이스 생성하고 로그 설정만 해줬어서 character set이 정확하게 무슨 의미인지, 왜 설정해야 하는지 궁금했는데 잘 정리된 포스팅들이 있어서 쉽게 이해할 수 있었다.

이제 의미를 아니깐 create 쿼리를 안보고 작성할 수 있을 것 같다.

 

참고 사이트

MySQL 콘솔에서 DB 생성시 유의사항 및 문자세트(Character Set) 설정 방법

[MySQL] utf8 vs utf8mb4 차이는?

 

반응형