MSSQL [SQL 2005] 데이터 형식
페이지 정보
본문
숫자형 데이터 형식 - 숫자형 데이터 형식은 정수, 실수 등의 숫자를 표현한다.
문자형 데이터 형식
시간과 날짜 데이터 형식
기타 데이터 형식
char/nchar 형식(Character)은 고정길이 문자형으로 자릿수가 고정되어 있다.
예를 들어, char(100)에 ‘ABC’ 3바이트만 저장해도, 100바이트를 모두 확보한 후에 앞에 3바이트를 사용하고 뒤의 97바이트는 낭비하게 되는 결과가 나온다.
Varchar 형식(Variable Character)은 가변길이 문자형으로 varchar(100)에 ‘ABC’ 3바이트를 저장할 경우에 3바이트만 사용하게 된다. 그래서 공간을 효율적으로 운영할 수 있다.
하지만, 대용량 데이터베이스를 사용하는 경우에는 4글자 미만을 저장하게 될 경우에는 char/nchar 형식으로 설정하는 것이 INSERT/UPDATE 시에 더 좋은 성능을 발휘한다.
한글(유니코드)를 저장하기 위해서 char나 varchar 형식으로 정의할 경우에는 2배의 자릿수를 준비해야 한다. 즉, 최대 3글자의 한글을 저장하고자 한다면 char(6) 또는 varchar(6)로 데이터 형식을 지정해야 한다. 한글은 2바이트의 자리를 차지하기 때문이다.
이러한 문제를 간단히 하려면 nchar 이나 nvarchar 형식을 사용하기 바란다. 이 데이터 형식은 한글뿐 아니라 다른 나라의 언어의 문제가지 해결해 준다.
예를 들어, nchar(3)으로 지정하면 한글이든 영문이든 무조건 3글자를 지정할 수 있어서 더 단순하고 명확하게 문자 데이터를 입력할 수 있다.
하지만 만약 한글(유니코드)을 저장하지 않을 것이 확실하다면 nchar/nvarchar보다, char/varchar가 더 공간을 적게 차지해서 성능향상에 도움이 된다. 대용량 데이터베이스에서는 더욱 그렇다.
참고자료
http://iamgsi.com/441
데이터 형식 | 바이트 수 | 숫자 범위 | 설명 |
★BIT | 1 | 0 또는 1 | Boolean형인 참(True), 거짓(False)에 사용 |
★INT | 4 | 약 -21억 ~ +21억 | 정수 |
★ SMALLINT | 2 | -32,768~32,767 | 정수 |
★ TINYINT | 1 | 0 ~ 255 | 양의 정수 |
★ BIGINT | 8 | -263 ~ +263-1 | 정수 |
★ DECIMAL(p,[s]) | 5 ~ 17 | N/A | 고정 정밀도(p)와 배율(s)을 가진 숫자형, 예) decimal(5,2)는 전체 자리수를 5자리로 하되, 그 중 소수점 이하를 2자리로 하겠다는 의미 |
NUMERIC | 5 ~ 17 | N/A | DECIMAL과 동일한 데이터 형식 |
REAL | 4 | FLOAT(24)와 동일 | |
FLOAT[(p)] | 4 ~ 8 | P가 25미만이면 4바이트, 25이상이면 8바이트의 크기를 할당 | |
MONEY | 8 | -263 ~ +263-1 | 화폐 단위로 사용 |
SMALLMONEY | 4 | 약 -21억 ~ +21억 | 화폐 단위로 사용 |
문자형 데이터 형식
데이터 형식 | 바이트 수 | 설명 |
★ CHAR[(n)] | 0~8000 | 고정길이 문자형 |
★ NCHAR[(n)] | 0~8000 | 글자로는 0~4000자, 유니코드 고정길이 문자형 |
★ VARCHAR[(n)] | 0~231-1 (2GB) | 가변길이 문자형, SQL Server 2005 이전 버전은 0~8000 |
★ VARCHAR[(n)] | 0~231-1 | 글자로는 0~230-1, 유니코드 가변길이 문자형 |
TEXT[(n)] | 0~231-1 (2GB) | SQL Server 2005 이전 버전에서는 8000자가 넘는 글자의 경우에 사용하였으나, SQL Server 2005 에서는 VARCHAR(MAX)를 대신 사용할 것을 권장 |
NTEXT[(n)] | TEXT의 유니코드형, 마찬가지로 SQL Server 2005에서는 NVARCHAR(MAX)를 사용할 것을 권장 | |
BINARY[(n)] | 0~8000 | 고정길이의 이진 데이터 값 |
VARBINARY[(n)] | 0~231-1 | 가변길이의 이진 데이터 값, SQL Server 2005 이전 버전은 0~8000 |
IMAGE[(n)] | 0~231-1 | SQL Server 2005 이전 버전에서는 8000자가 넘는 이진 데이터의 경우에 사용하였으나, SQL Server 2005에서는 VARBINARY(MAX)를 대신 사용할 것을 권장 |
시간과 날짜 데이터 형식
데이터 형식 | 바이트 수 | 설명 |
★ DATETIME | 8 | 1753/1/1~9999/12/31까지 저장, 정확도는 1/1000초 단위까지 |
★ MALLDATETIME | 4 | 1900/1/1~2079/1/6까지 저장, 정확도는 분 단위까지 |
기타 데이터 형식
데이터 형식 | 바이트 수 | 설명 |
TIMESTAMP | 8 | VARBINARY(8)과 동일하며 데이터베이스 내에서 자동으로 생성된 고유 이진 숫자를 표시한다. SQL Server 내부적으로 사용되는 것이라서 신경을 쓸 필요는 없다. |
WORVERSION | 8 | TIMESTAMP와 동일 |
SYSNAME | 128 | NVARCHAR(128)과 동일하며 데이터베이스 개체의 이름에 사용된다. 이 또한 SQL Server 내부적으로 사용된다. |
★ CURSOR | 1 | T-SQL 커서를 변수로 처리함 |
★ TABLE | 테이블 자체를 저장, 임시 테이블과 비슷한 기능. | |
UNIQUEIDENTIFIER | 16 | 복제(Replication)에서 사용되는 자료형으로, 유일성을 보장하기 위한 GUID 값을 저장함. |
SQL_VARIANT | 다른 데이터 형식의 저장이 가능한 데이터형(예외도 있음) | |
★ XML | XML 데이터를 저장하기 위한 형식, SQL Server 2005에서 새로 나옴 |
char/nchar 형식(Character)은 고정길이 문자형으로 자릿수가 고정되어 있다.
예를 들어, char(100)에 ‘ABC’ 3바이트만 저장해도, 100바이트를 모두 확보한 후에 앞에 3바이트를 사용하고 뒤의 97바이트는 낭비하게 되는 결과가 나온다.
Varchar 형식(Variable Character)은 가변길이 문자형으로 varchar(100)에 ‘ABC’ 3바이트를 저장할 경우에 3바이트만 사용하게 된다. 그래서 공간을 효율적으로 운영할 수 있다.
하지만, 대용량 데이터베이스를 사용하는 경우에는 4글자 미만을 저장하게 될 경우에는 char/nchar 형식으로 설정하는 것이 INSERT/UPDATE 시에 더 좋은 성능을 발휘한다.
한글(유니코드)를 저장하기 위해서 char나 varchar 형식으로 정의할 경우에는 2배의 자릿수를 준비해야 한다. 즉, 최대 3글자의 한글을 저장하고자 한다면 char(6) 또는 varchar(6)로 데이터 형식을 지정해야 한다. 한글은 2바이트의 자리를 차지하기 때문이다.
이러한 문제를 간단히 하려면 nchar 이나 nvarchar 형식을 사용하기 바란다. 이 데이터 형식은 한글뿐 아니라 다른 나라의 언어의 문제가지 해결해 준다.
예를 들어, nchar(3)으로 지정하면 한글이든 영문이든 무조건 3글자를 지정할 수 있어서 더 단순하고 명확하게 문자 데이터를 입력할 수 있다.
하지만 만약 한글(유니코드)을 저장하지 않을 것이 확실하다면 nchar/nvarchar보다, char/varchar가 더 공간을 적게 차지해서 성능향상에 도움이 된다. 대용량 데이터베이스에서는 더욱 그렇다.
참고자료
http://iamgsi.com/441
댓글목록
등록된 댓글이 없습니다.