다음을 통해 공유


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

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 웨어하우스

정수 데이터를 사용하는 정확한 숫자 데이터 형식입니다. 데이터베이스의 공간을 절약하려면 가능한 모든 값을 안정적으로 포함할 수 있는 가장 작은 데이터 형식을 사용합니다. 예를 들어, tinyint 는 255 세 이상 사는 사람이 없기 때문에 사람의 나이에 충분할 것입니다. 그러나 tinyint 는 건물이 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가 데이터 형식을 계산할 때 적용되는 규칙과 식 결과의 정밀도는 쿼리가 자동 매개 변수화되는지 여부에 따라 다릅니다.

따라서 쿼리의 유사한 식은 때때로 다른 결과를 생성할 수 있습니다. 쿼리가 자동 매개 변수화되지 않으면 지정된 데이터 형식으로 변환하기 전에 상수 값이 상수 값을 보유할 수 있을 만큼 정밀도가 충분히 큰 소수로 먼저 변환됩니다. 예를 들어 상수 값 1 은 10진수(1,0)로 변환되고 상수 값 250 은 10진수(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