int, bigint, smallint 및 tinyint(Transact-SQL)

적용 대상: Microsoft Fabric의 Microsoft FabricWarehouse에 있는 SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPlatform System(PDW) SQL 분석 엔드포인트

정수 데이터를 사용하는 정확한 숫자 데이터 형식입니다. 데이터베이스의 공간을 절약하려면 가능한 모든 값을 안정적으로 포함할 수 있는 가장 작은 데이터 형식을 사용합니다. 예를 들어, tinyint는 255세 이상 사는 사람은 아무도 없기 때문에 사람의 나이에 충분합니다. 그러나 작은 건물은 255 세 이상이 될 수 있기 때문에 건물의 나이에 충분하지 않을 것입니다.

데이터 형식 범위 범위 식 스토리지
bigint -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 -2^63 ~ 2^63-1 8바이트
int -2,147,483,648 ~ 2,147,483,647 -2^31 ~ 2^31-1 4바이트
smallint -32,768 ~ 32,767 -2^15 ~ 2^15-1 2바이트
tinyint 0 ~ 255 2^0-1 ~ 2^8-1 1 바이트

설명

int 데이터 형식은 SQL Server의 기본 정수 데이터 형식입니다. bigint 데이터 형식은 정수 값이 int 데이터 형식에서 지원하는 범위를 초과할 수 있는 경우에 사용하기 위한 것입니다.

bigint는 데이터 형식 우선 순위 차트에서 smallmoneyint 사이에 맞습니다.

함수는 매개 변수 식이 bigint 데이터 형식인 경우에만 bigint반환합니다. SQL Server는 다른 정수 데이터 형식(tinyint, smallintint)을 bigint자동으로 승격하지 않습니다.

주의

+, -, *, / 또는 % 산술 연산자를 사용하여 int, smallint, tinyint 또는 bigint 상수 값을 float, real, decimal 또는 numeric 데이터 형식으로 암시적 또는 명시적으로 변환하는 경우 SQL Server에서 데이터 형식과 식의 전체 자릿수를 계산할 때 적용하는 규칙은 쿼리에 자동으로 매개 변수가 지정되는지 여부에 따라 결과가 달라집니다.

따라서 쿼리의 유사한 식은 때때로 다른 결과를 생성할 수 있습니다. 쿼리에 자동으로 매개 변수가 지정되지 않는 경우 상수 값은 먼저 전체 자릿수가 상수 값을 보유할 수 있을 만큼 큰 numeric으로 변환된 다음, 지정된 데이터 형식으로 변환됩니다. 예를 들어 상수 값 1은 숫자(1, 0)로 변환되고 상수 값 250은 숫자(3, 0)로 변환됩니다.

쿼리가 자동 매개 변수화되면 상수 값은 최종 데이터 형식으로 변환하기 전에 항상 숫자(10, 0) 로 변환됩니다. / 연산자가 들어 있는 경우 비슷한 쿼리 간에 결과 형식의 전체 자릿수뿐만 아니라 결과 값도 달라질 수 있습니다. 예를 들어 식을 SELECT CAST (1.0 / 7 AS float)포함하는 자동 매개 변수가 있는 쿼리의 결과 값은 자동 매개 변수화되지 않은 동일한 쿼리의 결과 값과 다릅니다. 자동 매개 변수가 있는 쿼리의 결과가 숫자(10, 0) 데이터 형식에 맞게 잘리기 때문입니다.

tinyint 데이터 형식은 Microsoft Fabric에서 지원되지 않습니다.

정수 데이터 변환

정수가 문자 데이터 형식으로 암시적으로 변환되는 경우 정수가 너무 커서 문자 필드에 맞지 않는 경우 SQL Server는 별표(*)인 ASCII 문자 42를 입력합니다.

2,147,483,647보다 큰 정수 상수는 bigint 데이터 형식이 아닌 10진수 데이터 형식으로 변환됩니다. 다음 예제에서는 임계값을 초과하면 결과의 데이터 형식이 int에서 10진수로 변경됩니다.

SELECT 2147483647 / 2 AS Result1, 2147483649 / 2 AS Result2 ;  

결과 집합은 다음과 같습니다.

Result1      Result2  
1073741823   1073741824.500000  

예제

다음 예제에서는 bigint, int, smallint 및 tinyint 데이터 형식을 사용하여 테이블을 만듭니다. 값은 각 열에 삽입되고 SELECT 문에 반환됩니다.

CREATE TABLE dbo.MyTable  
(  
  MyBigIntColumn BIGINT  
,MyIntColumn  INT
,MySmallIntColumn SMALLINT
,MyTinyIntColumn TINYINT
);  
  
GO  
  
INSERT INTO dbo.MyTable VALUES (9223372036854775807, 2147483647,32767,255);  
 GO  
SELECT MyBigIntColumn, MyIntColumn, MySmallIntColumn, MyTinyIntColumn  
FROM dbo.MyTable;  

결과 집합은 다음과 같습니다.

MyBigIntColumn       MyIntColumn MySmallIntColumn MyTinyIntColumn  
-------------------- ----------- ---------------- ---------------  
9223372036854775807  2147483647  32767            255  
  
(1 row(s) affected)  

참고 항목

ALTER TABLE(Transact-SQL)
CAST 및 CONVERT(Transact-SQL)
CREATE TABLE(Transact-SQL)
DECLARE @local_variable (Transact-SQL)
SET @local_variable (Transact-SQL)
sys.types(Transact-SQL)