MySQL MySQL 데이터형 및 크기

2018.05.13 21:05

졸리운_곰 조회 수:1130

MySQL 데이터형 및 크기

 

자료형이 왜 필요하나?

먼저 자료형이 왜 필요하는지 부터 생각해보자.

컴퓨터 프로그램은 프로그래머가 의도한 대로 동작한다.
이 때 같은 목적의 프로그램이라고 할지라도 효율적으로 동작하는 것이 더 좋은 프로그램이 된다.

컴퓨터 알고리즘(Computer Algorithm)” 학문에서는 이를 평가(Performance Analysis)하기 위해서,
시간복잡도(time complexity)“와 “공간복잡도(space complexity)“라는 개념을 사용한다.

즉, “더 작은 공간을 사용하면서” , “더 빠르게 처리할수 있는” 프로그램을 만들기 위해서 데이터 자료형을 사용하는 것이다.

작은 공간에 넣을수록 연산(SELECT 등의 연산)이 빨라지고 공간도 적게 차지한다.

다음의 자료형 목록을 보면서 당신의 프로그램의 목적을 충분히 이룰 수 있는 작은 자료형을 찾아보도록 하자.

자료형에 관해 논의한 이 https://blog.lael.be/post/917 글도 한번 읽어보도록 하자.


TINYINT[(M)] [UNSIGNED] [ZEROFILL]

- 자료형의 크기 : 1바이트(1Byte, 2^8 = 8bit)
- 범위 : -128 에서 127 (UNSIGNED 일 경우 0 에서 255)

 

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

- 자료형의 크기 : 2바이트(2Byte, 2^16 = 16bit)
- 범위 : -32768 에서 32767 (UNSIGNED 일 경우 0 에서 65535)

 

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]

- 자료형의 크기 : 3바이트(3Byte, 2^24 = 24bit)
- 범위 : -8388608 에서 8388607 (UNSIGNED 일 경우 0 에서 16777215)

 

INT[(M)] [UNSIGNED] [ZEROFILL]

- 자료형의 크기 : 4바이트(4Byte, 2^32 = 32bit)
- 범위 : -2147483648 에서 2147483647 (UNSIGNED 일 경우 0 에서 4294967295)
- 주의 : 모든 연산은 “signed BIGINT” 로 이루어진다. 따라서 더하기 곱하기 등으로 “signed BIGINT” 의 범위를 벗어난다면 값이 틀려질 것이다.

 

BIGINT[(M)] [UNSIGNED] [ZEROFILL]

- 자료형의 크기 : 8바이트(8Byte, 2^64 = 64bit)
- 범위 : -9223372036854775808 에서 9223372036854775807 (UNSIGNED 일 경우 0 에 18446744073709551615)

 

FLOAT[(M,D)] [ZEROFILL]

- 범위 : -3.402823466E+38 에서 -1.175494351E-38, 0 그리고 1.175494351E-38 에서 3.402823466E+38
- 주의 : unsigned 를 설정할수 없다.

 

DOUBLE[(M,D)] [ZEROFILL]

- 범위 : -1.7976931348623157E+308 에서 -2.2250738585072014E-308, 0 그리고 2.2250738585072014E-308 에서 1.7976931348623157E+308
- 주의 : unsigned 를 설정할수 없다.

 

REAL[(M,D)] [ZEROFILL]

- 범위 : DOUBLE 과 동일

 

DATE

- 범위 : ‘1000-01-01’ 에서 ‘9999-12-31’
- 주의 : unsigned 를 설정할수 없다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

DATETIME

- 범위 : ‘1000-01-01 00:00:00’ 에서 ‘9999-12-31 23:59:59’

 

TIMESTAMP[(M)]

- 범위 : ‘1970-01-01 00:00:00’ 에서 2037

 

CHAR(M) [BINARY]

- 자료형의 크기 : char 필드의 CHARACTER SET 에 따라 가변적임. 예를들어 char(10) 이면서 utf4mb8 일 경우 고정 40Byte 사용.
- 범위 : 1 에서 255 글자
- 주의 : 고정길이로 길이가 작은 값이 입력되면 오른쪽에 스페이스로 채워져서 입력된다. BINARY 키워드가 주어지지 않을 경우 대소문자 구분없이 검색한다.

 

VARCHAR(M) [BINARY]

