본문 바로가기
DB/SQL

MySQL - 자료형 CHAR와 VARCHAR의 차이점

by 꼬바리 2021. 5. 4.

  안녕하세요 꼬바리입니다.



문자열 자료형 - CHAR, VARCHAR

 

자료형

 의미 

 대응하는 범위 

 CHAR

 고정형 문자열

 255자 까지 

 VARCHAR 가변형 문자열                 1 ~ 65535바이트 문자 수의 상한은 이용하는 문자 코드에 따라 다르다.

 

  자료형 CHAR와 VARCHAR은 문자열을 표현할 때 사용하는 자료형으로 사용할 때 길이를 명시해 주어야 한다.

  CHAR 타입은 고정 사이즈이기 때문에 CHAR(20)으로 했을 경우 20byte만큼만 공간이 할당되기 때문에            20byte를 넘어가면 데이터가 잘리게 된다. 이러한 특성은 VARCHAR도 동일하다.

 

 

 

 ↑ char(20),varchar(20) 컬럼에 20byte가 넘는 문자열을 넣었을 때 20byte가 넘는 경우 데이터가 잘린다.

    # CHAR(20)=char(20) 대소문자를 구분하지 않는다.

    # VARCHAR(20)=varchar(20) 대소문자를 구분하지 않는다.

 

 그렇다면 차이점은 무엇일까 ?

문자열 자료형 CHAR 
고정형 문자열이기 때문에 CHAR(20)일때 2byte의 문자만 넣어도 20byte만큼의 데이터를 잡게된다. 

반면 VARCHAR ( variable+char )는 가변형 문자열이기때문에
데이터의 길이에 따라서 가변적으로 길이가 정해진다. VARCHAR(20)일 경우 입력한 크기만큼의 공간만 잡히게 
는데, 2byte의 문자를 넣으면 2byte만큼의 데이터만 잡게된다.


  고정 사이즈인 CHAR 타입은 추후에 연산할 필요가 없기 때문에 검색속도 및 읽히는 속도가 다른 타입보다 
  월등히 빠르다 .사이즈가 고정되어 있을때 char타입을 사용하면 더 효율적으로 데이터를 관리할 수 있다. 
( ex) (아이디, 주민등록번호, ..)


  예를 들어 아이디를 만드는데 데이터 베이스에 자료형이 char(100)으로 잡혀 있다면, sogood( 6byte )이라는 
  아이디를 만들 때 6byte를 잡는데 94byte의 데이터가 낭비된다. 

  따라서 상황에따라 맞는 타입을 사용하면서 공간복잡도와 시간복잡도를 모두 고려해서 타입을 설정해야한다.

 

  

 

 

 

 

728x90
반응형

댓글