ShovelingLife
A Game Programmer
ShovelingLife
전체 방문자
오늘
어제
  • 분류 전체보기 (1067)
    • 그래픽스 (57)
      • 공통 (19)
      • 수학 물리 (22)
      • OpenGL & Vulkan (1)
      • DirectX (14)
    • 게임엔진 (180)
      • Unreal (69)
      • Unity (100)
      • Cocos2D-X (3)
      • 개인 플젝 (8)
    • 코딩테스트 (221)
      • 공통 (7)
      • 프로그래머스 (22)
      • 백준 (162)
      • LeetCode (19)
      • HackerRank (2)
      • 코딩테스트 알고리즘 (8)
    • CS (235)
      • 공통 (21)
      • 네트워크 (44)
      • OS & 하드웨어 (55)
      • 자료구조 & 알고리즘 (98)
      • 디자인패턴 (6)
      • UML (4)
      • 데이터베이스 (7)
    • 프로그래밍 언어 (346)
      • C++ (167)
      • C# (88)
      • Java (9)
      • Python (33)
      • SQL (30)
      • JavaScript (8)
      • React (7)
    • 그 외 (9)
      • Math (5)
      • 일상 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Source Code 좌측 상단에 복사 버튼 추가 완료
  • 언리얼 엔진 C++ 빌드시간 단축 꿀팁
  • 게임 업계 코딩테스트 관련
  • 1인칭 시점으로 써내려가는 글들

인기 글

태그

  • 클래스
  • 알고리즘
  • c#
  • 문자열
  • 언리얼
  • 포인터
  • 프로그래머스
  • 배열
  • 유니티
  • Unity
  • SQL
  • 오블완
  • 파이썬
  • 티스토리챌린지
  • C
  • 함수
  • 백준
  • C++
  • 그래픽스
  • string

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ShovelingLife

A Game Programmer

프로그래밍 언어/SQL

[SQL] 데이터 타입 CHAR, VARCHAR

2024. 8. 6. 20:45

MySQL 4.1 이후 버전부터는 CHAR(n), VARCHAR(n)에서 n은 바이트가 아니라 글자 수를 의미한다 또한 4글자 이하의 VARCHAR는 CHAR로 자동으로 변환된다.

 

CHAR는 길이가 고정된 문자열 타입이다. 최대 길이 255

지정된 크기만큼 데이터가 들어오지 않는 경우 남은 공간을 공백(trailing space)으로 채워 넣는다.

예를 들어서 CHAR(5)로 정의된 컬럼에 'ab'라는 2자리 문자열을 넣게 되면 남은 3자리는 'ab    ' 다음과 같이 공백으로 채워진다, 결국 데이터의 크기는 항상 처음 선언된 5 바이트가 소요되고 데이터의 낭비가 발생한다.

 

VARCHAR는 가변의 문자열 타입이다. 최대 길이 65,535

Variable Character Field라는 이름의 의미처럼 가변의 길이를 가진 문자열 타입이다. 데이터를 삽입할 때 데이터 값 외에 삽입된 문자열의 길이를 함께 저장하는데, 255 글자 이하에는 1 바이트, 255 글자가 넘는 문자열의 경우 2 바이트의 추가 공간을 필요로 한다 (실질적인 데이터와 데이터에 대한 길이도 함께 저장되는 구조다).

예를 들어서 VARCHAR(10)에 'varchar'라는 문자열을 삽입하면 데이터에 대한 크기인 7 바이트에 데이터의 길이를 저장하기 위한 1 바이트를 더해져서 총 8 바이트가 소모된다.

 

VARCHAR는 CHAR 타입과 비교했을 때, 데이터의 길이를 확인하는 연산을 추가로 거쳐야 하기 때문에 아주 미세한 속도 차이가 발생할 수 있으나, 이 정도의 차이로 인한 성능 저하는 거의 느낄 수 없는 정도라고 한다, 또한 VARCHAR의 경우 데이터를 수정할 때, 기존보다 큰 데이터를 저장하게 되면 새로운 저장 영역에 할당해야 하기 때문에 데이터 파편화가 발생할 수 있다고 한다.

 

데이터 타입 CHAR, VARCHAR의 차이점, 무엇을 써야할까? (tistory.com)

저작자표시 (새창열림)

'프로그래밍 언어 > SQL' 카테고리의 다른 글

[SQL] count 함수는 null을 포함할까?  (0) 2024.08.07
[SQL] foreign key(외래키) 추가, 삭제, 확인 방법  (1) 2024.08.07
[SQL] 인덱스 힌트 / 옵티마이저 힌트 사용 방법 (주석, 튜닝)  (0) 2024.08.06
[SQL] 정규화(Normalization)와 반정규화(De-Normalization)  (0) 2024.07.31
[SQL] GROUP BY 절 사용법 (그룹별 집계)  (0) 2024.07.29
    '프로그래밍 언어/SQL' 카테고리의 다른 글
    • [SQL] count 함수는 null을 포함할까?
    • [SQL] foreign key(외래키) 추가, 삭제, 확인 방법
    • [SQL] 인덱스 힌트 / 옵티마이저 힌트 사용 방법 (주석, 튜닝)
    • [SQL] 정규화(Normalization)와 반정규화(De-Normalization)
    ShovelingLife
    ShovelingLife
    Main skill stack => Unity C# / Unreal C++ Studying Front / BackEnd, Java Python

    티스토리툴바