Mysql 创建SQL表时,为什么或为什么不使用CONSTRAINT关键字?

Mysql 创建SQL表时,为什么或为什么不使用CONSTRAINT关键字?,mysql,sql,database,Mysql,Sql,Database,例如,在下面的create table语句的最后一行中,我不能编写约束PK_food主键(food_numb),而不是编写主键(food_numb)吗??约束关键字的用途是什么 CREATE TABLE food ( food_numb integer, food_description varchar (256) source_numb integer, amount integer, CONSTRAINT PK_food PRIMARY KEY (food_numb) )

例如,在下面的create table语句的最后一行中,我不能编写约束PK_food主键(food_numb),而不是编写主键(food_numb)吗??约束关键字的用途是什么

CREATE TABLE food
(
  food_numb integer,
  food_description varchar (256)
  source_numb integer,
  amount integer,
  CONSTRAINT PK_food PRIMARY KEY (food_numb)
)

当我们使用复合主键时,我们通常对主键使用约束

例如:

约束主键食物主键(食物编号、食物描述)

在这种情况下,您有两种选择。还有许多其他类型的约束,您确实必须使用约束关键字


有关更多信息,请参阅此

在获取复合主键时,我们通常对主键使用约束

例如:

约束主键食物主键(食物编号、食物描述)

在这种情况下,您有两种选择。还有许多其他类型的约束,您确实必须使用约束关键字


有关详细信息,请参阅此如果要进一步引用约束,则必须指定约束名称。例如,删除它

您可以跳过CONSTRAINT关键字(当然还有它的名称),并允许MySQL始终自动生成该名称,但只有在您不打算在将来引用该约束名称时才这样做

您始终可以使用
showcreatetable
语句查找约束名称(显式指定和自动生成)


对主键使用CONSTRAINT子句是不合理的-这是一种排除,指定的名称将被忽略,并且预定义的名称
PRIMARY
将在任何情况下使用。这是有文档记录的。

如果要进一步引用约束,必须指定约束名称。例如,删除它

您可以跳过CONSTRAINT关键字(当然还有它的名称),并允许MySQL始终自动生成该名称,但只有在您不打算在将来引用该约束名称时才这样做

您始终可以使用
showcreatetable
语句查找约束名称(显式指定和自动生成)


对主键使用CONSTRAINT子句是不合理的-这是一种排除,指定的名称将被忽略,并且预定义的名称
PRIMARY
将在任何情况下使用。这是有文档记录的。

除了主键之外,还有其他类型的约束需要使用
约束
语法。对于主键,您有两个选项。除了主键之外,还有其他类型的约束需要使用
CONSTRAINT
语法。对于主键,您有两个选项。关于使用外键,您建议使用约束fk_示例xyz引用表1(id)吗?像这样的?或者,如果不创建约束,也不需要约束关键字。它将自动创建自己的约束名称。使用constraint可以为外键约束指定特定名称。这可以使错误消息更容易理解。关于使用外键,您建议使用约束fk_示例xyz引用表1(id)吗?像这样的?或者,如果不创建约束,也不需要约束关键字。它将自动创建自己的约束名称。使用constraint可以为外键约束指定特定名称。这可以用来使错误消息更容易理解。