我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql中的外键有什么用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql中的外键有什么用

本篇内容主要讲解“mysql中的外键有什么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql中的外键有什么用”吧!

在mysql中,外键是用于建立和加强两个表数据之间的链接的一列或多列,它表示一个表中的一个字段被另一个表中的一个字段引用。外键对相关表中的数据造成了限制,使MySQL能够保持参照完整性。

本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。

外键是相对主键而来的。

主键(primary key) 能够唯一标识表中某一行的属性或属性组。一个表只能有一个主键,但可以有多个候选索引。主键常常与外键构成参照完整性约束,防止出现数据不一致。主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。

外键(foreign key) 是用于建立和加强两个表数据之间的链接的一列或多列。外键表示一个表中的一个字段被另一个表中的一个字段引用。外键对相关表中的数据造成了限制,使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将自动生成一个名称。

  • FOREIGN KEY子句指定子表中引用父表中主键列的列。您可以在FOREIGN KEY子句后放置一个外键名称,或者让MySQL为您创建一个名称。 请注意,MySQL会自动创建一个具有foreign_key_name名称的索引。

  • REFERENCES子句指定父表及其子表中列的引用。 在FOREIGN KEYREFERENCES中指定的子表和父表中的列数必须相同。

  • ON DELETE子句允许定义当父表中的记录被删除时,子表的记录怎样执行操作。如果省略ON DELETE子句并删除父表中的记录,则MySQL将拒绝删除子表中相关联的数据。此外,MySQL还提供了一些操作,以便您可以使用其他选项,例如ON DELETE CASCADE,当删除父表中的记录时,MySQL可以删除子表中引用父表中记录的记录。 如果您不希望删除子表中的相关记录,请改用ON DELETE SET NULL操作。当父表中的记录被删除时,MySQL会将子表中的外键列值设置为NULL,条件是子表中的外键列必须接受NULL值。 请注意,如果使用ON DELETE NO ACTIONON DELETE RESTRICT操作,MySQL将拒绝删除。

  • ON UPDATE子句允许指定在父表中的行更新时,子表中的行会怎样执行操作。当父表中的行被更新时,可以省略ON UPDATE子句让MySQL拒绝对子表中的行的任何更新。 ON UPDATE CASCADE操作允许您执行交叉表更新,并且当更新父表中的行时,ON UPDATE SET NULL操作会将子表中行中的值重置为NULL值。 ON UPDATE NO ACTIONUPDATE RESTRICT操作拒绝任何更新。

MySQL创建表外键示例

以下示例创建一个dbdemo数据库和两个表:categoriesproducts。每个类别都有一个或多个产品,每个产品只属于一个类别。 products表中的cat_id字段被定义为具有UPDATE ON CASCADEDELETE ON RESTRICT操作的外键。

CREATE DATABASE IF NOT EXISTS dbdemo;

USE dbdemo;

CREATE TABLE categories(
   cat_id int not null auto_increment primary key,
   cat_name varchar(255) not null,
   cat_description text
) ENGINE=InnoDB;

CREATE TABLE products(
   prd_id int not null auto_increment primary key,
   prd_name varchar(355) not null,
   prd_price decimal,
   cat_id int not null,
   FOREIGN KEY fk_cat(cat_id)
   REFERENCES categories(cat_id)
   ON UPDATE CASCADE
   ON DELETE RESTRICT
)ENGINE=InnoDB;

添加外键

MySQL添加外键语法

要将外键添加到现有表中,请使用ALTER TABLE语句与上述外键定义语法:

ALTER table_name
ADD CONSTRAINT constraint_name
FOREIGN KEY foreign_key_name(columns)
REFERENCES parent_table(columns)
ON DELETE action
ON UPDATE action;

MySQL添加外键示例

现在,我们添加一个名为vendors的新表,并更改products表以包含供应商ID字段:

USE dbdemo;

CREATE TABLE vendors(
    vdr_id int not null auto_increment primary key,
    vdr_name varchar(255)
)ENGINE=InnoDB;

