데이터베이스 - CHAR와 VARCHAR의 차이

이강용·2024년 7월 28일
0

CS

목록 보기
106/109
  • 데이터 베이스에서 CHARVARCHAR는 둘 다 문자열을 저장하는 데 사용되는 데이터 타입이지만 저장 방식용도에서 차이가 있음

CHAR

  • CHAR는 고정 길이 문자열을 저장하는 데이터 타입
  • 지정된 길이만큼의 고정된 공간을 할다하여 데이터를 저장
    • 데이터 길이가 지정된 길이보다 짧으면 나머지 공간은 공백으로 채워짐
  • 고정된 길이의 문자열을 자주 사용하는 경우 적합
  • 예시 : CHAR(10) 타입의 필드는 항상 10바이트를 차지함
    • 'Hello'라는 문자열을 저장하면 Hello. (공백 5개)로 저장

VARCHAR

  • VARCHAR는 가변 길이 문자열을 저장하는 데이터 타입
  • 실제 데이터 길이만큼의 공간을 할당하여 데이터를 저장
    • 길이는 가변적이며 저장된 데이터의 길이에 따라 다름
  • 길이가 가변적인 문자열을 자주 사용하는 경우 적합
  • 예시 : VARCHAR(10) 타입의 필드는 'Hello'라는 문자열을 저장하면 5바이트만 차지
    • 추가로 1-2 바이트가 길이정보를 저장하는 데 사용
특징CHARVARCHAR
저장 방식고정 길이, 공백 패딩가변 길이, 실제 데이터 길이
용도고정 길이 문자열가변 길이 문자열
저장 공간고정된 공간 할당가변적인 공간 할당
속도빠른 접근 속도길이에 따라 접근 속도 변동
예시CHAR(10)VARCHAR(10)

MySQL에서 VARCHAR 최대 길이 설정 시 주의할 점

  1. MySQL의 행의 최대 크기는 65,535바이트
    • MySQL 테이블의 각 행(Row)은 최대 65,535 바이트까지 저장할 수 있음, 이는 테이블의 모든 칼럼의 데이터를 합친 크기
      • 따라서, VARCHAR 칼럼의 길이를 설정할 때는 다른 칼럼들과 함께 고려해야 함
  2. MySQL이 사용하는 문자인코딩 방식은 5.5.3 버전부터 UTF8을 지원하는 utf8mb4
    • utf8mb4는 이모지와 같은 4바이트 문자를 포함하여 한글과 같은 3바이트 문자도 커버함
    • 각 문자의 크기는 다음과 같음
      • 기본 ASCII 문자 : 1 바이트
      • 유럽어 및 일부 확장 문자 : 2 바이트
      • 한글, 일본어, 중국어 등 다국어 문자 : 3 바이트
      • 이모지 및 기타 확장 문자 : 4 바이트
  3. 괄호 안에 들어가는 숫자는 바이트가 아니라 길이 제한
    • VARCHAR(n)에서 n은 바이트 수가 아니라 문자열의 최대 길이를 의미
      • 이는 저장될 수 있는 최대 문자 수를 나타냄
      • 실제 저장되는 바이트 수는 사용된 문자의 인코딩에 따라 다름
      • 예를 들어, VARCHAR(255)는 최대 255개의 문자를 저장할 수 있음, 하지만 각 문자의 바이트 수에 따라 실제로 필요한 저장 공간은 다를 수 있음
profile
HW + SW = 1

0개의 댓글