- 자료형의 크기 : varchar 필드의 CHARACTER SET 에 따라 가변적임. 예를들어 varchar(10) 이면서 utf4mb8 일 경우 최대(크기인덱스 1Byte + 데이터 40Byte 사용).
- 범위 : 1 에서 255 글자 (현재는 1에서 65535 글자 까지. 그러나 varchar(255) 이상을 사용하고 싶은 경우 text 자료형을 사용하여라)
- 주의 : BINARY 키워드가 주어지지 않을 경우 대소문자 구분없이 검색한다.
- TIP1 : 모든 데이터 값의 길이가 고정일 경우 char 가 varchar 보다 저장공간도 적게 차지하고 속도도 아주 약간 더 빠르다.
- TIP2 : 대부분의 상황에서 varchar 와 char 는 IN/OUT 이 동일하게 처리된다. 아무거나 써도 되지만 varchar 를 선택하기를 권장한다.

 

TINYTEXT

- 범위 : 최대 255 byte

 

TEXT

- 자료형의 크기 : 최대 65535 Byte (= 대략 64 KB)
- 범위 : 최대 65535 byte. utf8 기준(3바이트 문자)으로 21844 글자 저장가능.
- 허용크기 계산법 : 65536 = 2^16 = 2Byte 이다. 모든 text 값에는 반드시 이 크기지정 바이트가 붙는다. 따라서 한글의 경우 (65535-2)/3 글자 만큼 저장할 수 있다.

MEDIUMTEXT

- 범위 : 최대 16777215 byte (= 대략 16MB)

 

LONGTEXT

- 범위 : 최대 4294967295 byte (= 대략 4GB)

 

ENUM(‘value1′,’value2’,…)

- 범위 : ‘value1’, ‘value2’, …, or NULL 만이 입력가능하다. 최대 65535 개의 다른 값이 들어갈수 있다.

 

SET(‘value1′,’value2’,…)

- 범위 : ‘value1’, ‘value2’, …, or NULL 만이 입력가능하다. 최대 64 개의 다른 값이 들어갈수 있다.

 


참조 : https://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html

참조 : https://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html

 

[출처] https://blog.lael.be/post/115

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 86865
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 79166
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 95904
444 MXNet을 활용한 이미지 분류 앱 개발하기 file 졸리운_곰 2018.05.30 1428
443 세상에 있는 (거의) 모든 머신러닝 문제 공략법 file 졸리운_곰 2018.05.30 1121
442 sklearn 내부의 pickle lib 를 통해 모델을 저장하고 다시 로드하여 재사용할 수 있다. 졸리운_곰 2018.05.30 1640
441 텐서플로우 기반 딥러닝 훈련 모델 파일 저장, 로딩 및 재활용 file 졸리운_곰 2018.05.30 1773
440 TensorFlow 모델을 저장하고 불러오기 (save and restore) 졸리운_곰 2018.05.30 1640
439 [MySQL] UPDATE 시 에러코드 1175 처리 file 졸리운_곰 2018.05.30 821
438 Database 네이밍 룰(Naming rule) 졸리운_곰 2018.05.14 1656
» MySQL 데이터형 및 크기 졸리운_곰 2018.05.13 1130
436 텐서플로우(TensorFlow)를 이용해서 글자 생성(Text Generation) 해보기 – Char-RNN (간결한 코드) file 졸리운_곰 2018.05.13 690
435 텐서플로우(TensorFlow)를 이용해서 글자 생성(Text Generation) 해보기 – Recurrent Neural Networks(RNNs) 예제 – Char-RNN file 졸리운_곰 2018.05.13 1125
434 실시간 처리를 위한 분산 메시징 시스템 카프카(Kafka) file 졸리운_곰 2018.05.12 1412
433 Flume과 Kafka를 사용한 초당 100만개 로그 수집 테스트 file 졸리운_곰 2018.05.12 1402
432 외장형 그래픽카드로 우분투에서 텐서플로우 사용 How to setup an eGPU on Ubuntu for TensorFlow file 졸리운_곰 2018.05.09 1428
431 Keras and NLTK 케라스를 이용한 NLTK 자연어처리 졸리운_곰 2018.05.08 1607
430 Windows7에서 "처음 심층 학습 프로그램」을 사경 보면 (1-2) 제 1 장 후반 file 졸리운_곰 2018.05.08 1143
429 CSLAIER CSLAIER에 의한 LSTM file 졸리운_곰 2018.05.08 1666
428 Tensorboard 사용하기 1 file 졸리운_곰 2018.05.08 1417
427 텐서보드 사용법 file 졸리운_곰 2018.05.08 1415
426 Ubuntu 18.04 Settings for TensorFlow 설치 file 졸리운_곰 2018.05.08 1184
425 딥러닝용 서버 설치기 file 졸리운_곰 2018.05.07 1396
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED