【问题标题】:Why do I have to specify datatype when adding a NOT NULL constraint?为什么在添加 NOT NULL 约束时必须指定数据类型?
【发布时间】:2019-04-13 03:52:49
【问题描述】:

对于下表:

CREATE TABLE Sucursal
(
    DscSucursal VARCHAR(20),
    DirSucursal VARCHAR(25)
);

我想在第一列添加NOT NULL 约束。

据此来源:https://www.tutorialspoint.com/sql/sql-alter-command.htm

我必须告诉约束列的数据类型。为什么?

数据类型已在表创建时定义。为什么我必须告诉约束数据类型?这不是多余的吗?

"ALTER TABLE 命令向表中的列添加 NOT NULL 约束的基本语法如下:"

ALTER TABLE table_name 
    MODIFY column_name datatype NOT NULL;

【问题讨论】:

  • 嗯,我不知道那些定义它的人是怎么想的……但从某个角度来看,这只是合乎逻辑的。也就是说,如果您考虑将数据类型视为属性的可能值集。如果有一个非空约束,它会少一个值——NULL——否则它被包含在内。
  • 您使用的是哪个DBMS 产品? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加标签postgresqloracledb2sql-server、...
  • @marc_s:这对于某些 DBMS 可能是正确的,但例如对于 Postgres 或 Oracle,您不需要重复数据类型(并且标签“SQL”没有指定具体的 DBMS)
  • a_horse_with_no_name sql-server

标签: sql sql-server


【解决方案1】:

这是因为除了添加 NOT NULL 约束之外,您还可以更改数据类型。如果您不更改数据类型,则有点多余。

【讨论】:

  • 谢谢 Vasya,这有点道理 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-06
  • 1970-01-01
  • 1970-01-01
  • 2014-11-15
  • 2021-04-21
相关资源
最近更新 更多