我第一次尝试为 MS SQL 数据库创建表。 我的查询如下所示:
CREATE TABLE Products (
ProductID INT(4) UNSIGNED AUTO_INCREMENT,
PRIMARY KEY (ProductID)
);
我查找了如何创建表,并在 w3schools 找到了有关 SQL 数据类型的资源。它指出我可以在整数后定义大小,但它会引发以下错误:
列 ProductID 的数据类型无效。 UNSIGNED 关键字也被标记为“‘UNSIGNED’附近的语法不正确”。
我继续在谷歌上搜索这个确切的错误,但无法快速找到答案,这很奇怪,因为这似乎是一个非常常见的错误?
从整数中删除大小属性是可行的,但我想定义列宽。
我尝试在 MS SQL 数据库中创建一个表,但查询抛出错误,如详细信息中所述。
在 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。