【问题标题】:SQL how to specify the int(size) when creating a table column?SQL如何在创建表列时指定int(size)?
【发布时间】:2022-12-14 09:30:27
【问题描述】:

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

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

我查看了如何创建表并在 w3schools 此处找到了有关 SQL 数据类型的资源。它声明我可以在整数后定义一个大小,但它会抛出以下错误:

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

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

从整数中删除大小属性有效,但我想定义列宽。

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

【问题讨论】:

  • int 具有固定大小 - 32 位。如果你想要一个 4 位整数,请使用 numeric(4,0)
  • 你确定这是sql-server吗?我想,基于 AUTO_INCREMENT,它不是。
  • 整行无效。没有int(4),没有AUTO_INCREMENT,也没有UNSIGNED。您是否尝试使用其他数据库的教程?在 SQL Server 中,自动生成的 ID 字段将是 ID INT IDENTITYID BIGINT IDENTITY
  • 我建议您对 SQL Server 类型使用 official documentation。没有无符号的 32 位整数类型。您可以在 SQL Server 中指定 ProductID INT IDENTITY
  • 这似乎是 MySQL,而不是 SQL-Server。相应地设置标签。

标签: sql-server


【解决方案1】:

在 MSSQL 中你有不同类型的 INT:

  • 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 更大的值,请使用 BIGINT。

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

【讨论】:

    猜你喜欢
    • 2021-09-13
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 2014-10-05
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    相关资源
    最近更新 更多