Serach

2013년 10월 10일 목요일

MS-SQL 데이터 형식

1. 숫자(정수)

 데이터형 크기 범위
 Begint 8byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
 Int 4byte -2,147,483,648 ~ -2,147,483,647
 Tinyint 2byte 0 ~ 255
 Bit 1byte 1, 0, Null
 Smallint 4byte -2,147,483,648 ~ -2,147,483,647

2. 실수

(1) 고정형(Decimal, Numeric)
크기및 범위 : Numeric(전체크기, 소수점이하크기)

만일 Numeric(12, 2)라고 한다면 전체가 12자리이고 그 중에서 소수점이 2자리임을 의미합니다. 이때 전체크기가 1~9라면 5 byte, 10~19라면 9 byte, 20~28이라면 13 byte의 크기를 갖게 됩니다. 즉, 전체자리가 위와같이 증가한다면 크기는 4byte씩 늘어나는 것입니다.

또한 사용상 Decimal과 Numeric은 차이가 없습니다.

(2) 부동형실수(Float, Real)
크기및 범위 : Float(숫자)

Float에는 얼마만큼의 숫자가 들어가느냐에 따라 표현가능한 자리수가 달라집니다. 일반적으로 1~24까지 7자리(4 byte), 25~53까지 15자리(8 byte)표현이 가능합니다.

Real은 Float(24)와 같으며 7자리까지만 표현이 가능합니다.

3. 통화(통화형식은 소수점 이하 4자리수까지로 제한합니다.)

 데이터형 크기 범위
 Money 8byte -922,337,203,685,477.5808 ~ 922,337,203,685,477.5807
 Smallmoney 4byte -214,748.3648 ~ 214,748.3647

4. 문자(문자열)

 데이터형 크기 범위
 Char(n) / NChar(n) 입력된 n byte / 입력된 n * 2 byte 8000자 이하 / 4000자 이하
 Varchar(n) / NVarchar(n) n에 입력된 크기와 상관없이 실제 사용된 만큼 8000자 이하 / 4000자 이하, MAX지정시 2기가 / 1,073,741,823자(단 MAX는 MS SQL 2008버전부터는 사용되지 않습니다.)
 Text / NText 231-1 byte / 230-1 byte 2,147,483,647자 / 1,073,741,823자

참고:
n으로 시작되는 형식은 유니코드문자용입니다.(대부분의 경우 크기는 n이 없는 형의 * 2 가 되며 저장할 수 있는 크기는 n이 없는 형의 절반입니다.)

5. 날짜형식

 데이터형 크기 범위
 Datetime 8byte 1753-01-01 ~ 9999-12-31(ms단위까지)
 SmallDateTime 4byte 1990-01-01 ~ 2079-06-09(분까지)

참고 :
년도를 4자리로 하지 않고 두자리만 지정시 년도는 다음과 같이 인식됩니다.
00 ~ 49 까지 : 2000년대
50 ~ 99 까지 : 1900년대

6. 이진형식

 데이터형 범위
 Binary(n) / VarBinary(n) 1~8000까지의 이진데이터(n을 생략시 1, cast에서 지정하지 않으면 30을 기본)
 Image 232-1byte(2,147,483,647 byte까지)

7. 시스템 형식

 데이터형 설명
 Cursor 커서
 Sql_Variant IMAGE, NTEXT, NVARCHAR(MAX), TEXT, TIMESTAMP, VARCHAR(MAX), XML를 제외한 모든 자료형 대체가능
 Table Table
 TimeStamp TABLE의 행이 바뀔때마다 바뀌는 고유한 숫자(8 byte)
 Uniqueidentifier Newid()를 통해 발생되는 고유값으로 16진수로 구성된 각 자리수가 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx형태로 구성되며 IS NULL이나 IS NOT NULL, =, <=, >=, <>, >, < 의 연산자만 허용합니다.
 Xml Xml

8. 사용자 형식

(1) sp_addtype
sp_addtype 이름, '데이터형', null 여부, '소유자' 의 형태로 씁니다. null여부와 소유자는 생략할 수 있는데 이경우 null허용하게 되며 해당 데이터형은 현재사용자가 소유자가 되는것이 기본입니다.

sp_addtype postal, 'Char(07)';
Go
Declare @ipostal As postal;
Set @ipostal = '780-080';
Select @ipostal;

지정한 사용자 형식을 삭제하는 방법은 다음과 같습니다. 

sp_droptype postal;

(2) Create Type
Create Type은 sp_addtype에 비해 소유자를 지정할 수 없을뿐 sp_addtype과 같습니다.
사용형식은 'Create Type 이름 From 데이터형, null 여부'로 구현됩니다.

Create Type postal From Char(07) Not Null;
Go
Declare @ipostal As postal;
Set @ipostal = '780-080'
Select @ipostal;

지정한 사용자 형식을 삭제하는 방법은 다음과 같습니다. 

Drop Type postal;

댓글 없음:

댓글 쓰기