Mysql SQL外键约束命名差异

Mysql SQL外键约束命名差异,mysql,sql,Mysql,Sql,以下代码之间有什么区别 一, 二, 在第二个代码中将名称添加到外键约束(FK_PersonOrder)有什么用?这两个语句在功能上是相同的。为外键(或任何其他约束)命名会使使用它变得更容易-当DML语句因为违反它而失败时,更容易理解,如果您选择这样做,则更容易删除它,等等。添加约束FK\u PersonOrder为外键提供自定义名称,否则它将自动动态生成。出于同样的原因,我们命名任何东西;充分描述它,使我们了解它是什么,或它的作用 有时数据库引擎不会明确说明关系另一端的任何详细信息,在这种情况下

以下代码之间有什么区别

一,

二,


在第二个代码中将名称添加到外键约束(FK_PersonOrder)有什么用?

这两个语句在功能上是相同的。为外键(或任何其他约束)命名会使使用它变得更容易-当DML语句因为违反它而失败时,更容易理解,如果您选择这样做,则更容易删除它,等等。

添加约束FK\u PersonOrder
为外键提供自定义名称,否则它将自动动态生成。

出于同样的原因,我们命名任何东西;充分描述它,使我们了解它是什么,或它的作用


有时数据库引擎不会明确说明关系另一端的任何详细信息,在这种情况下,插入地址表并查看“constraint'fk_person-addressid_address-id'invalized”比“constraint'fk_12ef3a2dc'invalized”要好得多,让人思考“嗯,12ef3a2dc/那是表一的地址吗?还是工作角色一?或是公司一号。。我将在数据库中查找..“

约束和外键名称是可选的。外键是一个约束,如果您不提供外键名称,mysql将创建一个(使用不太友好的名称)
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);