MySQL 자료형

골머리·2021년 11월 3일
0

MySQL

목록 보기
2/16

1. 문자데이터

캐릭터셋

  • 영어 → 싱글바이트
  • 한국어 → 멀티바이트
  • show 명령어를 사용해 서버에서 지원되는 캐릭터셋을 볼 수 있다.
show character set;
  • 여기서 maxlen의 값이 1보다 크면 멀티바이트캐릭터셋이다.

문자 자료형

자료형최대 바이트 크기비고
char255fixed length, 길이가 동일할 때
varchar65,535variable-legnth, 열에 저장할 문자열의 길이가 서로 다를 때
tinytext255
text65,535
mediumtext16,777,215문서 등 64KB 제한을 초과하는 데이터를 넣고 싶을 때
longtext4,294,967,295문서 등 64KB 제한을 초과하는 데이터를 넣고 싶을 때

이렇게만 봤을 때 VARCHARTEXT가 무슨 차이가 있는지 궁금해졌다.

VARCHAR와 TEXT의 차이

구분VARCHARTEXT
최대길이를 설정가능한가?NOYES → 예를 들어, VARCHAR(20)
index의 일부로 쓰일 수 있는가?NOYES
저장되는곳disk, 느림memory, 빠름

VARCHAR와 TEXT는 가변이냐 고정이냐로 구분된다.
TEXT는 1byte를 쓰더라도 65,535byte 만큼의 공간을 반드시 할당한다.
반면, VARCHAR는 지정한 공간만큼을 할당하며, (예: VARCHAR(20) : 20글자만큼) 지정한 공간 내에서는 유동적이다.

TEXT를 사용할 때 :

  • 한 단락 이상의 텍스트를 저장하려는 경우
  • 열을 인덱싱할 필요가 없는 경우
  • 테이블의 행 크기 제한에 도달한 경우

VARCHAR를 사용할 때:

  • 몇 개의 단어나 문장을 저장하고 싶을 경우
  • (전체) 열을 인덱싱하고 싶을 경우
  • foreign-key 제약조건이 있는 열을 사용하려는 경우

더 자세히 알고 싶을 경우

2. 숫자데이터

구분자료형사용byte부호있는 표현범위부호없는 표현범위
정수tinyint1-128 부터 1270 부터 255
정수smallint2-32,768 부터 32,7670 부터 65,535
정수mediumint3-8,388,608 부터 8,388,6070 부터 16,777,215
정수int4-2,147,483,648 부터 2,147,483,6470 부터 4,294,967,295
정수bigint8-263 부터 -263-10 부터 -264-1
소수float(p,s)4-3.402823466e+38 부터
-1.175494351e-38
1.175494351e-38 부터
3.402823466e+38
소수double(p,s)8
  • p , precision : 정밀도(소수점 왼쪽과 오른쪽 모두에 허용되는 자릿수)
  • s , scale : 척도(소수점 오른쪽의 허용 자릿수)

3. 시간데이터

시간데이터가 쓰이는 예시는 다양하다.

  • 유저가 회원가입한 날짜 및 시간
  • 고객이 상품을 주문한 날짜 및 시간
  • 유저가 테이블에서 특정 행을 수정한 날짜 및 시간 등
자료형기본형식범위비고
dateYYYY-MM-DD0000-00-00 부터 9999-12-31
datetimeYYYY-MM-DD
HH:MI:SS
0000-00-00 00:00:00.000000 부터
9999-12-31 23:59:59.000000
마이크로초 지정 가능
→ 예를 들어, datetime(2)
timestampYYYY-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 부터 시작하는 초수를 나타냄
yearYYYY1901 부터 2155
timeHHH:MI:SS-838:59:59 부터 838:59:59
profile
PO로 성장하기 위해 노력 중 👩🏾‍💻

0개의 댓글