外键的特点

大家好,我是一只学弱狗,记录学习的点点滴滴!

优质文章

优质专栏


外键六大约束中的一种,它也是一种限制,用于限制表中的数据,为了保证表中的数据的准确性和可靠性

举个例子
我们先执行下面的代码,来创建专业表major和学生信息表stuinfo

CREATE TABLE IF NOT EXISTS major(
 id INT PRIMARY KEY,
 majorName VARCHAR(20)
);
CREATE TABLE IF NOT EXISTS stuinfo(
 id INT PRIMARY KEY,
 stuName VARCHAR(20),
 majorId INT,
 CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorId) REFERENCES major(id)
);

我们通过下面的代码查看索引信息

SHOW INDEX FROM stuinfo;

在这里插入图片描述
可见,学生信息表stuinfo中的外键已经添加成功,我们往专业表major中插入数据

INSERT INTO major VALUES(1,'Java');
INSERT INTO major VALUES(2,'H5');
INSERT INTO major VALUES(3,'JS');

添加成功后,我们开始往学生信息表中添加数据

INSERT INTO stuinfo VALUES (001,'Alice',3);

添加成功,好,我们再来添加一条数据

INSERT INTO stuinfo VALUES (002,'Boily',4);

然而,错误了
在这里插入图片描述大家看这个错误报告,a foreign key,哦,外键在起作用!
所以,这个关键是干啥的呢?是这样,它是规范学生信息表中字段major的信息规范的,假如专业表major中有三条记录,即{1,‘JAVA’},{2,‘H5’},{3,‘JS’},当我们在学生信息表中插入数据时,如果专业编号majorId=4,那么不就出现问题了么,4号…,没有啊!!!
这就是外键,相信大家也理解了,下面咱们来谈谈它的特点
首先呢,我们必须了解约束添加的分类,有两种列级约束表级约束,外键添加时必须采用表级约束,用列级约束添加是没有效果的。

特点一:

要求在从表中添加外键关系,比如上面的学生信息表就是从表,而专业表则是主表

特点二:

从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求,这点应该很容易理解吧,比如人和人才能交流吧,你不能和佩奇侃吧!

特点三:

主表的关联列必须是一个key(一般是主键或唯一),好,咱们来试一下

DROP TABLE IF EXISTS major;
DROP TABLE IF EXISTS stuinfo;
CREATE TABLE IF NOT EXISTS major(
 id INT ,
 majorName VARCHAR(20)
);
CREATE TABLE IF NOT EXISTS stuinfo(
 id INT PRIMARY KEY,
 stuName VARCHAR(20),
 majorId INT,
 CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorId) REFERENCES major(id)
);

上述代码执行后,会报一个错误
在这里插入图片描述
这就是从表学生信息表中专业编号的外键所关联的主表的关联列不是一个键

特点四:

插入数据时,先插入主表,再插入从表,删除数据时,先删除从表,再删除主表,这点也很容易理解吧,那咱们关于外键的特点就先说到这里!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SQL Server中的外键(Foreign Key)是一种约束,用于维护表之间的关系。外键定义了两个表之间的引用关系,其中一个表的列引用另一个表的主键列。外键可以确保数据的完整性和一致性。 具体来说,SQL Server中的外键具有以下特点: 1. 外键是在一个表中定义的,该表称为子表或引用表,而被引用的表称为父表或主表。子表中的外键列与父表中的主键列相关联。 2. 外键列可以包含空值或参照的主键值。当插入或更新外键列时,数据库会检查父表是否存在与之匹配的主键值。 3. 在插入非空值时,如果主键表中没有这个值,则无法插入。这可以确保子表中的外键列始终引用有效的主键。 4. 在更新外键列时,不能将其更改为父表中不存在的值。这样可以确保外键关系的一致性。 5. 在删除主表记录时,可以选择级联删除或拒绝删除与之相关的外键记录。级联删除将同时删除子表中与被删除主表记录相关联的外键记录,而拒绝删除将阻止删除具有相关外键的主表记录。 6. 在更新主表记录时,可以选择级联更新或拒绝执行。级联更新将同时更新子表中与被更新主表记录相关联的外键值,而拒绝执行将阻止更新具有相关外键的主表记录。 总之,SQL Server中的外键提供了一种强制性的约束,用于确保表之间的引用关系的完整性和一致性。通过使用外键,可以避免数据不一致或无效引用的情况发生。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只学弱狗!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值