• VARCHAR는 “Variable Character”의 약자로, 가변적인 길이의 텍스트(Character)를 저장할 수 있는 데이터 타입이다.
• VARCHAR(10)은 0~10자의 문자열을 저장할 수 있으며, VARCHAR는 저장된 문자열 길이에 따라 공간을 효율적으로 사용한다.
• CHAR(n)은 항상 n 바이트를 사용하지만, VARCHAR(n)은 실제 텍스트 길이 + 추가 길이 저장용 1~2 바이트만 사용한다.
• 예를 들어, "hi"를 VARCHAR(10)에 저장하면 3바이트가 사용된다. ("hi" = 2바이트 + 길이 저장 1바이트)
1. VARCHAR의 추가 바이트(Extra Bytes)
• VARCHAR는 길이를 저장하기 위해 추가 바이트를 사용한다.
• n ≤ 255 → 1바이트 오버헤드
• n > 255 → 2바이트 오버헤드
2. CHAR vs VARCHAR 비교
데이터 타입 | 저장 방식 | 공간 사용 |
---|---|---|
CHAR(n) | 고정 길이 | 항상 n 바이트 사용 |
VARCHAR(n) | 가변 길이 | 실제 텍스트 길이 + 1~2바이트 |
3. VARCHAR(1)은 1바이트가 아니다
• VARCHAR(1)의 크기는 사용하는 문자셋(Character Set)에 따라 달라진다.
• 예를 들어, utf8mb4를 사용하면 저장하는 문자에 따라 1~4바이트가 필요하다.
• "A" (ASCII 문자) → 1바이트
• "한" (한글) → 3바이트
• "😊" (이모지) → 4바이트
4. VARCHAR(n)과 문자셋에 따른 최대 저장 크기
• utf8mb4는 최대 4바이트를 사용하므로, VARCHAR(n)이 실제로 차지하는 공간은:
• VARCHAR(100) → (100 × 4) + 1바이트 (최대 401바이트)
• VARCHAR(300) → (300 × 4) + 2바이트 (최대 1,202바이트)
'메모' 카테고리의 다른 글
예외처리에 대한 잡설 (0) | 2022.05.05 |
---|---|
2021.close() (0) | 2022.01.01 |
2020년에 마신 커피들 (0) | 2020.12.31 |
일기 (0) | 2020.08.31 |