[MSSQL] 필수 데이터 타입 총정리

728x90

 

내가 보려고 만든 필수 데이터 타입 총정리!

 

 

문자 유형(Character Data Types)

데이터 타입 설명 최대 길이(문자) 비고
CHAR(n) 고정 길이 문자열 8,000 짧은 문자열은 공백으로 채움
VARCHAR(n) 가변 길이 문자열 8,000 문자열 크기만큼 저장
VARCHAR(MAX) 가변 길이 문자열 1,073,741,824  
NCHAR(n) 고정 길이 유니코드 문자열 4,000 유니코드로 저장 (2바이트/문자)
NVARCHAR(n) 가변 길이 유니코드 문자열 4,000  
NVARCHAR(MAX) 가변 길이 유니코드 문자열 536,879,912  

※ 위 3개 데이터타입 앞에 N이 붙은 이유는 영어가 아닌 다른 국가 언어를 저장하기 위함!

 

 

숫자 유형(Numeric Data Types)

데이터 타입 범위 바이트 수 설명
TINYINT 0 ~ 255 1 정수형
SMALLINT -32,768 ~ 32,767 2 정수형
INT -2,147,483,648 ~ 2,147,483,647 4 정수형
BIGINT -2^63 ~ 2^63-1 8 정수형
DECIMAL(p, s) -10^38+1 ~ 10^38-1 5 ~ 17 고정 소수점
p : 전체 자리 수
s : 소수점 이하 자리 수
NUMERIC(p, s) -10^38+1 ~ 10^38-1 5 ~ 17 'DECIMAL'과 동일
SMALLMONEY -214,748.3648 ~ 214,748.3647 4 화폐 데이터 타입
MONEY -2^63 ~ 2^63-1 8 화폐 데이터 타입
FLOAT -1.79E+308 ~ -2.23E-308,
0,
2.23E-308 ~ 1.79E+308
4 ~ 8 정규화된 범위와 비정규화된 작은 값 포함, 실수형
REAL -3.40E+38 ~ -1.18E-38,
0,
1.18E-38 ~ 3.40E+38
4 정규화된 범위와 비정규화된 작은 값 포함, 실수형

※ 정수 대신 실수로 통일하면 안 되는가?

비효율적. 정수형은 메모리 사용이 적고 빠르지만, 실수형은 더 복잡하고 성능이 떨어질 수 있음. 필요한 데이터 타입을 구분해서 사용하는 것이 좋음!

 

 

날짜 유형(Date/Time Data Types)

데이터 타입 날짜 범위 시간 범위 바이트 수 설명
DATETIME 1753-01-01 ~
9999-12-31
00:00:00.000 ~
23:59:59.997
8 3.33ms 단위로 시간 저장
DATETIME2 0001-01-01 ~
9999-12-31
00:00:00.0000000 ~
23:59:59.9999999
6 ~ 8 100ns 단위로 시간 저장
DATETIMEOFFSET 0001-01-01 ~
9999-12-31
00:00:00.0000000 ~
23:59:59.9999999 + 시간대(offset)
8 ~ 10 'DATETIME2'와 동일하지만 시간대(UTC 오프셋)를 포함, 타임 정보 저장
SMALLDATETIME 1900-01-01 ~
2079-06-06
00:00:00 ~ 23:59:00 4 1분 단위로 시간 저장
DATE 0001-01-01 ~
9999-12-31
  3 날짜만 저장(시간 없음)
TIME   00:00:00.0000000 ~
23:59:59.9999999
3 ~ 5 시간만 저장, 100ns 단위로 시간 저장

 

 

 

728x90