SQL 자료형
SQL을 사용하여 테이블을 구성하려면, 테이블을 설계하고,
테이블을 설계하려면, 컬럼을 구성해야합니다.
컬럼을 구성 하기 위해서는 기술적으로 인덱스를 사용하고 구조를 짜는 것도 중요하지만,
기본적으로 컬럼의 자료형을 적재적소에 사용하는 것이 제일 중요합니다.
이번 글은 컬럼의 자료형에 대한 설명을 하겠습니다.
컬럼의 자료형
1) 숫자형 TINYINT, INT, FLOAT
2) 문자형 CHAR, VARCHAR, TEXT, ENUM
3) 날짜형 DATE, DATETIME, TIMESTAMP
크게 나누면 위 3가지의 자료형이 존재합니다.
아래에 각 자료형에 따라서 자세한 설명을 하겠습니다.
숫자형 자료형
1) TINYINT
- 가장 작은 숫자 자료형.
- 부호가 있는 경우 -128 ~ 127.
- 부호가 없는 경우 0 ~ 255.
- 1byte 크기를 갖는다.
2) SMALLINT
- 부호가 있는 경우 -32768 ~ 32767.
- 부호가 없는 경우 0 ~ 65535.
- 2bytes 크기를 갖는다.
3) MEDIUMINT
- 부호가 있는 경우 -8388608 ~ 8388607.
- 부호가 없는 경우 0 ~ 16777215.
- 3bytes 크기를 갖는다.
4) INT
- 일반적인 숫자 자료형.
- 부호가 있는 경우 -2147483648 ~ 2144483647.
- 부호가 없는 경우 0 ~ 4294967295.
- 4bytes 크기를 갖는다.
5) INTEGER
- INT와 표기법만 다르고 같다.
6) BIGINT
- 부호가 있는 경우 -922337036854775808 ~ 922337036854775807.
- 부호가 없는 경우 0 ~ 18446744073709551615
- 8bytes 크기를 갖는다.
7) FLOAT
- 최소 +_1.175494351E-38 ~ 최대 +_3.402823466E_38.
- 4bytes 크기를 갖는다.
8) DOUBLE
- 최소 ±1.7976931348623157E-308 ~ 최대 ±2.2250738585072014E+308.
- 8bytes 크기를 갖는다.
9) DECIMAL
- 소수를 저장하는 용도로 사용.
- 내부적으로는 문자 형태로 저장되는 타입이다.
- 예를 들어, 3.141592 은 3 이 char 하나의 공간에 저장된다. 나머지 소수 한자리도 마찬가지다.
문자형 자료형
1) CHAR
- CHAR(0) 도 지원한다.
- CHAR(M)에서 실제값이 M만큼의 글자 수보다 작을 때 남는 자릿수만큼 공백을 붙여서 저장한다.
- 즉, 지정한 크기만큼 공백을 붙여서라도 모두 사용한다는 뜻이다.
- 1부터 최대 255 의 자릿수를 지원하며, CHAR(M)애서 M으로 지정한 용량만큼 바이트를 사용.
- "입력한글자수" bytes 사용.
2) VARCHAR
- 지정할 수 있는 길이(M)는 1 ~ 255 글자 수 지정.
- VARCHAR(M)에서 사용한 길이(N)까지만 사용해서 저장.
- char 형보다 기억장치를 효율적으로 입력한 글자 길이 만큼만 사용할 수 있다.
- "입력한글자수"+1 bytes 사용.
3) TINYBLOB
- 최대 255개의 문자를 저장.
- "지정한 용량"+1 byte의 용량 사용.
4) TINYTEXT
- TINYBLOB와 사용 형태가 같지만 text라는 명명의 의미가 같다.
5) BLOB
- 최대 65535 개의 문자를 저장.
- "지정한 용량"+2 byte의 용량 사용.
6) TEXT
- BLOB와 사용 형태가 같지만 text라는 명명의 의미가 같다.
7) MEDIUMBLOB
- 최대 16777215 개의 문자를 저장.
- "지정한 용량"+3 byte의 용량 사용.
8) MEDIUMTEXT
- MEDIUMBLOB와 사용 형태가 같지만 text라는 명명의 의미가 같다.
9) LONGBLOB
- 최대 429496729 개의 문자를 저장.
- "지정한 용량"+4 byte의 용량 사용.
10) LONGTEXT
- LONGBLOB와 사용 형태가 같지만 text라는 명명의 의미가 같다.
11) ENUM
- 입력한 문자형태의 값을 숫자로 저장.
- value 중에 하나만 저장하며,
- value가 ~255인 경우에는 1 byte 사용.
- value가 256 ~ 65535인 경우에는 2 bytes 사용.
날짜형 자료형
1) DATE
- '1001-01-01' ~ '9999-12-31' 를 저장할 수 있다.
- 저장 용량은 3bytes가 필요.
- 'YYYY-MM-DD' 와 같은 형식.
2) DATETIME
- 날짜와 시간을 같이 저장한다.
- '1001-01-01 00:00:00' ~ '9999-12-31 23:59:59' 를 저장할 수 있다.
- 저장 용량은 8bytes가 필요.
- 'YYYY-MM-DD HH:MM:SS' 와 같은 형식.
3) TIMESTAMP
- '1970-01-01 00:00:00' 이후부터 초를 숫자로 저장하는 자료형.
- 저장 용량은 4bytes가 필요.
- 약 40억초를 저장할 수 있으므로 2037년까지의 값을 다룰 수 있다.
4) TIME
- '-838:59:59' 에서 '838:59:59' 를 저장할 수 있다.
- 저장 용량은 3bytes가 필요.
- 'HH:MM:SS '와 같은 형식.
5) YEAR
- 연도만 저장하는 자료형.
- year(n)? 와 같은 형식.
- n 은 2와 4를 지정할 수 있다.
- n이 2인 경우에 값의 범위는 70 에서 69 .
- n이 4인 경우에는 1970 에서 2069 .
- 저장 용량은 1byte를 사용.