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)
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
참조
https://developer-p.tistory.com/72
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
댓글