int、bigint、smallint 和 tinyint (Transact-SQL)

使用整数数据的精确数字数据类型。


数据类型


范围


存储


bigint


-2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807)


8 字节


int


-2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647)


4 字节


smallint


-2^15 (-32,768) 到 2^15-1 (32,767)


2 字节


tinyint


0 到 255


1 字节

注释

int 数据类型是 SQL Server 中的主要整数数据类型。 bigint 数据类型用于整数值可能超过 int 数据类型支持范围的情况。

在数据类型优先次序表中,bigint 介于 smallmoney 和 int 之间。

仅当参数表达式为 bigint 数据类型时,函数才返回 bigint。 SQL Server 不会自动将其他整数数据类型(tinyint、smallint 和 int)提升到 bigint。


使用 +、-、*、/ 或 % 等算术运算符将 int、smallint、tinyint 或 bigint 常量值隐式或显式转换为 float、real、decimal 或 numeric 数据类型时,SQL Server 计算数据类型和表达式结果的精度时应用的规则有所不同,这取决于查询是否是自动参数化的。

因此,查询中的类似表达式有时可能会生成不同的结果。 如果查询不是自动参数化的,则将常量值转换为指定的数据类型之前,首先将其转换为 numeric,该数据类型的精度很大足以保存常量的值。 例如,常量值 1 转换为 numeric (1, 0),常量值 250 转换为 numeric (3, 0)。

如果查询是自动参数化的,则将常量值转换为最终数据类型之前,始终先将其转换为 numeric (10, 0)。 如果涉及 / 运算符,则对于类似查询而言,不仅结果类型的精度可能不同,而且结果值也可能不同。 例如,包含表达式 SELECT CAST (1.0 / 7 AS float) 的自动参数化查询的结果值将不同于非自动参数化的同一查询的结果值,因为自动参数化查询的结果将被截断以适合 numeric (10, 0) 数据类型。

转换整数数据

将整数隐式转换为字符数据类型时,如果整数太大而无法容纳到字符字段中,则 SQL Server 会输入 ASCII 字符 42,即星号 (*)。

大于 2,147,483,647 的整数常量将转换为 decimal 数据类型,而不是 bigint 数据类型。 下面的示例显示当超过此阈值时,结果的数据类型将从 int 变为 decimal。

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, 214483647,32767,255);
 GO
SELECT MyBigIntColumn, MyIntColumn, MySmallIntColumn, MyTinyIntColumn
FROM dbo.MyTable;

下面是结果集:

MyBigIntColumn       MyIntColumn MySmallIntColumn MyTinyIntColumn
-------------------- ----------- ---------------- ---------------
9223372036854775807  214483647   32767            255

(1 row(s) affected)
时间: 2024-10-07 15:56:47

int、bigint、smallint 和 tinyint (Transact-SQL)的相关文章

MySQL数据库中int,bigint,smallint和tinyint区别

最近使用MySQL数据库的时候遇到了多种数字的类型,主要有int,bigint,smallint和tinyint.其中比较迷惑的是int和smallint的差别.今天就在网上仔细找了找,找到如下内容,留档做个总结: 使用整数数据的精确数字数据类型. bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字).存储大小为 8 个字节. P.S. bigint已经有长度了,在mysql建表中的len

Mysql中int,bigint,smallint和tinyint的范围

http://www.jb51.net/article/31946.htm 最近使用mysql数据库的时候遇到了多种数字的类型,主要有int,bigint,smallint和tinyint.其中比较迷惑的是int和smallint的差别.今天就在网上仔细找了找,找到如下内容,留档做个总结: 使用整数数据的精确数字数据类型. bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字).存储大小为

mysql中int、bigint、smallint 和 tinyint的区别与长度的含义

最近使用mysql数据库的时候遇到了多种数字的类型,主要有int,bigint,smallint和tinyint.其中比较迷惑的是int和smallint的差别.今天就在网上仔细找了找,找到如下内容,留档做个总结: 使用整数数据的精确数字数据类型. bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字).存储大小为 8 个字节. P.S. bigint已经有长度了,在mysql建表中的len

mysql中int、bigint、smallint和tinyint的区别与长度

对比发现 int bigint smallint 和 tinyint 类型,如果创建新表时没有指定 int(M) 中的M时,默认分别是 : int             -------     int(11) bigint       -------     bigint(20) smallint   -------     smallint(6) tinyint     -------     tinyint(4) 下面是这几种类型的取值范围 参考:http://www.2cto.com/d

sql server数据库中 smallint, int ,bigint ,tinyint的区别与长度

smallint  是一种精确的数值数据类型,其精度在算术运算后不变,采用2个字节编码 有符号的 smallint 值的范围是 -2^15-------2^15 -1,即 -32768 ----32767 无符号的 smallint 值的范围是 0-------2^16 -1,即 0----65535, int 数据类型存储为 4字节整数,取值范围 -2^31---2^31,所以在考虑最大数据范围的前提下,优先考虑使用smallint类型. 在int 数据类型支持范围的数字常量仍被解释为nume

sql server int、bigint、smallint 和 tinyint

int.bigint.smallint 和 tinyint 使用整数数据的精确数字数据类型. bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字).存储大小为 8 个字节. int 从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字).存储大小为 4 个字节.int 的 SQL-92 同义字为 integer. sm

int、bigint、smallint 和 tinyint范围

int.bigint.smallint 和 tinyint范围使用整数数据的精确数字数据类型.bigint从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字).存储大小为 8 个字节.int从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字).存储大小为 4 个字节.int 的 SQL-92 同义字为 integer.smalli

( 转)Sqlserver中tinyint, smallint, int, bigint的区别 及 10进制转换16进制的方法

一.类型比较 bigint:从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据,存储大小为 8 个字节.一个字节就是8位,那么bigint就有64位 int:从-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型数据,存储大小为 4 个字节.int类型,最大可以存储32位的数据 smallint:从-2^15(-32,768)到2^15-1(32,767)的整数数据,存储大小为 2 个

mysql中bigint、int、mediumint、smallint 和 tinyint的取值范

mysql数据库设计,其中,对于数据性能优化,字段类型考虑很重要,搜集了些资料,整理分享出来,这篇为有关mysql整型bigint.int.mediumint.smallint 和 tinyint的语法介绍,如下:1.bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字),无符号的范围是0到 18446744073709551615.一位为 8 个字节. 2.int 一个正常大小整数.有符号