본문 바로가기
Programming/DB

[DB/MYSQL] 자료형 char, varchar, text 의 차이점

by 강한수달 2021. 12. 28.

char

- char (n) 고정 크기 문자열 데이터
- n 은 바이트로 문자열 크기를 정의하며, 1에서 255 사이의 값임

- 값에 멀티바이트가 포함되면 길이는 지정한 n 보다 더 짧아질 수 있음

 

※ n은 문자열의 길이로 볼 수 있으나 싱글바이트 문자인 경우만 해당함.

  싱글바이트 : 0x00 ~ 0x7F 범위의 문자(아스키코드) + 0x80 ~ 0xFF 범위의 확장 문자

  멀티바이트 : 1byte 만으로는 표현이 불가능한 문자를 말함(한글의 경우 각 문자당 2byte의 크기임)

    UTF-8 인코딩의 경우 한 문자를 표현하기 위해 1~4byte 까지 사용함(https://ko.wikipedia.org/wiki/UTF-8)

 

UTF-8 - 위키백과, 우리 모두의 백과사전

UTF-8은 유니코드를 위한 가변 길이 문자 인코딩 방식 중 하나로, 켄 톰프슨과 롭 파이크가 만들었다. UTF-8은 Universal Coded Character Set + Transformation Format – 8-bit 의 약자이다. 본래는 FSS-UTF(File System Sa

ko.wikipedia.org

 

ASCII Code Table

 

varchar

- varchar (n) 가변 크기의 문자열 데이터
- n 은 바이트로 문자열 크기를 정의하며, 1에서 65535 사이의 값임

- 값에 멀티바이트가 포함되면 길이는 지정한 n 보다 더 짧아질 수 있음

- Index의 일부로 사용할 수 있음 (o)

 

 

text

- 문자열은 최대 크기인 65535 자로 고정됨

- 2 + n 바이트의 디스크 공간을 차지함 (n은 저장된 문자열의 길이)

- 값에 멀티바이트가 포함되면 길이는 지정한 n 보다 더 짧아질 수 있음

- Index의 일부로 사용할 수 없음 (x)

 

 

 

 

알아볼 것

- C언어는 문자열의 끝에 널 종단 문자열('\0')이 들어갈 자리가 반드시 필요한데 DB에서는 varchar(5) 로

  지정한 Column에 'abcde' 문자열 삽입하여 새로운 row를 만드는게 가능한가?

 

* 널 종단 문자열('\0')은 문자열의 끝을 지정하는 목적으로 사용됨. 관련자료 하단 참고

https://ko.wikipedia.org/wiki/%EB%84%90_%EC%A2%85%EB%8B%A8_%EB%AC%B8%EC%9E%90%EC%97%B4

 

널 종단 문자열 - 위키백과, 우리 모두의 백과사전

 

ko.wikipedia.org

 

 

참조

https://developer-p.tistory.com/72

https://www.sqlshack.com/varcharmax-data-type-walkthrough-and-its-comparison-with-varcharn-in-sql-server/

https://stackoverflow.com/questions/25300821/difference-between-varchar-and-text-in-mysql/25301046#25301046

https://pythonq.com/so/mysql/8814

https://docs.microsoft.com/ko-kr/cpp/c-runtime-library/single-byte-and-multibyte-character-sets?view=msvc-170

https://docs.microsoft.com/ko-kr/sql/t-sql/data-types/char-and-varchar-transact-sql?view=sql-server-ver15

댓글