show
명령어를 사용해 서버에서 지원되는 캐릭터셋을 볼 수 있다.show character set;
maxlen
의 값이 1보다 크면 멀티바이트캐릭터셋이다.자료형 | 최대 바이트 크기 | 비고 |
---|---|---|
char | 255 | fixed length, 길이가 동일할 때 |
varchar | 65,535 | variable-legnth, 열에 저장할 문자열의 길이가 서로 다를 때 |
tinytext | 255 | |
text | 65,535 | |
mediumtext | 16,777,215 | 문서 등 64KB 제한을 초과하는 데이터를 넣고 싶을 때 |
longtext | 4,294,967,295 | 문서 등 64KB 제한을 초과하는 데이터를 넣고 싶을 때 |
이렇게만 봤을 때 VARCHAR
와 TEXT
가 무슨 차이가 있는지 궁금해졌다.
구분 | VARCHAR | TEXT |
---|---|---|
최대길이를 설정가능한가? | NO | YES → 예를 들어, VARCHAR(20) |
index의 일부로 쓰일 수 있는가? | NO | YES |
저장되는곳 | disk, 느림 | memory, 빠름 |
VARCHAR와 TEXT는 가변이냐 고정이냐로 구분된다.
TEXT는 1byte를 쓰더라도 65,535byte 만큼의 공간을 반드시 할당한다.
반면, VARCHAR는 지정한 공간만큼을 할당하며, (예:VARCHAR(20)
: 20글자만큼) 지정한 공간 내에서는 유동적이다.
TEXT
를 사용할 때 :
VARCHAR
를 사용할 때:
구분 | 자료형 | 사용byte | 부호있는 표현범위 | 부호없는 표현범위 |
---|---|---|---|---|
정수 | tinyint | 1 | -128 부터 127 | 0 부터 255 |
정수 | smallint | 2 | -32,768 부터 32,767 | 0 부터 65,535 |
정수 | mediumint | 3 | -8,388,608 부터 8,388,607 | 0 부터 16,777,215 |
정수 | int | 4 | -2,147,483,648 부터 2,147,483,647 | 0 부터 4,294,967,295 |
정수 | bigint | 8 | -263 부터 -263-1 | 0 부터 -264-1 |
소수 | float(p,s) | 4 | -3.402823466e+38 부터 -1.175494351e-38 | 1.175494351e-38 부터 3.402823466e+38 |
소수 | double(p,s) | 8 |
시간데이터가 쓰이는 예시는 다양하다.
자료형 | 기본형식 | 범위 | 비고 |
---|---|---|---|
date | YYYY-MM-DD | 0000-00-00 부터 9999-12-31 | |
datetime | YYYY-MM-DD HH:MI:SS | 0000-00-00 00:00:00.000000 부터 9999-12-31 23:59:59.000000 | 마이크로초 지정 가능 → 예를 들어, datetime(2) |
timestamp | YYYY-MM-DD HH:MI:SS | 1970-01-01 00:00:00.000000 부터 2038-01-18 22:14:07.999999 | 타임스탬프 값은 "1970-01-01 00:00:00" UTC 부터 시작하는 초수를 나타냄 |
year | YYYY | 1901 부터 2155 | |
time | HHH:MI:SS | -838:59:59 부터 838:59:59 |