mysql支不支持外键
发布时间:2023-06-07 13:43:54 所属栏目:MySql教程 来源:
导读:本篇内容主要讲解“mysql支持外键吗”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql支持外键吗”吧!
mysql支持外键。在MySQL中,外键
mysql支持外键。在MySQL中,外键
本篇内容主要讲解“mysql支持外键吗”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql支持外键吗”吧! mysql支持外键。在MySQL中,外键主要用来建立主表与从表的关联关系,可以为两个表的数据建立连接,约束两个表中数据的一致性和完整性;当主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。一个表可以有一个或多个外键,外键可以为空值,若不为空值,则每一个外键的值必须等于主表中主键的某个值;且外键中列的数目和对应数据类型必须和主表的主键中的相同。 本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。 mysql支持外键。 MySQL外键(FOREIGN KEY) 外键是指定表中与另一个表的另一个字段匹配的字段。外键对相关表中的数据设置了约束,这使MySQL能够保持参照完整性。 外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。 对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。 主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。一个表可以有一个或多个外键,外键可以为空值,若不为空值,则每一个外键的值必须等于主表中主键的某个值。 我们来看看示例数据库中的以下数据库图。 mysql支持外键吗 我们有两个表:customers和orders, 每个客户都有零个或多个订单,每个订单只能属于一个客户。customers表和orders表之间的关系是一对多的,它orders由customerNumber字段指定的表中的外键建立。customers表中的customerNumber字段与orders表中的customerNumber主键字段相关 。 customers 表称为父表或引用表,orders表称为子表或引用表。 外键可以是一个列或一组列。子表中的列通常引用父表中的主键列。 表可以具有多个外键,子表中的每个外键可以引用不同的父表。 子表中的行必须包含父表中存在的值,例如,orders表中的每个订单记录必须具有customers表customerNumber中存在的值。因此,多个订单可以引用同一个客户,这种关系称为一个(客户)到多个(订单)或一对多。 有时,子表和父表是相同的。外键引用表的主键,例如,下employees表: mysql支持外键吗 reportTo列是一个外键,它引用employeeNumber作为employees表的主键的列,以反映员工之间的汇报结构,即每个员工向另一个员工汇报,员工可以有零个或多个直接汇报。我们有一个关于自联接教程可以帮助您根据这种表查询数据。 reportTo外键也被称为递归或自引用的外键。 外键强制执行引用完整性,可帮助您自动维护数据的一致性和完整性。例如,您无法为不存在的客户创建订单。 此外,您可以customerNumber在外键的删除操作上设置级联,以便在删除customers表中的客户时,也会删除与客户关联的所有订单。这节省了使用多个DELETE语句 或DELETE JOIN语句的时间和精力。 与删除相同,您还可以在更新操作上为customerNumber外键定义级联,以便在不使用多个UPDATE语句或UPDATE JOIN语句的情况下执行跨表更新。 注意:在MySQL中,InnoDB 存储引擎支持外键,因此您必须创建InnoDB表才能使用外键约束。 mysql定义外键时,需要遵守下列规则: 主表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则主表与从表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。 必须为主表定义主键。 主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。 在主表的表名后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。 外键中列的数目必须和主表的主键中列的数目相同。 外键中列的数据类型必须和主表主键中对应列的数据类型相同。 为表创建外键 MySQL创建外键语法 以下语法说明如何在CREATE TABLE语句中的子表中定义外键。 CONSTRAINT constraint_name FOREIGN KEY foreign_key_name (columns) REFERENCES parent_table(columns) ON DELETE action ON UPDATE action 让我们更详细地学习一下语法: CONSTRAINT子句允许您为外键约束定义约束名称。如果省略它,MySQL将自动生成一个名称。 F (编辑:聊城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