본문 바로가기
Programming/DB (SQL)

[SQL Server] Chapter 05. 데이터 형식 및 형 변환

by 곰네Zip 2014. 12. 5.

*이 포스팅의 내용은 개인의 학습 내용을 정리한 것입니다.

 

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]

반응형

댓글