본문 바로가기
개발/Database

MySQL 데이터 형식

by 안뇽! 2022. 2. 25.
반응형

혼자공부하는 Mysql 책 04-1


정수형

데이터형식 바이트 수 숫자 범위
TINYINT 1 -128~127
SMALLINT 2 -32,768~32,767
INT 4 -21억~21억
BIGINT 8 -900경~900경

사람의 나이를 INT로 저장하는 것은 데이터 낭비이다. 사람의 나이가 21억이 되진 않으니까 말이다.

 

사람의 키는 SMALLINT(-32768~32768)로 저장하기엔 너무 크다. 그렇다고 TINYINT(-128~127)를 사용하기엔 범위가 부족하다

 

이때 UNSIGNED 예약어를 사용할 수 있다.

 

TINYINT는 -128~127 , 1바이트에 256개를 표현한다.

TINYINT UNSIGNED는 0~255 이다. 이 또한 1바이트에 256개이다. (스타크래프트의 업글 제한이 255인데 TINYINT UNSIGNED인듯하다.)

 

문자형

데이터형식 바이트 수
CHAR(개수) 1~255
VARCHAR(개수) 1~16383

 

거주지역을 서울/부산/경기 등으로 저장하는 경우에는 모두 2글자로 일정하기에 CHAR(2)로 저장하는 것이 좋다.

그룹이름같은 경우는 넉넉하게 10글자 정도로 VARCHAR(10)을 사용하는 것이 좋다.

 

CHAR와 VARCHAR의 차이는 불변, 가변의 차이다.

VARCHAR가 CHAR보다 공간을 효율적으로 운영할 수 있지만, MySQL 내부적으로 성능면에서는 CHAR로 설정하는 것이 조금 더 좋다.

 

데이터가 숫자형태라도 연산이나 크기에 의미가 없다면(번지수, 전화번호 같은경우) 문자형으로 지정하는 것이 좋다.

 

대량의 데이터

데이터 형식 바이트 수
TEXT 형식 TEXT 1~65535
LONGTEXT 1~4294967295
BLOB 형식 BLOB 1~65535
LONGBLOB 1~4294967295

 

소설이나 영화같은 대본을 저장할때는 LONGTEXT(42억자)가 안전할 것 같다.

 

BLOB은 글자가 아닌 이미지, 동영상등의 데이터를 담는다. 이런것을 이진데이터라고 하는데 테이블에 사진, 동영상등을 저장하고 싶다면 BLOB이나 LONGBLOB(최대 4GB)로 데이터 형식을 지정해야한다.(S3를 이용하는게 더 좋을것같다.)

 

실수형

데이터 형식 바이트 수 설명
FLOAT 4 소수점 아래 7자리까지 표현
DOUBLE 8 소수점 아래 15자리까지 표현

 

FLOAT와 DOUBLE형은 거의 비슷, 과학기술용 데이터가 아니라면 FLOAT도 충분하다.

 

날짜형

데이터 형식 바이트 수 설명
DATE 3 날짜만 저장. YYYY-MM-DD 형식으로 사용
TIME 3 시간만 저장. HH:MM:SS 형식으로 사용
DATETIME 8 날짜 및 시간 저장. YYYY-MM-DD HH:MM:SS 형식

DATE는 날짜만, TIME은 시간만, DATETIME은 날짜와 시간을 둘 다 저장한다.

반응형

'개발 > Database' 카테고리의 다른 글

내부조인 외부조인  (0) 2022.03.08
MySQL 변수사용  (0) 2022.02.25
데이터 변경을 위한 SQL 쿼리문 : INSERT, UPDATE, DELETE  (0) 2022.02.13
SELECT ~~ GROUP BY  (0) 2022.02.10
ORDER BY  (0) 2022.02.09