• Home
  • About
    • GreenteaPIE photo

      GreenteaPIE

      GreenteaPIE's Development Story.

    • Learn More
    • Email
    • Github
    • Youtube
  • Posts
    • All Posts
    • All Tags
  • Projects

JAVA 용어 정리 - 11

06 Aug 2023

Reading time ~1 minute

CHAR와 VARCHAR 차이점

CHAR은 말 그대로 고정형이다.
ex) CHAR(8)로 선언 시 글자를 한 개를 넣든 두 개를 넣든 8바이트의 공간을 차지한다.

VARCHAR은 반대로 가변형 문자열이기 때문에 데이터의 길이에 따라서 가변적으로 길이가 정해진다.
ex) VARCHAR(8)로 선언 시 글자를 한 개를 넣으면 1바이트, 2개를 넣으면 2바이트의 공간을 유동적으로 차지한다.
VARCHAR = variable + char

CHAR은 경우에 따라 데이터가 낭비될 수 있지만 추후 연산이 필요 없기 때문에 검색속도 및 읽히는 속도가 VARCHAR에 비해 빠르다는 장점이 있다. 글자 수가 고정되는 경우에 사용하면 데이터를 보다 효율적으로 관리할 수 있다.
ex) 주민등록번호, 전화번호, 사원번호 등

VARCHAR은 입력받은 데이터의 크기가 작을 경우, 그 크기만큼만 메모리를 차지하므로 메모리 사용량을 줄일 수 있다는 장점이 있다.

또한 VARCHAR는 insert나 update가 있을 때 현재 자신이 차지하고 있는 영역이 얼마인지 확인하고, 부족한 경우 더 할당하고 남으면 줄여서 insert 한다. 하지만 CHAR은 고정된 길이의 값을 넣는 것이기 때문에 일단 밀어 넣고, 남은 부분을 공백으로 채우게 된다.

차이점만이 있는 것은 아니고, 공통점도 있다.

CHAR VARCHAR 공통점

  1. 문자열을 데이터 타입으로, 싱글쿼터(‘ ‘)로 값을 나타낸다.
  2. 대소문자 구분을 한다.
  3. 한글은 한 글자당 3byte, 영문자는 알파벳 하나당 1byte의 크기를 가진다.
  4. 설정된 크기를 초과할 경우, 메모리를 초과한 나머지 값은 저장되지 않는다.
    ex)CHAR(20)으로 했을 경우 20byte 만큼만 공간이 할당되기 때문에 20byte를 넘어가면 데이터가 잘리게 된다. 이러한 특성은 VARCHAR도 동일하다.mysql 5 버전부터는 괄호 안의 숫자가 byte가 아닌 글자 수를 의미

VARCHAR 와 TEXT의 차이점

Index의 일부로 사용 가능 여부

  • VARCHAR : 가능
  • TEXT : 불가능

max size limit 가능 여부

  • VARCHAR : 있다, 1~65535
  • TEXT : 없다, only 65535

저장된 character 이외의 현재 저장된 String의 저장 공간

  • VARCHAR : x <= 255 then, 1byte, 256 <= x <= 65535 then, 2byte
  • TEXT : only 2byte

실제 사용에 있어서 ID, 이메일, 제목과 같은 간단한 정보(비교적 짧은 문자열)은 주로 VARCHAR를 이용하고, 댓글이나 신문기사와 같은 긴 문장 종류들은 TEXT를 이용한다고 한다. 또한 데이터가 자주 검색되는 경우 VARCHAR로 저장하는 것이 더 빠르다고 한다.



javastudy Share Tweet +1