Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL Server

SQL Server 데이터 형식 완벽 정리: 문자열·숫자·날짜/시간

SQL Server에서 사용할 수 있는 데이터 형식은 크게 문자열, 숫자, 날짜/시간의 세 가지 범주로 나눌 수 있습니다. 각 형식의 저장 용량과 특성을 정확히 이해해야 테이블을 효율적으로 설계하고 불필요한 저장 공간 낭비를 막을 수 있습니다. 아래에서 SQL Server(Transact-SQL)의 대표적인 데이터 형식을 범주별로 살펴보겠습니다.

SQL Server의 문자열 데이터 형식

아래는 SQL Server(Transact-SQL)에서 제공하는 문자열 계열 데이터 형식입니다. 영문·숫자만 저장할지, 한글과 같은 유니코드 문자도 저장할지에 따라 적합한 형식이 달라집니다.

데이터 형식 구문최대 크기설명
CHAR(n)최대 8,000자고정 길이 문자열입니다. n은 저장할 문자 수를 의미하며, 입력된 문자가 n보다 짧으면 오른쪽에 공백이 채워집니다. 유니코드 문자는 지원하지 않습니다.
VARCHAR(n) 또는 VARCHAR(MAX)최대 8,000자 또는 2GB가변 길이 문자열입니다. n은 저장할 문자 수를 의미하고, MAX로 지정하면 최대 2GB까지 저장할 수 있습니다. 유니코드 문자는 지원하지 않습니다.
TEXT최대 2GB가변 길이 문자열입니다. 유니코드 문자는 지원하지 않습니다.
NCHAR(n)최대 4,000자고정 길이 유니코드 문자열입니다.
NVARCHAR(n) 또는 NVARCHAR(MAX)최대 4,000자 또는 2GB가변 길이 유니코드 문자열입니다. n은 저장할 문자 수를 의미하고, MAX로 지정하면 최대 2GB까지 저장할 수 있습니다.
NTEXT최대 1,073,741,823바이트가변 길이 유니코드 문자열입니다.
BINARY(n)최대 8,000바이트고정 길이 이진(binary) 데이터입니다. n은 저장할 바이트 수를 의미하며, 부족한 만큼 공백으로 채워집니다.
VARBINARY(n) 또는 VARBINARY(MAX)최대 8,000바이트 또는 2GB가변 길이 이진 데이터입니다. MAX로 지정하면 최대 2GB까지 저장할 수 있습니다.
IMAGE최대 2GB가변 길이 이진 데이터입니다.

참고: TEXT, NTEXT, IMAGE 형식은 Microsoft에서 더 이상 권장하지 않는(deprecated) 형식입니다. 새 프로젝트에서는 각각 VARCHAR(MAX), NVARCHAR(MAX), VARBINARY(MAX)를 사용하는 것이 좋습니다. 또한 한글 데이터를 저장할 계획이라면 반드시 NCHAR나 NVARCHAR처럼 유니코드를 지원하는 형식을 선택해야 합니다.

SQL Server의 숫자 데이터 형식

아래는 SQL Server(Transact-SQL)에서 제공하는 숫자 계열 데이터 형식입니다. 정수, 소수, 통화 값 등 용도에 맞는 형식을 선택하는 것이 중요합니다.

데이터 형식 구문저장 범위 및 설명
BIT정수 0, 1 또는 NULL을 저장합니다.
TINYINT0부터 255까지의 정수를 저장합니다.
SMALLINT-32,768부터 32,767까지의 정수를 저장합니다.
INT-2,147,483,648부터 2,147,483,647까지의 정수를 저장합니다.
BIGINT-9,223,372,036,854,775,808부터 9,223,372,036,854,775,807까지의 정수를 저장합니다.
DECIMAL(m, d)m은 전체 자릿수, d는 소수점 이하 자릿수를 의미합니다. 지정하지 않으면 m의 기본값은 18, d의 기본값은 0입니다.
DEC(m, d)DECIMAL 데이터 형식과 동의어(synonym) 관계입니다.
NUMERIC(m, d)DECIMAL 데이터 형식과 동의어(synonym) 관계입니다.
FLOAT(n)n은 가수부에 저장되는 비트 수를 의미하며, 지정하지 않으면 기본값은 53입니다.
REALFLOAT(24)와 동일하게 동작합니다.
SMALLMONEY-214,748.3648부터 214,748.3647까지의 통화 값을 저장합니다.
MONEY-922,337,203,685,477.5808부터 922,337,203,685,477.5807까지의 통화 값을 저장합니다.

SQL Server의 날짜/시간 데이터 형식

아래는 SQL Server(Transact-SQL)에서 제공하는 날짜/시간 계열 데이터 형식입니다.

데이터 형식 구문저장 범위 및 표시 형식
DATE'0001-01-01'부터 '9999-12-31'까지의 날짜 값을 저장하며, 'YYYY-MM-DD' 형식으로 표시됩니다.
DATETIME날짜는 '1753-01-01'부터 '9999-12-31'까지, 시간은 '00:00:00'부터 '23:59:59.997'까지 저장합니다. 'YYYY-MM-DD hh:mm:ss[.mmm]' 형식으로 표시됩니다.
DATETIME2소수 단위 초까지 정확하게 저장할 수 있습니다. 날짜는 '0001-01-01'부터 '9999-12-31'까지, 시간은 '00:00:00'부터 '23:59:59.9999999'까지 저장합니다.
SMALLDATETIME날짜는 '1900-01-01'부터 '2079-06-06'까지, 시간은 '00:00:00'부터 '23:59:59'까지 분 단위 정확도로 저장합니다.
TIME'00:00:00.0000000'부터 '23:59:59.9999999'까지의 시간 값을 저장합니다.
DATETIMEOFFSET소수 단위 초까지 정확한 시간과 함께 시간대(time zone) 정보를 저장합니다. 시간은 '00:00:00'부터 '23:59:59.9999999'까지, 시간대 오프셋은 -14:00부터 +14:00까지 지원하며, 'YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{+|-}hh:mm]' 형식으로 표시됩니다.

참고: SQL Server 2008부터 도입된 DATETIME2는 기존 DATETIME보다 날짜 범위가 넓고 시간 정확도가 높기 때문에, 새로운 개발 환경에서는 DATETIME2 사용이 권장됩니다.