SQL创建表列时如何指定int(size)?

问题描述 投票:0回答:1

我第一次尝试为 MS SQL 数据库创建表。 我的查询如下所示:

CREATE TABLE Products (
    ProductID INT(4) UNSIGNED AUTO_INCREMENT,
    PRIMARY KEY (ProductID)
);

我查找了如何创建表,并在 w3schools 找到了有关 SQL 数据类型的资源。它指出我可以在整数后定义大小,但它会引发以下错误:

列 ProductID 的数据类型无效。 UNSIGNED 关键字也被标记为“‘UNSIGNED’附近的语法不正确”。

我继续在谷歌上搜索这个确切的错误,但无法快速找到答案,这很奇怪,因为这似乎是一个非常常见的错误?

从整数中删除大小属性是可行的,但我想定义列宽。

我尝试在 MS SQL 数据库中创建一个表,但查询抛出错误,如详细信息中所述。

sql-server
1个回答
2
投票

整数

在 MSSQL 中,您有不同类型的整数:

签名

类型 分钟 最大 字节
bigint -9,223,372,036,854,775,808(-2^63) 9,223,372,036,854,775,807 (2^63-1) 8
int -2,147,483,648 (-2^31) 2,147,483,647 (2^31-1) 4
小整数 -32,768 (-2^15) 32,767 (2^15-1) 2
小小 -128 127 1

未签名

但是所有数字类型都带有

UNSIGENED
类型,可用于仅允许正值,将正数的大小加倍,就像您所做的那样:

无符号类型 分钟 最大 字节
bigint 0 18'446'744'073'709'551'616(2^64-1) 8
int 0 4’294’967’296 (2^32-1) 4
小整数 0 65’536 (2^16-1) 2
小小 0 255 1

养成将(自动递增)ID 设置为无符号的习惯,就像您所做的那样,因为它们永远不会为负数并提供更多空间。

如果您想要比 INT 更大的值,请使用 BIGINT。

https://learn.microsoft.com/en-us/sql/t-sql/data-types/int-bigint-smallint-and-tinyint-transact-sql?view=sql-server-ver16

© www.soinside.com 2019 - 2024. All rights reserved.