ALTER TABLE products 
ADD COLUMN vdr_id int not null AFTER cat_id;

要在products表中添加外键,请使用以下语句:

ALTER TABLE products
ADD FOREIGN KEY fk_vendor(vdr_id)
REFERENCES vendors(vdr_id)
ON DELETE NO ACTION
ON UPDATE CASCADE;

现在,products表有两个外键,一个是引用categories表,另一个是引用vendors表。

删除MySQL外键

您还可以使用ALTER TABLE语句将外键删除,如下语句:

ALTER TABLE table_name 
DROP FOREIGN KEY constraint_name;

在上面的声明中:

  • 首先,指定要从中删除外键的表名称。

  • 其次,将约束名称放在DROP FOREIGN KEY子句之后。

请注意,constraint_name是在创建或添加外键到表时指定的约束的名称。 如果省略它,MySQL会为您生成约束名称。

要获取生成的表的约束名称,请使用SHOW CREATE TABLE语句,如下所示:

SHOW CREATE TABLE table_name;

例如,要查看products表的外键,请使用以下语句:

SHOW CREATE TABLE products;

以下是语句的输出:

CREATE TABLE products (
  prd_id int(11) NOT NULL AUTO_INCREMENT,
  prd_name varchar(355) NOT NULL,
  prd_price decimal(10,0) DEFAULT NULL,
  cat_id int(11) NOT NULL,
  vdr_id int(11) NOT NULL,
  PRIMARY KEY (prd_id),
  KEY fk_cat (cat_id),
  KEY fk_vendor(vdr_id),

  CONSTRAINT products_ibfk_2 
  FOREIGN KEY (vdr_id) 
  REFERENCES vendors (vdr_id) 
  ON DELETE NO ACTION 
  ON UPDATE CASCADE,

  CONSTRAINT products_ibfk_1 
  FOREIGN KEY (cat_id) 
  REFERENCES categories (cat_id) 
  ON UPDATE CASCADE
) ENGINE=InnoDB;

products表有两个外键约束:products_ibfk_1products_ibfk_2

可以使用以下语句删除products表的外键:

ALTER TABLE products 
DROP FOREIGN KEY products_ibfk_1;

ALTER TABLE products 
DROP FOREIGN KEY products_ibfk_2;

MySQL禁用外键检查

有时,因为某种原因需要禁用外键检查(例如将CSV文件中的数据导入表中)非常有用。 如果不禁用外键检查,则必须以正确的顺序加载数据,即必须首先将数据加载到父表中,然后再将数据加载导入到子表中,这可能是乏味的。 但是,如果禁用外键检查,则可以按任何顺序加载导入数据。

除非禁用外键检查,否则不能删除由外键约束引用的表。删除表时,还会删除为表定义的任何约束。

要禁用外键检查,请使用以下语句:

SET foreign_key_checks = 0;

当然,可以使用以下语句启用它:

SET foreign_key_checks = 1;

到此,相信大家对“mysql中的外键有什么用”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql中的外键有什么用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL中的外键是什么、有什么作用

