...
테이블 engine / character 설정
테이블 생성할때 추가 옵션으로 engine과 character를 설정할 수 있습니다.
이 옵션들은 엔진을 변경한다거나 인코딩 포맷을 변경할때 사용할 수 있습니다.
MySQL의 기본 엔진이 InnoDB이기 때문에 별다른 설정을 하지 않아도 디폴트로 적용이 되기는 하지만, 이 디폴트 설정이 어느 상황에서나 작용한다는 조건이 아니므로 테이블을 생성할 때 확실히 명시해주는 것이 좋습니다.
create table nodejs.comments (
id int not null primary key auto_increment,
commenter int not null,
comment varchar(100) not null, -- 댓글
created_at datetime not null default now(),
index commenter_idx(commenter ASC),
constraint commenter foreign key(commenter) references nodejs.users(id) on delete cascade on update cascade
)
comment = "댓글" -- 테이블 설명
default charset = utf8mb4 -- mb4는 이모티콘도 넣을 수 있음
engine = InnoDB; -- 엔진 설정
엔진 명시는 처음 테이블을 생성할 때, 필드 입력이 끝난 뒤에 엔진을 적어주면 됩니다.
ENGINE=InnoDB 이런 식으로 적어주면 되고, 그 뒤에는 character set 설정을 해줬습니다.
워크벤치에서 gui로 테이블을 만들때도, 해당 설정을 할수있는 칸을 보실 수 있습니다.
utf8mb4는 각 문자가 UTF-8 인코딩 체계에서 MaxByte 4로 저장된다는 것을 의미합니다.
기존의 utf8은 원래는 4바이트까지의 자료형을 저장할 수 있지만, 전세계 모든 언어가 21bit로 3바이트 내로 처리가 되어 MySQL에서 3바이트 가변 자료형으로 설계했다고 합니다.
이러한 이유 때문에 4바이트로 처리되는 이모지(이모티콘)는 처리하지 못하는 문제가 생겼고, utf8mb4라는 체계를 추가해서 4바이트까지의 문자열을 처리할 수 있게 했다고 합니다.
collation는 문자를 정렬하는 방식을 설정해줍니다.
처리 방식에 따라 'a'가 'B' 앞에 올 수도 있고 뒤에 올수도 있습니다.
0900은 Unicode Collation Algorithm 버전을 나타내고, ai는 악센트를 구분하지 않음을 나타냅니다.
즉, 정렬 할 때 e, è, é, ê 및 ë 사이에는 차이가 없습니다.
그리고 ci는 대소문자를 구분하지 않습니다. a와 A에 차이를 두지 않는다는 뜻 입니다.
이전에는 utf8mb4_general_ci가 기본 데이터 정렬이었으나, 요즘 사용하는 테이블은 요구사항이 달라져 utf8mb4_0900_ai_ci정렬이 기본값으로 변경되었다고 합니다.
인용한 부분에 있어 만일 누락된 출처가 있다면 반드시 알려주시면 감사하겠습니다
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.