1. SQLserver存储负整数介绍
SQLserver存储负整数时,会使用不同的数据类型来存储负整数。在SQLserver中,负整数可以使用bigint、int、smallint和tinyint等不同的数据类型进行存储。其中,bigint可以保存-2^63
到2^63-1
范围内的负整数;int可以保存-2^31
到2^31-1
范围内的负整数;smallint可以保存-2^15
到2^15-1
范围内的负整数;tinyint可以保存0
到255
范围内的整数,其中0
表示0,1
到127
表示1到127,128
到255
表示-128到-1。需要注意的是,小于tinyint表示范围的负整数将会被转换为0。
2. 使用bigint存储负整数的例子
创建表
CREATE TABLE neg_int_test
(
id INT NOT NULL IDENTITY(1, 1),
neg_int BIGINT NOT NULL,
CONSTRAINT PK_neg_int_test_id PRIMARY KEY CLUSTERED (id)
)
GO
插入数据
INSERT INTO neg_int_test(neg_int)
VALUES(-9223372036854775808), (-100), (-1), (0)
GO
在上面的例子中,我们创建了一个表neg_int_test
,其中包含一个id列和一个neg_int列。在插入数据时,我们向neg_int列中分别插入了4个负整数:-9223372036854775808
、-100
、-1
和0
。
查询数据
SELECT * FROM neg_int_test
GO
查询得到的结果如下:
id | neg_int |
---|---|
1 | -9223372036854775808 |
2 | -100 |
3 | -1 |
4 | 0 |
从查询结果可以看出,SQLserver可以正确地存储和查询负整数。
3. 使用smallint和tinyint存储负整数的例子
对于smallint和tinyint数据类型,存储负整数时需要注意数值的范围。在下面的例子中,我们使用smallint和tinyint分别存储负整数。
创建表
CREATE TABLE neg_int_test_2
(
id INT NOT NULL IDENTITY(1, 1),
neg_int_small SMALLINT NOT NULL,
neg_int_tiny TINYINT NOT NULL,
CONSTRAINT PK_neg_int_test_2_id PRIMARY KEY CLUSTERED (id)
)
GO
插入数据
INSERT INTO neg_int_test_2(neg_int_small, neg_int_tiny)
VALUES(-32768, -128), (-100, -50), (-1, -1), (0, 0)
GO
在上面的例子中,我们创建了一个表neg_int_test_2
,其中包含一个id列,一个neg_int_small列和一个neg_int_tiny列。在插入数据时,我们向neg_int_small列中分别插入了4个负整数:-32768
、-100
、-1
和0
;向neg_int_tiny列中分别插入了4个负整数:-128
、-50
、-1
和0
。
查询数据
SELECT * FROM neg_int_test_2
GO
查询得到的结果如下:
id | neg_int_small | neg_int_tiny |
---|---|---|
1 | -32768 | 0 |
2 | -100 | 206 |
3 | -1 | 255 |
4 | 0 | 0 |
从查询结果可以看出,用smallint和tinyint存储负整数时需要注意数值范围的限制,同时也可以看出在插入负整数时,大于tinyint表示范围但小于smallint表示范围的负整数会被转换为0。