外键是关系型数据库中一种重要的数据关系表达方式,它能够将不同数据表之间的关联关系通过程序语言实现。外键的存在使得数据库的设计更加灵活和便捷,同时也有助于维护数据表的完整性和一致性。本文将阐述。
一、外键的作用
1. 关联表数据
外键将关联表中的行与所参照的主表中的行进行关联。这样,虽然数据分散在不同的表中,但数据库可以使用外键将这些表关联起来,在某些操作时可以一起处理。
2. 维护数据的完整性
外键保证了关联表中数据的完整性和一致性。如果两个表中有一个外键关系,当在父表中删除一个行时,其对应的子表中的行将被自动删除或者禁止子表中的行成为孤儿行。
3. 支持多对多关系
外键能够实现关系数据库中的多对多关系,实现了数据库中关联关系的灵活性和便捷性。通过在一个表中存储另一个表的主键,使用外键可以在不同的数据表之间建立有效的关联关系。
二、外键的实现方式
外键实现方式主要包括手动添加外键和使用数据库管理系统自动生成外键。
1. 手动添加外键
手动添加外键需要在子表中定义一个外键列,使用外键列去连接父表的主键。具体实现时,需要在父表中创建一个主键或惟一索引,然后在子表中定义一个FOREIGN KEY约束,这个约束连接到父表的主键或等价于主键的惟一索引。
例:
CREATE TABLE 父表
(
父表主键 INT PRIMARY KEY
);
CREATE TABLE 子表
(
子表主键 INT PRIMARY KEY,
父表外键 INT,
FOREIGN KEY(父表外键) REFERENCES 父表(父表主键)
);
2. 使用数据库管理系统自动生成外键
许多数据库管理系统自带外键功能,会自动在子表上创建一个外键列,并自动关联到父表的主键列。这种方法在一定程度上减轻了程序员的工作负担,同时也防止了因程序员失误而导致的错误。
例:
CREATE TABLE 父表
(
父表主键 INT PRIMARY KEY
);
CREATE TABLE 子表
(
子表主键 INT PRIMARY KEY,
父表外键 INT,
FOREIGN KEY(父表外键) REFERENCES 父表(父表主键) ON DELETE CASCADE
);
在这个例子中,在子表创建外键约束时,使用了ON DELETE CASCADE,这意味着当父表中删除一个主键行时,子表中对应的带有外键的行会被自动删除。另外,外键的操作还可以定义为将外键值设为 NULL 或 DEFAULT。
三、常见的外键限制条件
1. ON DELETE [CASCADE | SET NULL | SET DEFAULT]
ON DELETE用于定义当父表中的主键行被删除时发生的动作。CASCADE选项表示当父表中的行被删除时,它们所对应的子表中的行也将被删除。SET NULL选项表示当父表中的行被删除时,它们所对应的子表中的外键列将被设为空。SET DEFAULT选项表示当父表中的行被删除时,它们所对应的子表中的外键列将被设为默认值。
2. ON UPDATE [CASCADE | SET NULL | SET DEFAULT]
ON UPDATE定义了当父表中的主键值被修改时,其对应的子表中的外键列应该如何修改。
3. NOT NULL
NOT NULL 用于指定外键列中的值不能为空。
4. UNIQUE
关联表中的外键列已经是惟一的,可以在创建表时指定外键为惟一的,这样子表中就不会创建一个外键在父表中相关联的行。
外键在关系型数据库中具有重要的作用,方便了不同数据表之间的关联和数据维护。不同的数据库系统可能支持不同的外键实现方式,但外键约束可以保证数据的完整性和一致性,同时也为程序员提供了一种有效的数据表关联方式。
相关问题拓展阅读:
数据库外键怎么设置?
SQL 数据库建表时怎么设置外键,
1> — 创建测试主表. ID 是主键.
2> CREATE TABLE test_main (
3> id INT,
4> value VARCHAR(10),
5> PRIMARY KEY(id)
6> );
7> go
— 建表时设置外键
1> CREATE TABLE test_sub (
2> id INT,
3> main_id INT,
4> value VARCHAR(10),
5> PRIMARY KEY(id),
6> FOREIGN KEY (main_id) REFERENCES test_main
7> );
8> go
sql怎么设置外键
可以在创建表的时候创建,也可以在创建表之后创建。
创建表时创建:
create table student
(id int primary key,
name char(4),
dept char(9)
sex char(4))
create table grade
(id int ,
grade int
constraint id_fk foreign key (id) references student (id)
)
或创建了两表之后再建
alter table grade
add constraint id_fk foreign key (id) references student (id)
呵呵,希望能帮助你。
sql server中图形界面如何设置外键
在那个属性上右键 有约束 自己添加就OK了
mysql怎么设置外键?
ALTER TABLE b ADD CONSTRAINT c FOREIGN KEY(c) REFERENCES a(c) ON DELETE CASCADE ON UPDATE CASCADE; 哎呀。。好像写反了。我写的是把表B的c设置为外键了。。你改一下吧。
如何在数据库的建立表的时候设置表的外键
1> — 创建测试主表. ID 是主键.
2> CREATE TABLE test_main (
3> id INT,
4> value VARCHAR(10),
5> PRIMARY KEY(id)
6> );
7> go
— 建表时设置外键
1> CREATE TABLE test_sub (
2> id INT,
3> main_id INT,
4> value VARCHAR(10),
5> PRIMARY KEY(id),
6> FOREIGN KEY (main_id) REFERENCES test_main
7> );
8> go
sql server 2023 怎么设置外键
建外键的前提是此外键必须是另外一个表的主键。建外键的步骤: 之一步打开要建外辩弯键表的设计器,右击选择“关系”。然后弹出“外裂谈键关系”窗体,我们选择“添加”,然后点击“表和列规范”后面的小按钮,就会弹出另外一个窗体让我们选择主键表和列,选好之后点击确定。然后我们INSERT和UPDATE规范,在更新规则和删除规则有四个选项,分别是“不执行任何操作携源闷”、“级联”、“设置为NULL”、“设置默认值”。默认的不执行任何操作。如果是“不执行任何操作”,当我们删除或更新主键表的数据时,会告诉用户不能执行删除或更新该操作。“级联”的意思是当我们删除或更新主键表的数据时,会删除或更新外键表中所涉及的相关数据的所有行。 “设置Null”的意思是当我们删除或更新主键表的数据时,外键表中的外键列的值会设为Null,但前提是该列允许为空。 “设置默认值”的意思是如果我们将外键列定义了默认值,当我们删除或更新主键表的数据时,外键表中的外键列的值设为定义的默认值。 当然我们可以用代码创建,当我们在创建数据库表T——Card时只要加上一句话就OK啦,“Foreign key (studentNo) references T_Student(studentNo)”。如果我们已经创建了改表,那如何用代码实现了,这也很简单也就一句话“ add constraint CMPKey(外键名) foreign key(studentNo) references T_Student(studentNo)”。
sql中怎样创建外键约束
在创建表之后,添加外键约束:
alter table yuangong add constraint fk foreign key (部门罚) references bumen(部门号)
或者在创建表的时候添加外键
foreign key (部门号) references bumen(部门号)放在最后,用”,”与列分隔
数据库中,一对多的时候外键设置在多的那张表吗?如果一对一的时候,外键应该设置在哪里?多对多的时候,
首先,外键引用的那个列在主表中必须是主键列或者唯一列。
所以1:n的肯定把外键建立在n的那张表上。
1:1,一般要看谁是主表,谁是附属表,外键当然建立在附属表中。
n:m的情况,需要建立一个关系表,两个原表和其关系分别是1:n,1
:m
数据库语句怎么加外键
1,创建表的时候添加:foreign key (你的外键) references (表名)(字段名);
2,创建好之后修改:
alter table dbo.mh_User
add constraint FK_mh_User_…_id foreign key (你的外键) references (表名)(字段名);
Sql server怎样创建主外键关系
在要设置关系的外键表中,右击关系→添加→在表和列规范中选择关联的主表再选择外键表与其关联的字段
数据库同时有主键和外键怎么表
主颂裤键是能确定一条记录的唯一标识野贺简,比如,一条记录包括身份正号,姓名,年龄。 身份证号是唯一能确定你这个人的,其他都可能有重拍派复,所以,身份证号
2. 外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持
关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键
比如
学生表晌野(学号,姓衡铅名,性别,班级)
其中每个学生的学号是唯一的,学号就是一宴拦喊个主键
课程表(课程编号,课程名,学分)
其中课程编号是唯一的,课程编号就是一个主键
成绩表(学号,课程号,成绩)
成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键
数据库外键
所谓外键:如果公钥关系中是主键,然后在公共密钥被称为另一个关系的外键前纯。因此,外键关系代表了两者之间的联系。与另一个表的主键的外键关系被称为主表的外键被称为主表,从表中的表。至于主键:主键被挑出唯一确定的候选键表行。一个表只能有一个主键。可以称为主键与主键。正如我们可以看到:如果名称是B表的主键,表A作为名称或外键。从上述定义表A表B是慧漏咐主表中搜郑,表A表B表,
关于关系型数据库 外键的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。