mysql外键约束怎么写
时间 : 2023-06-01 04:29:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

MySQL 外键约束是一种完整性约束,它将两个表之间的关系维护在一起。主要作用是确保表中的数据能够保持一致性。例如,当您使用外键约束将两个表联系在一起时,如果在其中一个表中更改了数据,这个更改在其他相关表中也会自动更新。

外键约束遵循一些规则,如:

1.一个表的外键应该引用了另一个表的主键。

2.外键应该在选择 `ON DELETE` 和 `ON UPDATE` 选项时进行定义。

3.外键的索引应该与主键一致。

4.在添加外键之前,应该确保目标表的主键已经存在。

下面是 MySQL 外键约束的语法:

ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY (列名) REFERENCES 目标表名(列名) ON DELETE CASCADE ON UPDATE CASCADE;

其中:

- **表名**:你要添加外键约束的表名称。

- **约束名**:外键约束的名称,这个名称是可选的。

- **列名**:你想要添加外键约束的列名称。

- **目标表名**:你想要关联的表名称。

- **ON DELETE**:当删除主表记录时,子表记录应该如何处理。

- **ON UPDATE**:当更改主表记录时,子表记录应该如何处理。

在更具体的情况下,约束名和 ON DELETE/ON UPDATE 是可选的部分;如果不想这样定义,则会使用默认的名称和选项。

在创建外键约束之后,可以通过以下命令来删除它:

ALTER TABLE 表名 DROP FOREIGN KEY 约束名;

这是一个例子,说明了如何在两个表之间添加外键约束:

CREATE TABLE 表ID (

ID int(11) NOT NULL AUTO_INCREMENT,

PRIMARY KEY (ID)

) ENGINE=InnoDB;

CREATE TABLE 学生 (

ID int(11) NOT NULL AUTO_INCREMENT,

名字 varchar(255) NOT NULL,

表ID int(11) NOT NULL,

PRIMARY KEY (ID),

FOREIGN KEY (表ID) REFERENCES 表ID(ID)

) ENGINE=InnoDB;

在上面的例子中,我们创建了两个表:表ID 和 学生。我们在学生表中添加了一个 FOREIGN KEY 约束,这个约束将表ID的主键与学生表中的一个外键联系在一起。

这就是如何在 MySQL 中添加外键约束的基础知识。如果你想使用它们来提高你的应用程序的性能和数据完整性,那么就可以开始了解更多语法和用法。

在MySQL中定义外键约束需要使用关键字FOREIGN KEY。FOREIGN KEY后面跟着要定义的外键字段名,然后使用REFERENCES指定被参考表的名称和被参考的主键字段名。

语法示例:

CREATE TABLE 表名 (

列1 数据类型,

列2 数据类型,

列3 数据类型,

...

FOREIGN KEY (外键列名) REFERENCES 被参考表名(主键列名)

);

其中,外键列名和主键列名必须具有相同的数据类型和大小。

外键约束还可以指定ON DELETE和ON UPDATE选项,以定义在被参考行删除或更新时如何处理外键行。

常用的选项有:

- CASCADE:当被参考行被删除或更新时,外键行也会被自动删除或更新。

- SET NULL:当被参考行被删除或更新时,外键行会被设置为NULL。

- RESTRICT:当被参考行被删除或更新时,如果存在外键行,则不允许执行删除或更新操作。

- NO ACTION:与RESTRICT类似,不执行任何操作。

示例:

CREATE TABLE 表1 (

列1 数据类型,

列2 数据类型,

列3 数据类型,

...

PRIMARY KEY (主键列名)

);

CREATE TABLE 表2 (

列1 数据类型,

列2 数据类型,

列3 数据类型,

...

FOREIGN KEY (外键列名) REFERENCES 表1(主键列名) ON DELETE CASCADE ON UPDATE SET NULL

);

在上面的示例中,表2的外键列被参考了表1的主键列,当被参考行被删除时,表2的外键行也会被设置为NULL。如果被参考行被更新,则外键行也会自动更新。