*이 포스팅의 내용은 개인의 학습 내용을 정리한 것입니다.
1. 데이터 형식 계층 구조
형 구분 |
세부구분 |
데이터형식 |
바이트 |
범위 및 특징 |
문자형 |
문자열 |
char |
1~8000 |
고정길이 또는 가변길이의 문자열 |
varchar |
1~8000 |
고정길이 또는 가변길이의 문자열 | ||
text |
1~2G |
최대문자열길이 2^31 - 1. 비유니코드문자열. varchar(max)를 사용하는 것을 권장. (추후 미지원 예정) | ||
유니코드 문자열 |
nchar |
1~8000 |
최대 4000문자. (유니코드) | |
nvarchar |
1~8000 |
최대 4000문자(유니코드) | ||
ntext |
1~2G |
최대문자열길이 2^30 -1. 유니코드 문자열. 이것 역시 추후 미지원 예정이어, nvarchar(max)를 사용할 것을 권장. | ||
숫자형 |
정수형 |
tinyint |
1 |
0~255 |
smallint |
2 |
-2^15 ~ 2^15 -1 | ||
int |
4 |
-2^31 ~ 2^31 -1 | ||
bigint |
8 |
-2^63 ~ 2^63 -1 | ||
정확한 숫자 |
decimal |
2~17 |
전체 자리수와 소수 자리수가 고정 -10^38+1~10^38-1 | |
numeric |
상동 |
상동 | ||
근사치 |
real |
4 |
-3.40E+38 ~ +3.40E+38 | |
float |
8 |
-1.79E+308 ~ 1.79E+308 | ||
통화 |
smallmoney |
4 |
-214,748.3648 ~ 214,748.3647 | |
money |
8 |
-922,337,203,685,477.5808 - 922,337,203,685,477.5807 | ||
날짜와 시간 |
|
smalldatetime |
4 |
1900.01.01~2079.06.06 (정확도 : 분) |
datetime |
8 |
1753.01.01~9999.12.31 (정확도 : 밀리초) | ||
이진 |
|
binary |
1~8000 |
길이가 n인 고정길이 이진데이터 |
varbinary |
1~8000 |
가변길이 이진데이터 | ||
image |
1~2G |
대용량의 유니코드,비유니코드,이진데이터 저장하기 위한 고정 및 가변길이 데이터. 추후 제거될 예정 (varbinary사용) | ||
특수 |
|
bit |
1 |
0 or 1만 가짐 |
cursor |
- |
커서에 대한 참조가 들어 있는 변수 또는 저장 프로시저 OUTPUT 매개 변수의 데이터 | ||
uniqueidentifier |
16 |
16바이트의 GUID | ||
timestamp |
8 |
rowversion과동일. | ||
Table |
|
테이블을 정의하여 사용 | ||
xml | xml데이터 | |||
sysname |
nvarchar(128) |
오브젝트의 이름을 저장하는 SQL내부의 데이터형 | ||
sql_variant |
|
서로 다른 유형의 데이터 사용가능 | ||
공간형식 |
|
공간형식(Geography, geometry)를 지원 |
(출처 : http://msdn.microsoft.com/ko-kr/library/ms187752.aspx)
위 링크의 내용이 더 정확하고 최신.
2. 문자형 데이터 형식
- Unicode를 명시적으로 표현하기 위해, 문자열 앞에 N을 붙인다.
ex) N'유니코드'
- 유니코드의 코드를 가져올 때, UNICODE()함수를 사용하면 된다. 단, 문자열 제일 첫 글자의 값만 반환됨
6. 기타 데이터
(1) sql_variant : 여러 형태의 데이터를 얻어오기 위함. 단, sql_variant에서 수용 불가한 타입은 다음과 같다:
- varchar(max),varbinary(max),nvarchar(max) ,xml, text,ntext,image, rowversion, timestamp, sql_variant,
geography, hierarchyid, geometry, 사용자 정의 형식, datetimeoffset
- Sql_variant의 제약
1) 연산에 사용되기 전에 기본 데이터 형식 값으로 변환되야 함 (CONVERT함수)
2) 데이터 최대 길이는 8016바이트
3) 인덱스와 유니크키를 생성하기 위해서는 데이터가 900바이트 이내여야 함
4) identity속성 설정할 수 없음
5) 대표키나 참조치로 사용가능. 계산식 컬럼에는 사용 불가
6) ALTER TABLE을 이용하여 위 제약조건에 걸리는 데이터타입으로의 형 변환은 안됨
7) CONTAINSTABLE, FREETEXTTABLE에 사용 불가함.
8. 데이터형 변환
(1) 묵시적 형 변환
- 다른 형 변환은 이루어진다. 숫자형 문자는 숫자로 형변환 되나, 비숫자형 문자와 숫자의 연산은 오류를 발생
- NULL과의 연산은 항상 NULL
(2) 명시적 형 변환
- CAST, CONVERT있음
CAST ( expression AS data_type) CONVERT ( data_type [ (length) ], expression [, style] ) |
출처 : [SQL Server advanced programming]
댓글