표준 SQL의 데이터 타입
- 숫자형
- 정수형
- 실수형
- FLOAT, DECIMAL, REAL, DOUBLE
- 문자형
- 고정길이 : CHAR
- 가변길이 : VARCHAR
- 날짜형
- DATE
- TIME
- TIMESTAMP : DATE+TIME
- INTERVAL
MySQL의 데이터 타입
- 숫자형
- 문자형
- 이진문자형
- 날짜형
숫자형
- 정수형
- TINYINT :
1byte 0 ~ 28-1 이다. (-128 ~ +127)
- SMALLINT :
2byte 0 ~ 216-1 이다. (-32768 ~ +32767)
- MEDIUMINT :
3byte 0 ~ 224-1 이다. (-8388608 ~ +8388607)
- INT :
4byte 0 ~ 232-1 이다. (-2147483648 ~ +2147483647)
- BIGINT :
8byte 0 ~ 28-1 이다.
- 실수형
- DEMICAL(p,s)
- p = 전체자리수, s 소수점 자리수
- ex) DEMICAL(5,2)는 -999.99 ~ 999.99의 범위를 가지는 타입이다.
기본적으로 컬럼의 디폴트 부호특성(-를 포함하는가 안하는가)는 포함하는것(SIGNED)로 되어있다.
문자형
- 고정길이 :
CHAR(n)
- 항상 n 개의 문자열을 저장함(같은 데이터타입이라면 n길이의 문자열밖에 저장못함)
- 가변길이 :
VARCHAR(n)
- 최대 n 개의 문자열을 저장할 수 있음.
- 이 경우, 문자열의 길이가 데이터마다 다를 수 있으므로, 데이터의 길이를 저장
- 실제로 저장되는 데이터 형태 = 데이터의 길이 + 데이터
- 최대 길이는 65535까지 저장가능
- TEXT문자열
- 위 가변길이 타입과 같지만, 데이터의 길이가 미리 정해져 있음
- 타입에 따라 정해져 있는 길이가 달라짐
- ENUM(a,b,c...) 나열형
- 나열된 문자열 중 단 하나의 값만 가지는 타입
- 즉 a,b,c중 하나의 값만 가질 수 있다.
- SET(a,b,c...) : 나열형 다중값
- 나열된 문자열 중
NULL을 포함해서 1개이상의 문자열을 갖는 타입
- 값들은
,로 구분함
고정길이와 가변길이의 차이점
- 고정길이는 유저가 입력한 문자열을 그대로 저장하지 않고, 길이에 맞춰서 공백문자를 넣어서 저장하게 된다.
- 검색할 경우, MySQL의 경우에는 공백문자를 제거하고 보여주고, 다른 대부분의 DBMS의 경우에는 그대로 보여준다.
문자열의 비교 방법
- CHAR
- 두 개의 데이터가 있을 때, 짧은쪽의 데이터에 차이나는 길이만큼 공백 문자를 더하여, 같은 길이를 만든 뒤 비교하게 된다.
- 죽
"name" 이라는 값과 "name "이라는 값이 있을때 첫 번째 값에 공백을 하나 추가하고, 비교하게 된다. 결과값은 참으로 나오게 된다.
- VARCHAR
장단점
- VARCHAR - CHAR에 비해서 작은 공간을 사용
- VARCHAR는 CHAR에 비해서 접근 속도가 느려질 수 있음

표의 5번째 줄 두 번째 열을 보면 길이를 넘어서 저장하는 값이 사라지는 것을 알 수 있다.
이진문자형
날짜형
- YEAR
- DATE
- TIME, TIME(fsp)
- DATETIME
- TIMESTAMP
DATETIME과 TIMESTAMP의 차이
- TIMESTAMP는 사실 1970-01-01 00:00:01.000000 UTC 부터의 초의 개수이고, 카운터로 계산이 된다.
- 즉 데이터가 4byte만 차지하게 된다.
- 하지만 보여줄 때 계산과정이 들어가게됨 알아서 잘 판단하고 사용