MySQL外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。使两张表形成关联,外键只能引用外表中列的值! 我们来建两个表 CREATE TABLE `example1` ( `stu_id` int(11) NOT NULL DE
MySQL中的外键是什么、有什么作用
2014-09-04

mysql组合外键有什么用

MySQL组合外键的作用是用于约束多个表之间的关系,确保数据的完整性和一致性。通过组合外键,可以定义多个列外键,来建立表与表之间的关联关系。这样可以保证在插入、更新或删除数据时,相关的表之间的数据始终保持一致。组合外键可以用于多对多关系、一
mysql组合外键有什么用
2023-10-28

什么是MySQL的主键和外键

在MySQL数据库中,主键是用于唯一标识每一行数据的字段,确保表中每一行都具有唯一的标识符。主键字段的值不能为NULL,并且每一行数据都必须具有唯一的主键值。外键是用来建立表与表之间关系的字段,通过外键可以实现表与表之间的数据关联。外键是
什么是MySQL的主键和外键
2024-04-09

mysql中的外键的作用

mysql 中的外键扮演着约束关系和数据维护者的角色,具有三个主要作用:确保表之间的引用完整性,防止因删除或更新表记录而造成数据不一致;通过规则级联强制在表之间执行操作,确保引用完整性和防止出现孤儿记录;使用索引优化查询性能,通过外键快速查
mysql中的外键的作用
2024-05-01

MySQL外键约束的作用是什么

MySQL外键约束的作用是确保在相关表之间的数据完整性和一致性。外键约束定义了一个表中的列或一组列,这些列的值必须匹配另一个表中的主键或唯一键的值。通过使用外键约束,可以实现以下功能:1. 强制引用完整性:外键约束确保引用的表中的值必须存在
2023-08-30

MySQL设置外键的作用是什么

MySQL设置外键的作用是确保数据库之间的关系完整性,保证数据的一致性和有效性。通过外键约束,可以限制某些表的数据只能在另一个表中找到对应的值,防止数据不一致或者无效的情况发生。外键还可以帮助数据库管理系统进行优化查询和提高性能。
MySQL设置外键的作用是什么
2024-03-06

mysql外键能做什么

这篇文章主要介绍了mysql外键能做什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql外键能做什么文章都会有所收获,下面我们一起来看看吧。mysql外键主要用来建立主表与
2022-11-30

mysql外键什么意思

外键是一种数据库关系,用于将一个表中的列与另一个表中的列关联,以确保子表数据与主表一致。在 mysql 中使用 foreign key 约束创建外键,它的好处包括数据完整性、级联操作、查询优化和数据建模。MySQL 外键外键是什么意思?
mysql外键什么意思
2024-06-02

在 MySQL 中使用外键

让我们了解一下如何在MySQL中使用外键 −InnoDB表支持检查外键约束。不需要外键约束来连接两个表。它可以在定义需要使用的列时使用,用于除InnoDB之外的存储引擎。REFERENCES tableName(colName)没有实际效果
2023-10-22

mysql外键是什么意思

mysql外键用于连接两个表,确保子表中的值在父表中存在。创建外键需要使用alter table语句,指定外键列和父表的主键列。外键的作用包括维护数据完整性、级联更新和删除、规范化数据。外键约束包括参照完整性、级联更新和级联删除。外键关系可
mysql外键是什么意思
2024-06-02

什么是SQLServer中的外键

在SQL Server中,外键是用来建立两个表之间关系的一种约束。外键用于确保两个表之间的数据一致性,它指定了一个表中的列(子表)引用另一个表中的列(主表)的值。通过定义外键,可以限制子表中的数据只能包含在主表中已有的值,从而保证数据的完整
什么是SQLServer中的外键
2024-04-09

MySQL中外键和主键的自动连接机制是什么?

MySQL中外键和主键的自动连接机制是通过建立外键约束来实现的。外键约束是一种关系约束,在一个表中的字段与另一个表中的字段建立关联,从而确保数据的一致性和完整性。主键是一个表中唯一标识每一行数据的字段,而外键则是另一个表中的主键,用于建立表
MySQL中外键和主键的自动连接机制是什么?
2024-03-15

mysql禁用外键约束的方法是什么

在MySQL中,可以通过以下方法禁用外键约束:使用ALTER TABLE语句禁用外键约束:ALTER TABLE table_name DISABLE KEYS;这将禁用指定表的所有外键约束。使用SET FOREIGN_KEY_CHEC
2023-10-26

MySQL中的外键(foreign key)

阅读目录 前言一、外键作用及其限制条件1 外键的定义2 外键的作用3 外键创建限制 二、外键创建方法1 创建外键的语法2 举例(1)创建两张表(2)创建外键(3)查看表结构 三、验证外键作用1 先向主表中添加数据
2023-08-25

编程热搜

目录