【问题标题】:Creating database with ID in the range between 1-999999创建 ID 范围在 1-999999 之间的数据库
【发布时间】:2020-01-23 02:52:07
【问题描述】:

我想创建一个 ID 范围为 1 - 999999 的数据库表。 我想出了:

CREATE TABLE TEST
(  
    ID int NOT NULL
);

但我认为int 的范围(-2,147,483,648、2,147,483,647)太大了。像ID int(6) 这样的东西有用吗?

【问题讨论】:

  • 您使用的是哪个数据库..?? MSSql / MySql..?
  • 达到第 100 万条记录时会发生什么?
  • 见:mysqltutorial.org/mysql-int 并考虑mediumint
  • 为了清楚起见,您是否有理由认为大范围太大?这对存储没有影响 - 没有预先分配空间或类似的东西。
  • Int(6) 是一个几乎没有意义的结构。相反,您可以只用 999999 行填充一个 int 列,然后只允许更新。

标签: mysql sql database ddl


【解决方案1】:

是的,根据 MS Sql Server 整数最大长度,它将支持

如果你想设置 int 值范围的限制 使用 [check] 如下查询

CREATE TABLE TEST (
   ID INT NOT NULL CHECK(ID between 1 and 999999)
);

【讨论】:

  • 注意这不会影响底层存储。无论存储的值如何,这将是 4 字节。另请注意,从 cmets 来看,这里的 DB 是 MySQL 而不是 MS Sql
  • 而且这个问题似乎与 MySQL 有关(如 cmets 中所述)
【解决方案2】:

使用检查约束将值限制在指定范围内

CREATE TABLE TEST(
ID int NOT NULL,CHECK(ID >=1 AND ID <=999999));

有关在 Mysql 中检查约束的更多信息,请参阅以下链接:-

https://dev.mysql.com/doc/refman/8.0/en/create-table-check-constraints.html

【讨论】:

  • 注意这不会影响底层存储。无论存储的值如何,这将是 4 个字节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-14
  • 1970-01-01
  • 2014-08-05
  • 1970-01-01
  • 2012-03-05
  • 2020-09-03
  • 1970-01-01
相关资源
最近更新 更多