데이터베이스를 모델링할때 저장될 자료에 대한 특성과 크기를 파악해야 할 때가 있습니다.
넉넉하게 생각해서 미리 크기가 큰 데이터 형으로 설정 할 수 있겠지만 적절한 설계를 통하여 가급적 자원의 소모를 줄이는 방법이 좋을 듯 합니다.
각 형마다 바이트 한자리 수까지 외우고 있는 분도 봤었지만 저 같이 우둔한 사람들은 이렇게 레퍼런스 형식으로 찾아 볼 수 있으면 충분할 것 같습니다.
형식 | 범위 | 설명 |
Bit | 0~1 | 0 또는 1을 받아들일 수 있는 논리 형식으로 가장 크기가 작다. |
Tinyint | 0~255 | 정수형으로 1바이트 크기의 0 부터 255까지 입력이 가능하다. |
Smallint | -32,768~32767 | 2바이트 크기의 정수형 숫자를 입력할 수 있다. |
int | -2,147,483,648~2,147,483,647 | 4바이트 크기의 정수형 숫자를 입력할 수 있다. |
Bigint | -9,223,372,036,854,775,808~ 9,223,372,036,854,775,807 |
int의 확장판으로 8바이트 크기의 매우 큰 정수형 숫자를 입력할 수 있다. |
Smallmoney | -2,147,483,648~2,147,483,647 | 4바이트 크기의 통화 단위 숫자를 입력할 수 있다. 숫자형과 거의 차이가 없음. |
Money | -922,337,203,685,477.5808~ 922,337,203,685,477.5807 |
Smallmoney 보다 큰 8바이트의 통화 단위 숫자를 입력할 수 있으며 소수점을 포함 할 수 있다. |
Decimal([n,s]) | -1E+38 + 1~1E+38 – 1 | 통화 단위 숫자형으로 [전체숫자 개수, 소수숫자 자리수] 파라미터 형식으로 전체자리수가 1~9 까지 5바이트, 10~19까지 9바이트, 20~28까지 13바이트, 29~38까지 17바이트를 차지한다. |
Numeric([n,s]) | -1E+38 + 1~1E+38 – 1 | Decimal와 기능적으로 동일하다. |
Float[(n)] | -1.79E+308~1.79E+308 | 부동 소수점 숫자를 입력받을 수 있는 형식으로 파라미터 n 값이 1~24까지는 4바이트이며 25~53까지는 8바이트이다. |
Real | -3.40E+38~3.40E+38 | Float (24)와 동일한 부동 소수점 형으로 4바이트 크기를 가지고 있다. |
Smalldatetime | 1900년1월1일~2079년6월6일 | 4바이트의 날짜형 타입으로 분단위까지 입력할 수 있다. |
Datetime | 1753년1월1일~9999년12월31일 | Datetime 형 보다 정밀하고 범위도 더 넓게 입력받을 수 있는 형식으로 밀리초 단위까지 입력 할 수 있는 8바이트의 날짜형식이다. |
Date | 기원전 4712년12월1일~4712년12월31일 | 날짜와 시간을 초단위까지 입력받 수 있고 날짜 범위가 가장 넓은 날짜 형식. |
Char[(n)] | 최대 n = 8000 | 고정길이 문자열 형식으로 파라미터 n에 해당 되는 문자 갯수를 담을 수 있으며 n를 생략할 경우 하나의 문자만 입력 받을 수 있다. Char(10)으로 설정 한 후에 5개의 문자만 입력할 경우 나머지 5개의 공간은 공백으로 채워진다. |
Nchar[(n)] | 최대 n = 4000 | 유니코드 고정길이 문자열 형식으로 Char와 다른 점은 유니코드를 입력받을 수 있어 한글, 영문 상관없이 파라미터에 설정한 개수 만큼 글자를 입력 할 수 있다. |
Varchar[(n)] | 최대 n = 8000 | 길이가 변경 될 수 있는 문자열 형식이며 Char와 다르게 빈 문자 공간을 채워넣지 않고 값이 있는 부분만 크기로 지정한다. 숫자나 기호, 영문은 한 글자에 1바이트, 한글이나 한자는 2바이트를 차지한다. |
Nvarchar[(n)] | 최대 n = 4000 | Nchar와 같이 Varchar와 다르게 유니코드를 입력받을 수 있다. |
Text | 최대 2,147,483,647 문자 | Char 나 Varchar를 초과하는 문자를 입력 받을 때 사용하는 형식. |
Image | 최대 2,147,483,647 바이너리 | Text 형식은 문자만 입력하는 반면에 Image는 그림, 데이터 등 모든 자료를 입력 받을 수 있는 형식이다. |